Docker 全面指南:从入门到维护

Docker 全面指南:从入门到维护

目录

  1. Docker 核心概念
  2. Linux 下 Docker 安装
  3. Docker 基础操作
  4. Docker Compose 管理
  5. Docker 维护与优化
  6. 最佳实践

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

# 添加 Docker 官方仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装 Docker 引擎
sudo yum install -y docker-ce docker-ce-cli containerd.io

# 启动 Docker 服务
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
# 创建 docker 用户组
sudo groupadd docker

# 将当前用户加入 docker 组
sudo usermod -aG docker $USER

# 刷新组权限
newgrp docker

# 验证非 root 权限
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

# 构建镜像(需 Dockerfile)
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
# 下载最新版 Docker Compose
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>

# 限制日志大小(在 docker run 时添加)
--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

# 重建所有 Compose 服务
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 . .

# 使用非 root 用户
RUN useradd -m myuser
USER myuser

# 暴露端口
EXPOSE8000

# 定义启动命令
CMD ["gunicorn", "app:app", "-b", "0.0.0.0:8000"]

6.2 安全建议

  1. 定期更新基础镜像
  2. 使用最小化基础镜像(如 Alpine)
  3. 避免在容器中运行 root 用户
  4. 扫描镜像漏洞:docker scan <image_name>
  5. 限制容器资源:--memory, --cpus

6.3 性能优化

  1. 使用 .dockerignore 文件排除无关文件
  2. 多阶段构建减少镜像大小
  3. 合并 RUN 命令减少镜像层数
  4. 使用特定标签而非 latest
  5. 配置合理的日志轮转策略

提示:本文档内容基于 Docker 最新稳定版(v24.0+),部分命令可能因版本差异略有不同。建议定期查阅 官方文档 获取最新信息。


Docker 全面指南:从入门到维护
http://www.ublanco.com/Docker/
作者
Blanco
发布于
2025年9月1日
许可协议