Ubuntu 24.04 Docker CLI 常用命令与运维指南

详解 Ubuntu 24.04 的 Docker CLI 常用命令与运维,覆盖镜像管理、运行实例生命周期、网络、数据卷、日志监控与安全配置,所有命令与回显均为 Ubuntu 24.04 实测结果

UbuntuUbuntuLinux系统2026/10/07

Ubuntu 24.04 Docker CLI 常用命令与运维指南

目标:详解 Ubuntu 24.04 上 Docker CLI 的镜像管理、运行实例生命周期、网络、数据卷、日志监控命令与运维配置。所有命令与回显均为 Ubuntu 24.04 实测结果。

一、环境信息

  • 操作系统:Ubuntu 24.04.5 LTS(noble)
  • Docker:Docker CE 29.8.2(Server Version 29.8.2,API 1.56)
  • 存储驱动:vfs(模拟/特殊内核环境下配置,真实服务器默认为 overlay2)

二、docker CLI 概览

1. docker version 查看客户端与服务端版本

docker version
Client: Docker Engine - Community
 Version:           29.8.2
 API version:       1.56
 Go version:        go1.26.8
 Git commit:        7fc2dff
 Built:             Wed Sep 30 19:32:28 2026
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          29.8.2
  API version:      1.56 (minimum version 1.40)
  Go version:       go1.26.8
  Git commit:       8af9fe3
  OS/Arch:          linux/amd64
 containerd:
  Version:          v2.3.6
 runc:
  Version:          1.5.1
 docker-init:
  Version:          0.19.0

2. docker info 查看运行环境

docker info
Client: Docker Engine - Community
 Version:    29.8.2
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.37.1
  compose: Docker Compose (Docker Inc.)
    Version:  v5.6.0

Server:
 Containers: 2
  Running: 2
 Images: 3
 Server Version: 29.8.2
 Storage Driver: vfs
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 2
 Kernel Version: 6.8.0-138-generic
 Operating System: Ubuntu 24.04.5 LTS
 OSType: linux
 Docker Root Dir: /var/lib/docker
 Registry Mirrors:
  https://docker.1ms.run/

三、镜像管理(search / pull / images / rmi / tag / save / load / inspect)

1. search 搜索镜像

docker search nginx

⚠️ 实测:国内网络下直连 index.docker.io 被拒,回显为 Error response from daemon: Get "https://index.docker.io/v1/search?q=nginx&n=25": dial tcp ...:443: connect: connection refused。搜索接口走 Docker Hub 官方域名,需代理或可访问该域名的网络环境;拉取镜像不受影响(走镜像加速)。

2. pull 拉取镜像

docker pull alpine
Digest: sha256:294b683cb724975bec92580e1e685676bd4b50bda910ddb8c51d4cabeaec77e6
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

3. images 列出镜像

docker images
IMAGE                ID             DISK USAGE   CONTENT SIZE   EXTRA
alpine:latest        320994c3b997       8.42MB             0B
hello-world:latest   e2ac70e7319a       10.1kB             0B
nginx:latest         57df7715e516        163MB             0B   U
redis:7-alpine       f84b0c467801       39.1MB             0B   U

💡 Docker 29.x 输出新增 DISK USAGE / CONTENT SIZE 列,U 表示镜像当前正被运行实例使用。

4. tag 打标签 / rmi 删除镜像

docker tag alpine ubuntu-test/alpine:demo
docker rmi ubuntu-test/alpine:demo
Untagged: ubuntu-test/alpine:demo

💡 rmi 按标签删除;同一镜像 ID 有多个标签时只移除指定标签。

5. save / load 镜像导出与导入(离线迁移)

docker save alpine -o /tmp/alpine.tar
ls -lh /tmp/alpine.tar
docker load -i /tmp/alpine.tar
-rw------- 1 root root 8.4M Oct  7 06:29 /tmp/alpine.tar
Loaded image: alpine:latest

💡 save 导出为 tar(可压缩为 .tar.gz),load 在目标机器导入,适合离线环境镜像迁移。

6. inspect 查看详情

docker inspect alpine-demo
        "Id": "a3543d16b8bc756a542f55579176987c0c19e3aaf3e9b80279c37e6e04d74723",
        "Image": "sha256:320994c3b997e2ec6433f717f153e108023c5bec8fefa8d76b83451d16d05ea8",
        "Driver": "vfs",
            "NetworkMode": "bridge",
            "RestartPolicy": {

四、运行实例生命周期(run / ps / start / stop / restart / rm / exec / stats)

1. run 创建并运行

docker run -d --name alpine-demo alpine sleep 3600
docker run --rm alpine echo "hello-alpine"
a3543d16b8bc756a542f55579176987c0c19e3aaf3e9b80279c37e6e04d74723
hello-alpine

💡 -d 后台运行;--rm 执行完即自动清理;--name 指定名称。

2. ps 查看运行列表

docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED          STATUS                  PORTS                                 NAMES
a3543d16b8bc   alpine           "sleep 3600"             1 second ago     Up Less than a second                                         alpine-demo
5473ae8f90c9   redis:7-alpine   "docker-entrypoint.s…"   59 seconds ago   Up 56 seconds           6379/tcp                              redis
743fc958f5ba   nginx:latest     "/docker-entrypoint.…"   59 seconds ago   Up 57 seconds           0.0.0.0:80->80/tcp, [::]:80->80/tcp   web

💡 docker ps -a 查看全部(含已停止)。

3. start / stop / restart

docker stop alpine-demo
docker start alpine-demo
docker restart alpine-demo
alpine-demo
alpine-demo
alpine-demo

4. exec 进入运行中的实例执行命令

docker exec alpine-demo uname -r
6.8.0-138-generic

5. stats 实时资源占用

docker stats --no-stream alpine-demo web redis
CONTAINER ID   NAME          CPU %     MEM USAGE / LIMIT   MEM %     NET I/O           BLOCK I/O   PIDS
a3543d16b8bc   alpine-demo   0.00%     0B / 0B             0.00%     736B / 126B       0B / 0B     1
743fc958f5ba   web           0.00%     0B / 0B             0.00%     2.62kB / 1.42kB   0B / 0B     7
5473ae8f90c9   redis         0.57%     0B / 0B             0.00%     1.1kB / 126B      0B / 0B     6

💡 --no-stream 只输出一次;不加则持续刷新(Ctrl+C 退出)。真实服务器上 MEM USAGE 正常显示数值。

6. rm 删除

docker rm -f alpine-demo
alpine-demo

💡 -f 强制删除运行中的实例。

五、网络(network ls / create / inspect / connect)

1. ls 查看网络

docker network ls
NETWORK ID     NAME             DRIVER    SCOPE
bc671aac7a9b   bridge           bridge    local
86a64b06ae00   docker_default   bridge    local
70cceb3305b5   host             host      local
2e765a4f9854   none             null      local

2. create 创建网络

docker network create demo-net
7211f394582b64c8052478dc4b74b2bba9ff628c6c407db43a9a1e773d2beb7c

3. inspect 查看网络详情

docker network inspect demo-net
        "Name": "demo-net",
        "Driver": "bridge",
        "EnableIPv4": true,

4. connect 连接网络

docker network connect demo-net alpine-demo
docker network inspect demo-net
connect-ok

💡 默认创建的 bridge 网络内各实例互通;connect 可让实例加入自定义网络,实现多网络隔离/联通。断开用 docker network disconnect,删除网络用 docker network rm。

六、数据卷(volume ls / create / inspect)

1. ls / create

docker volume ls
docker volume create demo-vol
DRIVER    VOLUME NAME
demo-vol

2. inspect 查看挂载点

docker volume inspect demo-vol
[
    {
        "CreatedAt": "2026-10-07T06:29:53Z",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/demo-vol/_data",
        "Name": "demo-vol",
        "Options": null,
        "Scope": "local"
    }
]

💡 卷数据保存在 /var/lib/docker/volumes/<名称>/_data,删除实例不丢数据。也可以用 -v /宿主机路径:/内路径 做目录绑定挂载(见 Compose 指南)。

七、日志与监控(logs / events / top / stats)

1. logs 查看日志

docker logs --tail 3 web
2026/10/07 06:28:25 [notice] 1#1: start worker process 35
172.19.0.1 - - [07/Oct/2026:06:28:30 +0000] "GET / HTTP/1.1" 200 29 "-" "curl/8.5.0" "-"
172.19.0.1 - - [07/Oct/2026:06:28:30 +0000] "GET / HTTP/1.1" 200 29 "-" "curl/8.5.0" "-"

💡 -f 持续跟踪,--tail N 只看末尾 N 行,--since 按时间过滤。

2. events 事件流

docker events --since 60s --until 5s
2026-10-07T06:29:14.071198981Z image pull alpine:latest (name=alpine)
2026-10-07T06:29:14.178737531Z image tag sha256:320994c3b997e2ec6433f717f153e108023c5bec8fefa8d76b83451d16d05ea8 (name=ubuntu-test/alpine:demo)
2026-10-07T06:29:14.363999090Z image save sha256:320994c3b997e2ec6433f717f153e108023c5bec8fefa8d76b83451d16d05ea8 (name=sha256:320994c3b997e2ec6433f717f153e108023c5bec8fefa8d76b83451d16d05ea8)
2026-10-07T06:29:14.507870695Z image untag sha256:320994c3b997e2ec6433f717f153e108023c5bec8fefa8d76b83451d16d05ea8 (name=sha256:320994c3b997e2ec6433f717f153e108023c5bec8fefa8d76b83451d16d05ea8)
2026-10-07T06:29:14.582484440Z image load sha256:320994c3b997e2ec6433f717f153e108023c5bec8fefa8d76b83451d16d05ea8 (name=sha256:320994c3b997e2ec6433f717f153e108023c5bec8fefa8d76b83451d16d05ea8)

💡 事件流含 pull/tag/save/load/create/start 等全部变更,审计与联动告警常用。

3. top 查看实例内进程

docker top web
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                3464                3439                0                   06:28               ?                   00:00:00            nginx: master process nginx -g daemon off;
101                 3535                3464                0                   06:28               ?                   00:00:00            nginx: worker process

八、系统与安全运维(daemon.json 配置 / 用户组 / systemctl 管理)

1. daemon.json 配置镜像加速

mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<'EOF'
{
  "registry-mirrors": ["https://docker.1ms.run", "https://docker.m.daocloud.io"]
}
EOF

💡 特殊内核环境下 overlay 挂载失败时,在上方 daemon.json 中追加 "storage-driver":"vfs" 并 systemctl restart docker 即可。

2. 当前用户加入 docker 组

usermod -aG docker $USER
newgrp docker

💡 加入后无需 sudo 即可执行 docker 命令;需重新登录或 newgrp docker 生效。

3. systemctl 管理服务

systemctl enable docker
systemctl start docker
systemctl restart docker
systemctl status docker

⚠️ 需要 systemd 的真实服务器(本文在无 systemd 环境中以 nohup dockerd 后台方式验证,命令与真实服务器一致)。

4. 无 systemd 环境手动启动

kill $(cat /var/run/docker.pid) 2>/dev/null; sleep 2
nohup dockerd > /var/log/dockerd.log 2>&1 &
sleep 10
docker info | grep "Server Version"
Server Version: 29.8.2

九、常见问题与真实行为

  1. docker search 连接被拒:搜索接口走 Docker Hub 官方域名(index.docker.io),国内直连不稳定;拉取走镜像加速不受影响。

  2. 拉取镜像失败:配置 daemon.json 镜像加速并 systemctl restart docker 或重启 dockerd 后重试。

  3. overlay 挂载失败:日志报 failed to mount overlay: invalid argument 时配置 "storage-driver":"vfs";真实物理机默认 overlay2。

  4. stats 内存显示 0B:特殊内核环境下 cgroup 内存统计不可用时显示 0B / 0B;真实服务器正常显示。

  5. 端口冲突:docker run -p 80:80 报 port is already allocated 时更换宿主端口。

十、命令与参数速查表

命令作用常用参数
docker version / info版本与环境信息-
docker search / pull / images搜索、拉取、列出镜像pull 后可跟 tag;images -a
docker rmi删除镜像-f 强制
docker tag打标签-
docker save / load导出 / 导入镜像-o 文件 / -i 文件
docker inspect查看镜像或实例详情-
docker run创建并启动-d 后台;--name;--rm;-p 端口;-v 挂载
docker ps查看运行列表-a 全部
docker start / stop / restart启停与重启-
docker rm删除实例-f 强制
docker exec进入执行命令-it 交互
docker stats资源统计--no-stream 单次
docker network ls / create / inspect / connect / disconnect / rm网络管理-d 驱动
docker volume ls / create / inspect / rm数据卷管理-
docker logs查看日志-f 跟踪;--tail N;--since
docker events事件流--since / --until
docker top实例内进程-
Ubuntu 24.04 Docker CLI 常用命令与运维指南 - Quzuo