1. Linux 下 Docker 管理的基础设施与运行时
1.1 Docker 架构与核心组件
要理解 Linux 下的 Docker 管理,首要认识到 Docker 引擎由 Daemon、CLI和 镜像/容器层组成。Daemon 运行在 Linux 上,负责 容器生命周期管理、资源隔离和网络编排。CLI 提供人机交互界面,调用 Daemon 的 API。在生产环境中,systemd 常作为 服务管理器,通过 /etc/docker/daemon.json 进行全局配置。本文的目标是本指南专注于 Linux 下 Docker 管理技巧与常用命令全解析,面向运维的实战指南,帮助运维人员快速定位问题并实现稳定运行。
systemctl status docker
systemctl start docker
systemctl enable docker
在容器/镜像的落地层面,overlay2 等 存储驱动 提供高效写时拷贝,镜像分层 结构决定了拉取和构建的性能。
1.2 Linux 内核与资源隔离的关键点
容器依赖 命名空间 实现进程隔离,以及 cgroups 实现资源配额。理解这一点有助于诊断资源瓶颈,如 CPU、内存、I/O 限制,以及 swap 行为。
# 查看当前 cgroup 信息
cat /proc/cgroups
# 查看 Docker 使用的 Cgroup 路径
docker info | grep -i cgroup
2. 常用命令全解析:日常运维的命令集
2.1 容器与镜像的基础
日常工作中要快速定位问题,docker ps -a、docker inspect、以及 docker logs 是最常用的组合。通过 docker inspect 可获取网络、挂载、环境变量等全量元数据。

docker ps -a
docker inspect
docker logs --since="1h"
2.2 运行新的容器与端口暴露
使用 docker run 来创建并启动容器,常见选项包括 -d、--name、-p、-v,以及 –env。
docker run -d --name web -p 8080:80 nginx:latest
docker run -d --name db -e MYSQL_ROOT_PASSWORD=secret -v mydb:/var/lib/mysql mysql:5.7
2.3 容器的停止、重启与删除
容器的生命周期管理包括 docker stop、docker restart、docker rm。若要强制终止,使用 docker kill。
docker stop web
docker restart web
docker rm web
docker kill web
2.4 镜像的构建、拉取与清理
镜像的管理是日常运维的核心环节。通过 docker pull 拉取镜像、docker build 构建自定义镜像,使用 docker rmi 与 docker image prune 清理无用镜像。
docker pull nginx:latest
docker build -t myapp:1.0 .
docker rmi myapp:1.0
docker image prune
3. 日志、监控与诊断
3.1 日志与日志驱动
日志是运维诊断的第一手资料。Docker 默认使用 json-file 日志驱动,但也可切换为 journald、syslog、fluentd 等。你可以通过 daemon.json 配置全局日志驱动。
# 修改 /etc/docker/daemon.json
{"log-driver": "journald","log-opts": {"tag": "{{.Name}}/{{.ID}}"}
}
3.2 实时监控与性能分析
系统级别监控可以结合 docker stats、docker events 与主机监控工具。此处给出常用监控命令。
docker stats --no-stream
docker events --since '10m' --until 'now'
4. 存储、网络与数据管理
4.1 卷与挂载的实战
数据持久化对运维至关重要,推荐使用 Docker volumes,确保数据不随容器生命周期销毁。创建、挂载、备份都有标准流程。
docker volume create prod_data
docker run -d -v prod_data:/var/lib/postgresql/data postgres:13
4.2 自定义网络与服务发现
使用 bridge、overlay 等网络驱动来实现容器互联。对多主机部署,overlay 网络与 swarm 编排是常用组合。
docker network create --driver bridge br0
docker network ls
5. 部署、编排与自动化
5.1 使用 Docker Compose 进行多容器编排
在开发到运维的桥梁中,docker-compose 已成为常用工具。Compose 文件定义了服务、网络与卷,方便快速部署。
version: '3'
services:web:image: nginx:latestports:- "8080:80"db:image: postgres:13volumes:- prod_data:/var/lib/postgresql/data
volumes:prod_data:
5.2 生产级编排与分布式部署
对于中大型部署,Docker Swarm 提供原生编排能力,适合简单集群管理。也可考虑与 Kubernetes 对比及集成。下面是一个简单的 Swarm 服务创建示例。
docker swarm init
docker service create --name web --publish published=8080,target=80 nginx:latest
6. 运维实战技巧
6.1 资源限制与性能优化
通过容器级别的资源限制,可以避免单个容器抢占主机资源。使用 –memory、–cpus 等参数,结合 cgroup v2 的特性,提升稳定性。
docker run -d --name app --memory="512m" --cpus="0.5" nginx:latest
6.2 清理与维护策略
清理无用资源是日常运维的一部分。通过 docker system prune 可清理未使用的数据;结合 –all 删除未使用的镜像、容器、网络与卷。
docker system prune -a
docker volume prune
7. 高级优化与故障排查
7.1 配置 Daemon 与日志
对生产环境,请将 daemon.json 配置到位,特别是 log-driver、storage-driver、以及 registry-mm 设置。
cat /etc/docker/daemon.json
{"log-driver": "json-file","log-opt": {"max-size": "20m","max-file": "5"},"storage-driver": "overlay2"
}
7.2 故障排查的实战要点
遇到容器无法启动、网络异常或磁盘压力时,优先查看 docker daemon 日志、container 日志、以及主机内核消息。常用诊断工具包括 journalctl、dmesg 与 strace。
journalctl -u docker.service -e
dmesg | tail -n 100
strace -p


