广告

Linux 下 Docker 管理技巧与常用命令全解析:面向运维的实战指南

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 -adocker inspect、以及 docker logs 是最常用的组合。通过 docker inspect 可获取网络、挂载、环境变量等全量元数据。

Linux 下 Docker 管理技巧与常用命令全解析:面向运维的实战指南

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 stopdocker restartdocker rm。若要强制终止,使用 docker kill

docker stop web
docker restart web
docker rm web
docker kill web

2.4 镜像的构建、拉取与清理

镜像的管理是日常运维的核心环节。通过 docker pull 拉取镜像、docker build 构建自定义镜像,使用 docker rmidocker 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 日志驱动,但也可切换为 journaldsyslogfluentd 等。你可以通过 daemon.json 配置全局日志驱动。

# 修改 /etc/docker/daemon.json
{"log-driver": "journald","log-opts": {"tag": "{{.Name}}/{{.ID}}"}
}

3.2 实时监控与性能分析

系统级别监控可以结合 docker statsdocker 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 自定义网络与服务发现

使用 bridgeoverlay 等网络驱动来实现容器互联。对多主机部署,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-driverstorage-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 日志、以及主机内核消息。常用诊断工具包括 journalctldmesgstrace

journalctl -u docker.service -e
dmesg | tail -n 100
strace -p 

广告

操作系统标签