Docker 使用教程

容器化 · Docker · 容器编排

简介

Docker 是一个开源的容器化平台,让开发者可以将应用及其依赖打包成轻量级的容器,实现"构建一次,运行 anywhere"的理念。

Docker 核心概念

  • 镜像 (Image) - 应用的只读模板
  • 容器 (Container) - 镜像的运行实例
  • 仓库 (Registry) - 存储和分发镜像
  • Dockerfile - 定义镜像构建脚本

安装 Docker

Ubuntu / Debian

sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl start docker
sudo systemctl enable docker

验证安装

sudo docker run hello-world

非 root 用户运行 Docker

sudo usermod -aG docker $USER
newgrp docker

镜像操作

搜索镜像

docker search nginx

拉取镜像

docker pull nginx:latest
docker pull ubuntu:22.04

查看本地镜像

docker images
docker image ls

删除镜像

docker rmi nginx:latest
docker image rm ubuntu:22.04

构建镜像

docker build -t myapp:1.0 .

容器管理

创建并启动容器

docker run nginx
docker run -d --name mynginx nginx
docker run -d -p 8080:80 --name web nginx

查看运行中的容器

docker ps
docker ps -a  # 查看所有容器(包括已停止)

停止与启动容器

docker stop mynginx
docker start mynginx
docker restart mynginx

进入容器

docker exec -it mynginx bash
docker exec -it mynginx sh

查看容器日志

docker logs mynginx
docker logs -f mynginx  # 实时跟踪

删除容器

docker rm mynginx
docker rm -f mynginx  # 强制删除运行中的容器

常用参数说明

  • -d - 后台运行
  • -p 8080:80 - 端口映射(主机端口:容器端口)
  • -v /host/path:/container/path - 数据卷挂载
  • --name - 指定容器名称
  • -it - 交互式终端
  • --env - 设置环境变量

Dockerfile 编写

Dockerfile 是用于构建 Docker 镜像的脚本文件。

示例:Node.js 应用

FROM node:18-alpine

WORKDIR /app

COPY package*.json ./
RUN npm install --production

COPY . .

EXPOSE 3000

CMD ["node", "index.js"]

常用指令

  • FROM - 指定基础镜像
  • RUN - 执行命令
  • COPY - 复制文件
  • WORKDIR - 设置工作目录
  • EXPOSE - 声明端口
  • CMD - 容器启动命令
  • ENV - 设置环境变量

构建镜像

docker build -t mynodeapp:1.0 .

优化建议

  • 使用多阶段构建减小镜像体积
  • 合理利用 Docker 缓存层
  • 使用 .dockerignore 排除不需要的文件
  • 尽量使用官方轻量级基础镜像

Docker Compose

Docker Compose 是一个用于定义和管理多容器应用的工具。

安装 Docker Compose

sudo apt install docker-compose-plugin
docker compose version

docker-compose.yml 示例

version: '3.8'

services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    depends_on:
      - api
    networks:
      - app-network

  api:
    build: ./api
    environment:
      - NODE_ENV=production
    networks:
      - app-network

  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: secretpassword
      POSTGRES_DB: myapp
    volumes:
      - db-data:/var/lib/postgresql/data
    networks:
      - app-network

volumes:
  db-data:

networks:
  app-network:
    driver: bridge

常用命令

docker compose up -d        # 启动所有服务
docker compose down          # 停止并删除服务
docker compose ps             # 查看服务状态
docker compose logs -f        # 查看日志
docker compose build          # 构建镜像
docker compose restart        # 重启服务
docker compose exec api ls    # 在服务中执行命令