常用

展示所有镜像

1
2
3
4
5
6
ubuntu@VM-0-6-ubuntu:~$ docker images
i Info → U In Use
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
justlikemaki/openclaw-docker-cn-im:latest 0e4e76e48020 9.92GB 2.71GB
openclaw-custom:2026.03.04 11929d3e0258 11GB 2.89GB U
openclaw-custom:latest 11929d3e0258 11GB 2.89GB U

展示所有的容器

1
2
3
ubuntu@VM-0-6-ubuntu:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a8049b706a76 openclaw-custom:latest "/usr/local/bin/init…" 16 hours ago Exited (0) 16 hours ago boring_margulis

展示正在运行的容器

1
2
ubuntu@VM-0-6-ubuntu:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

📦 镜像管理

命令 作用
docker images 查看本地所有镜像
docker pull <镜像名> 从仓库拉取镜像
docker push <镜像名> 推送镜像到仓库
docker build -t <名称> . 根据 Dockerfile 构建镜像
docker tag <源镜像> <目标镜像> 给镜像打标签(重命名)
docker rmi <镜像> 删除镜像
docker image prune 删除未使用的镜像(悬空镜像)
docker image prune -a 删除所有未被容器使用的镜像

🐳 容器管理

命令 作用
docker rm <容器> 删除已停止的容器
docker rm -f <容器> 强制删除容器(包括运行中的)
docker restart <容器> 重启容器
docker rename <旧名> <新名> 重命名容器
docker container prune 删除所有已停止的容器

📊 查看信息

命令 作用
docker inspect <容器/镜像> 查看详细配置信息(JSON 格式)
docker logs -f <容器> 实时跟踪容器日志(类似 tail -f
docker logs --tail 100 <容器> 查看最后 100 行日志
docker stats 实时查看所有容器的资源使用情况(CPU/内存)
docker top <容器> 查看容器内运行的进程
docker port <容器> 查看容器端口映射
docker diff <容器> 查看容器文件系统的变化

📁 文件操作

命令 作用
docker cp <容器>:<路径> <本地路径> 从容器复制文件到本地
docker cp <本地路径> <容器>:<路径> 从本地复制文件到容器

💾 数据卷管理

命令 作用
docker volume ls 查看所有数据卷
docker volume create <名称> 创建数据卷
docker volume rm <名称> 删除数据卷
docker volume prune 删除未使用的数据卷
docker volume inspect <名称> 查看数据卷详情

🌐 网络管理

命令 作用
docker network ls 查看所有网络
docker network create <名称> 创建网络
docker network rm <名称> 删除网络
docker network connect <网络> <容器> 将容器连接到网络
docker network disconnect <网络> <容器> 将容器从网络断开

🧹 清理命令

命令 作用
docker system df 查看 Docker 磁盘使用情况
docker system prune 清理所有未使用的资源(容器、网络、镜像)
docker system prune -a --volumes 深度清理:包括所有未使用镜像和数据卷

🔐 登录相关

命令 作用
docker login 登录 Docker Hub
docker login <仓库地址> 登录私有仓库(如腾讯云 TCR)
docker logout 退出登录

📝 常用组合示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 停止并删除所有容器
docker stop $(docker ps -aq) && docker rm $(docker ps -aq)

# 删除所有 <none> 标签的镜像
docker rmi $(docker images -f "dangling=true" -q)

# 查看某个镜像的构建历史
docker history <镜像名>

# 导出镜像为文件(离线传输用)
docker save -o openclaw.tar openclaw-custom:2026.03.04

# 从文件导入镜像
docker load -i openclaw.tar

# 导出容器为镜像
docker commit <容器> <新镜像名>

💡 实用小技巧

技巧 说明
docker ps -q 只输出容器 ID(便于脚本处理)
docker images -q 只输出镜像 ID
--name <名称> 给容器指定名称,便于管理
-d 后台运行容器(detach 模式)
--restart=always 容器自动重启(开机自启)
--restart=unless-stopped 除非手动停止,否则自动重启

针对您的 OpenClaw 项目,最常用的可能是:

1
2
3
4
5
6
7
8
9
10
11
# 查看 OpenClaw 容器日志
docker logs -f openclaw

# 进入容器调试
docker exec -it openclaw bash

# 查看容器资源占用
docker stats openclaw

# 从容器中复制配置文件出来
docker cp openclaw:/home/node/.openclaw ./backup-openclaw

openClaw 项目容器创建并启动命令:

1
2
3
4
5
6
# 运行容器
docker run --rm -it \
-p 18889:18789 \
-v /tmp/openclaw-test:/home/node/.openclaw \
-e OPENCLAW_GATEWAY_BIND=lan \
openclaw-custom:latest
1
2
3
4
5
6
7
8
9
10
11
12
13
# 旧的
docker run -it \
-p 18889:18789 8888:8888 \
-v /home/ubuntu/docker_config/test1:/root/.openclaw \
openclaw-custom:latest-fix bash

# 新的创建方式
docker run -it \
-p 18889:18789 \
-p 8888:8888 \
-v /home/ubuntu/docker_config/test1:/root/.openclaw \
-e OPENCLAW_GATEWAY_BIND=lan \
openclaw-custom:latest-fix bash

命令解析:

参数 说明
docker run Docker 的基础命令,用于创建并启动一个新容器
--rm 容器退出后自动删除。不加这个参数,容器停止后仍会保留在系统中
-it 两个参数的组合:-i(interactive)保持标准输入开启,-t(tty)分配一个终端,组合起来让你能看到容器的输出并可以用 Ctrl+C 停止
-p 18789:18789 端口映射:宿主机端口:容器端口,把容器内的 18789 端口映射到宿主机的 18789 端口,这样你就能通过 http://localhost:18789 访问容器内的服务
-v /tmp/openclaw-test:/home/node/.openclaw 卷挂载:宿主机目录:容器目录,把宿主机的 /tmp/openclaw-test 目录挂载到容器内的 /home/node/.openclaw,容器内对这个目录的读写会直接反映到宿主机目录
-e OPENCLAW_GATEWAY_BIND=lan 环境变量:在容器内设置环境变量 OPENCLAW_GATEWAY_BIND=lan,让服务监听所有网络接口(0.0.0.0)而不只是 localhost
openclaw-custom:latest 要运行的镜像名称:标签

参数不添加会怎么样?

参数 为什么需要? 不加会怎样?
--rm 自动清理临时容器,避免磁盘空间被无用容器占用 容器停止后仍保留在系统中,需手动执行 docker rm 清理,长期积累会占用大量磁盘空间
-it 提供交互式终端,便于实时查看日志输出、调试问题、用 Ctrl+C 优雅停止 容器在后台静默运行,看不到输出日志,无法通过 Ctrl+C 中断,排查问题困难
-p 18789:18789 将容器内服务端口映射到宿主机,使外部能够访问容器提供的服务 服务仅在容器内部网络可达,宿主机及外部无法通过 http://localhost:18789 访问
-v /tmp/openclaw-test:/home/node/.openclaw 实现数据持久化,配置/日志/结果等数据保存在宿主机,容器重建后数据不丢失 数据写入容器层,容器被删除后数据永久丢失,且难以从宿主机直接编辑配置文件
-e OPENCLAW_GATEWAY_BIND=lan 让服务监听 0.0.0.0(所有网络接口),支持通过宿主机 IP 或端口映射访问 服务默认只监听 127.0.0.1,即使有 -p 映射,宿主机也可能无法访问容器内服务

🔍 小结:这些参数共同确保了容器的 可访问性可调试性数据持久性环境整洁性。根据实际场景可灵活调整,但开发和测试阶段建议保留以上配置。****

-V 挂载

  1. 启动时:宿主机的内容“遮蔽”容器内容
    当容器启动并挂载 -v /tmp/openclaw-test:/home/node/.openclaw 时:
  • 现象:容器内的 /home/node/.openclaw 目录会立即显示宿主机 /tmp/openclaw-test 里的文件。
  • 本质:容器镜像里原本在这个路径下的文件会被临时隐藏(不是删除),容器此时只能看到宿主机目录里的内容。
  1. 运行时:双向实时同步
    容器运行期间:
  • 宿主机修改 → 容器内立即可见。
  • 容器内修改 → 宿主机目录立即保存。
  • 你的理解:“宿主机修改,容器内随之变化” → 正确(其实是双向的,容器改宿主机也会变)。

补充

命令 作用
docker run 创建并启动新容器
docker start <容器> 启动已存在的容器
docker stop <容器> 停止运行中的容器
docker ps 查看运行中的容器
docker ps -a 查看所有容器(包括已停止的)
docker logs <容器> 查看容器日志
docker exec -it <容器> bash 进入运行中的容器