Docker 全面指南:从入门到维护
目录
- Docker 核心概念
- Linux 下 Docker 安装
- Docker 基础操作
- Docker Compose 管理
- Docker 维护与优化
- 最佳实践
1 Docker 核心概念
1.1 什么是 Docker?
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖打包到轻量级、可移植的容器中,实现”一次构建,到处运行”。
1.2 核心组件
| 组件 |
说明 |
| 镜像(Image) |
只读模板,包含运行应用所需的所有文件和配置 |
| 容器(Container) |
镜像的运行实例,包含运行时环境和应用进程 |
| 仓库(Registry) |
存储和分发镜像的服务(如 Docker Hub) |
| Dockerfile |
文本文件,包含构建镜像的指令 |
| Docker Compose |
用于定义和运行多容器应用的工具 |
1.3 容器 vs 虚拟机
| 特性 |
容器 |
虚拟机 |
| 启动速度 |
秒级 |
分钟级 |
| 资源占用 |
低(共享内核) |
高(完整OS) |
| 隔离性 |
进程级 |
系统级 |
| 镜像大小 |
MB级 |
GB级 |
2 Linux 下 Docker 安装
2.1 系统要求
- CentOS 7/8 或 Ubuntu 18.04+
- 64位架构
- 内核版本 3.10+
2.2 安装步骤(CentOS)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker sudo systemctl enable docker
sudo docker --version
|
2.3 配置非 root 用户使用
1 2 3 4 5 6 7 8 9 10 11
| sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world
|
3 Docker 基础操作
3.1 镜像管理
1 2 3 4 5 6 7 8 9 10 11
| docker pull nginx:latest
docker images
docker build -t myapp:v1 .
docker rmi myapp:v1
|
3.2 容器操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| docker run -d --name my-nginx -p 8080:80 nginx
docker ps
docker ps -a
docker exec -it my-nginx /bin/bash
docker stop my-nginx
docker start my-nginx
docker rm my-nginx
|
3.3 数据管理
1 2 3 4 5 6 7 8
| docker volume create mydata
docker run -d -v mydata:/app/data myapp
docker run -d -v /host/path:/container/path myapp
|
4 Docker Compose 管理
4.1 安装 Docker Compose
1 2 3 4 5 6 7 8
| sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudochmod +x /usr/local/bin/docker-compose
docker-compose --version
|
4.2 Compose 文件示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| version:'3.8' services: web: image:nginx:latest ports: -"8080:80" volumes: -./html:/usr/share/nginx/html networks: -mynet
db: image:postgres:13 environment: POSTGRES_PASSWORD:example volumes: -db-data:/var/lib/postgresql/data networks: -mynet
volumes: db-data:
networks: mynet:
|
4.3 Compose 常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| docker-compose up -d
docker-compose down
docker-compose ps
docker-compose logs -f
docker-compose up -d --build
docker-compose pull
|
5 Docker 维护与优化
5.1 系统清理
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| docker container prune
docker image prune -a
docker network prune
docker volume prune
docker system prune -a --volumes --force
|
5.2 资源监控
1 2 3 4 5 6 7 8
| docker stats
docker inspect <container_id>
docker top <container_id>
|
5.3 日志管理
1 2 3 4 5
| docker logs -f <container_id>
--log-opt max-size=10m --log-opt max-file=3
|
5.4 安全更新
1 2 3 4 5
| docker images | awk 'NR>1 {print $1":"$2}' | xargs -L1 docker pull
docker-compose up -d --force-recreate
|
6 最佳实践
6.1 Dockerfile 优化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN useradd -m myuser USER myuser
EXPOSE8000
CMD ["gunicorn", "app:app", "-b", "0.0.0.0:8000"]
|
6.2 安全建议
- 定期更新基础镜像
- 使用最小化基础镜像(如 Alpine)
- 避免在容器中运行 root 用户
- 扫描镜像漏洞:
docker scan <image_name>
- 限制容器资源:
--memory, --cpus
6.3 性能优化
- 使用
.dockerignore 文件排除无关文件
- 多阶段构建减少镜像大小
- 合并 RUN 命令减少镜像层数
- 使用特定标签而非
latest
- 配置合理的日志轮转策略
提示:本文档内容基于 Docker 最新稳定版(v24.0+),部分命令可能因版本差异略有不同。建议定期查阅 官方文档 获取最新信息。