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 # 在服务中执行命令