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