Docker 服务管理命令
覆盖 Docker 守护进程(dockerd)的管理、配置、故障排查。包括 systemd 管理、Docker 全局信息、磁盘清理、事件监控等。
一、系统服务管理(systemd)
服务控制命令
# 启动 Docker 服务
sudo systemctl start docker
# 停止 Docker 服务
sudo systemctl stop docker
# 重启 Docker 服务
sudo systemctl restart docker
# 查看 Docker 服务状态
sudo systemctl status docker
# 开机自启
sudo systemctl enable docker
# 关闭开机自启
sudo systemctl disable docker
# 重新加载 Docker 配置(修改 daemon.json 后)
sudo systemctl daemon-reload
sudo systemctl restart docker
# 查看 Docker 服务日志
sudo journalctl -u docker -f
sudo journalctl -u docker --since "1 hour ago"
服务启动失败排查
# 1. 查看服务状态
sudo systemctl status docker
# 2. 查看详细日志
sudo journalctl -u docker -n 50 --no-pager
# 3. 查看 Docker 守护进程日志
sudo tail -f /var/log/docker.log
# 4. 手动启动 dockerd 查看错误
sudo dockerd --debug
Docker Socket 检查
# 检查 Docker socket 是否存在
ls -la /var/run/docker.sock
# 检查 docker 用户组
cat /etc/group | grep docker
# 将用户加入 docker 组(免 sudo)
sudo usermod -aG docker $USER
newgrp docker # 临时生效,重新登录永久生效
二、Docker 全局信息(docker info)
docker info [OPTIONS]
参数:
| 参数 | 说明 |
|---|---|
-f / --format | 自定义输出格式 |
完整输出解读:
docker info
# 输出示例及关键字段说明:
# Client:
# Context: default
# Debug Mode: false
# Plugins:
# ...
# Server:
# Containers: 12 # 当前管理的容器总数
# Running: 8 # 运行中
# Paused: 0 # 暂停中
# Stopped: 4 # 已停止
# Images: 25 # 本地镜像数量
# Server Version: 24.0.7 # Docker 服务端版本
# Storage Driver: overlay2 # 存储驱动(Ubuntu 默认)
# Backing Filesystem: extfs # 底层文件系统
# Supports d_type: true # 支持 d_type(性能)
# Using metacopy: false
# Logging Driver: json-file # 当前日志驱动
# Cgroup Driver: cgroupfs # Cgroup 驱动
# Cgroup Version: 2 # Cgroup 版本
# Plugins: # 已安装插件
# Volume: local
# Network: bridge host ipvlan macvlan null overlay
# Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
# Swarm: inactive # Swarm 模式状态
# Runtimes: io.containerd.runc.v2 runc
# Default Runtime: runc
# Init Binary: docker-init
# containerd version: xxx
# runc version: xxx
# init version: xxx
# Security Options:
# apparmor # AppArmor 安全模块
# seccomp # Seccomp 安全模块
# Profile: builtin # 默认策略
# Kernel Version: 5.15.0-91-generic
# Operating System: Ubuntu 22.04 LTS
# OSType: linux
# Architecture: x86_64
# CPUs: 8
# Total Memory: 15.52GiB
# Name: ubuntu-server
# ID: 3a2b1c...
# Docker Root Dir: /data/docker # ← 重要:确认数据目录
# Debug Mode: false
# Experimental: false
# Insecure Registries: # 不安全仓库列表
# 127.0.0.0/8
# harbor.example.com
# Live Restore Enabled: true # ← 重启 Docker 不杀容器
# Product License: Community Engine
常用查询:
# 查看 Docker 版本
docker info | grep "Server Version"
# 查看存储驱动
docker info | grep "Storage Driver"
# 查看数据目录
docker info | grep "Docker Root Dir"
# 查看日志驱动
docker info | grep "Logging Driver"
# 查看容器数量
docker info | grep -E "Containers:|Running:|Paused:|Stopped:"
# 查看是否开启 live-restore
docker info | grep "Live Restore Enabled"
# 查看不安全仓库列表
docker info | grep -A 5 "Insecure Registries"
三、docker version — 查看版本
docker version [OPTIONS]
参数:
| 参数 | 说明 |
|---|---|
-f / --format | 自定义输出 |
使用场景:
# 查看完整版本信息
docker version
# 只查看客户端/服务端版本
docker version --format '{{.Server.Version}}'
docker version --format '{{.Client.Version}}'
# 查看 API 版本
docker version --format '{{.Server.APIVersion}}'
四、docker system — 系统管理
docker system df — 磁盘占用统计
docker system df [OPTIONS]
参数:
| 参数 | 说明 |
|---|---|
-v / --verbose | 显示详细信息 |
使用场景:
# 查看磁盘占用概览
docker system df
# 输出示例:
# TYPE TOTAL ACTIVE SIZE RECLAIMABLE
# Images 25 12 2.3GB 1.1GB (47%)
# Containers 12 8 512MB 128MB (25%)
# Local Volumes 5 3 1.2GB 800MB (66%)
# Build Cache 3 0 150MB 150MB (100%)
# 查看详细信息(每项占用明细)
docker system df -v
docker system prune — 清理未使用资源
docker system prune [OPTIONS]
参数:
| 参数 | 说明 |
|---|---|
-a / --all | 删除所有未使用资源(含未被引用的镜像) |
-f / --force | 不提示确认 |
--volumes | 清理未使用的数据卷 |
使用场景:
# 清理暂停/停止的容器、虚悬镜像、未使用网络
docker system prune
# 彻底清理(含未引用镜像)
docker system prune -a
# 清理数据卷(谨慎,可能删除重要数据)
docker system prune --volumes
# 不提示确认
docker system prune -f
# 一键清理(最彻底)
docker system prune -a --volumes -f
docker system events — 查看实时事件
docker system events [OPTIONS]
参数:
| 参数 | 说明 |
|---|---|
--since | 从指定时间起 |
--until | 到指定时间止 |
-f / --filter | 过滤事件 |
使用场景:
# 查看所有实时事件
docker system events
# 监控容器启动/停止事件
docker system events --filter "type=container" --filter "event=start|stop|die"
# 监控镜像操作
docker system events --filter "type=image" --filter "event=push|pull"
# 查看最近 1 小时的事件
docker system events --since 1h
# 监控特定容器
docker system events --filter "container=myapp"
五、Docker 守护进程配置
daemon.json 配置
配置文件:/etc/docker/daemon.json
{
"data-root": "/data/docker",
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "5",
"compress": "true"
},
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries": ["harbor.example.com"],
"live-restore": true,
"no-new-privileges": true,
"storage-driver": "overlay2",
"default-address-pools": [
{
"base": "172.20.0.0/16",
"size": 24
}
],
"dns": ["223.5.5.5", "223.6.6.6"]
}
修改后生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证配置是否生效
docker info | grep "Docker Root Dir"
docker info | grep "Logging Driver"
六、日常运维常用命令
1. 查看 Docker 服务状态
# 服务状态
sudo systemctl status docker
# 进程信息
ps aux | grep dockerd
# 进程号
sudo systemctl show --property MainPID docker
2. 查看 Docker 日志
# Systemd 日志
sudo journalctl -u docker -f
sudo journalctl -u docker --since "1 hour ago"
sudo journalctl -u docker -n 100 --no-pager
# Docker 自身日志(如果配置了文件)
sudo tail -f /var/log/docker.log
3. 磁盘清理
# 清理未使用资源(推荐)
docker system prune
# 清理所有未使用(谨慎)
docker system prune -a
# 清理停止的容器
docker container prune
# 清理未使用的镜像
docker image prune -a
# 清理未使用的数据卷(谨慎)
docker volume prune
# 清理未使用的网络
docker network prune
# 清理构建缓存
docker builder prune
4. 数据目录迁移
# 1. 停止 Docker
sudo systemctl stop docker
# 2. 移动数据
sudo rsync -av /var/lib/docker/ /data/docker/
# 3. 修改 daemon.json
# 添加 "data-root": "/data/docker"
# 4. 启动 Docker
sudo systemctl start docker
# 5. 验证
docker info | grep "Docker Root Dir"
5. 磁盘空间告警处理
# 查看磁盘占用
df -h
docker system df
# 定位大文件
sudo du -sh /var/lib/docker/* | sort -h
sudo du -sh /data/docker/* | sort -h
# 清理策略
# 1. 先执行 docker system prune
# 2. 清理超大日志文件
find /var/lib/docker/containers -name "*-json.log" -size +1G -exec truncate -s 0 {} \;
# 3. 使用 logrotate 管理日志
七、故障排查
1. Docker 服务无法启动
# Step 1: 查看错误日志
sudo journalctl -u docker -n 50 --no-pager
# Step 2: 检查 daemon.json 语法(JSON 格式错误常见)
sudo cat /etc/docker/daemon.json | python3 -m json.tool
# Step 3: 检查数据目录权限
sudo ls -la /data/docker
# Step 4: 检查磁盘空间
df -h
# Step 5: 手动启动查看错误
sudo dockerd --debug
2. 容器无法连接网络
# 检查 Docker 网络
docker network ls
docker network inspect bridge
# 检查 iptables 规则
sudo iptables -L -n
sudo iptables -t nat -L -n
# 检查 IP 转发
sudo sysctl net.ipv4.ip_forward
# 如果为 0,开启:sudo sysctl -w net.ipv4.ip_forward=1
3. 磁盘空间耗尽
# 查看 Docker 数据目录大小
du -sh /data/docker
# 查找大文件
find /data/docker -type f -size +100M -exec ls -lh {} \;
# 清理日志
find /data/docker/containers -name "*-json.log" -exec truncate -s 0 {} \;
# 清理未使用资源
docker system prune -a -f
八、命令速查表
| 操作 | 命令 |
|---|---|
| 启动 Docker 服务 | sudo systemctl start docker |
| 停止 Docker 服务 | sudo systemctl stop docker |
| 重启 Docker 服务 | sudo systemctl restart docker |
| 查看服务状态 | sudo systemctl status docker |
| 开机自启 | sudo systemctl enable docker |
| 查看 Docker 全局信息 | docker info |
| 查看 Docker 版本 | docker version |
| 查看磁盘占用 | docker system df |
| 清理未使用资源 | docker system prune |
| 查看实时事件 | docker system events |
| 查看服务日志 | sudo journalctl -u docker -f |
| 修改配置后重载 | sudo systemctl daemon-reload |
| 手动启动调试 | sudo dockerd --debug |