【通用】Docker 常用命令一页纸速查表(镜像・容器・网络・拷贝)

前言

适用于产品: 幻尔科技全系列产品(树莓派 / Jetson 系列,电脑端 Linux 同样适用)

涉及工具: Docker

幻尔树莓派、Jetson 系列产品(ArmPi Ultra、MentorPi、ROSOrin 等)的视觉、ROS2 例程大多运行在 Docker 容器里,Python、ROS2 和各种依赖库都已提前装好,开箱即用,不用自己一条条配环境。

但 Docker 命令较多:镜像、容器、网络、文件互拷、保存、日志各有一套,新手很容易记混。本帖把日常开发中最高频的命令按使用流程整理成"一页纸",共十组,每条命令都附大白话注释,建议收藏,用到时按目录查即可。

在开始之前,先用大白话解释几个高频名词:

专业名词 大白话解释
镜像(Image) 容器的"安装包 / 模板",相当于一份装好环境的系统快照,例如 `ros:humble`
容器(Container) 用镜像启动起来的"小系统",是真正跑程序的地方;同一个镜像可以开出多个容器
镜像名:标签 镜像的版本号写法,如 `ros:humble` 表示 ROS2 Humble 版本;不写标签默认是 `latest`
容器名 / 容器 ID 容器的两个"名字",命令里填哪个都行:容器名启动时自己起,ID 是系统分配的一串编号
宿主机(Host) 运行 Docker 的那台真机本身,比如树莓派的 Raspberry Pi OS
前台交互运行 启动后直接进入容器黑窗口,退出窗口容器就停止
后台常驻运行 容器在后台一直运行,退出终端也不受影响,日常开发推荐这种方式

一、镜像操作(拉取、查看、删除)

# 拉取镜像(从镜像仓库下载到本地)
docker pull 镜像名:标签

# 示例:拉取 ROS2 Humble 官方镜像
docker pull ros:humble

# 查看本地所有镜像
docker images

# 删除镜像(注意:镜像正被容器使用时无法删除)
docker rmi 镜像ID/镜像名

二、容器创建与运行(重点必记)

1. 前台交互式(退出容器就停止)

docker run -it --name 容器名 镜像名 bash

2. 后台常驻运行(退出终端不关机,推荐)

docker run -d --name 容器名 镜像名 tail -f /dev/null

3. 树莓派 ROS2 专用完整版(带 host 网络 + DNS)

docker run -d --name ArmPiUltra --network=host --dns=114.114.114.114 --dns=8.8.8.8 ros:humble tail -f /dev/null

4. 临时用完自动删除(一次性测试)

docker run -it --rm 镜像名 bash

运行方式 命令特点 适用场景
前台交互式 -it … bash 临时试用环境,退出即停
后台常驻 -d … tail -f /dev/null 日常开发,长期跑 ROS2 例程,推荐
host 网络 + DNS 加 --network=host --dns=… 树莓派 ROS2 整机产品,免配网络、避免解析失败
临时自动删除 -it --rm 一次性测试,退出后自动清理,不留垃圾容器

三、容器查看

# 只看正在运行的容器
docker ps

# 查看所有容器(运行中 + 已停止)
docker ps -a

四、容器启停与重启

docker start 容器名/容器ID      # 启动已停止的容器

docker stop 容器名/容器ID       # 正常停止(给容器发退出信号,稍等几秒)

docker kill 容器名/容器ID       # 强制卡死停止(立即断电式,stop 无效时再用)

docker restart 容器名/容器ID    # 重启容器

功能 命令 说明
启动 docker start 容器名/ID 启动一个已停止的容器
正常停止 docker stop 容器名/ID 优雅退出,推荐日常使用
强制停止 docker kill 容器名/ID 容器卡死、stop 停不掉时使用
重启 docker restart 容器名/ID 相当于 stop + start

五、进入 / 退出容器

# 进入正在运行的容器(开一个交互终端)
docker exec -it 容器名 bash

# 退出容器(后台运行的容器不会因此关闭)
exit

六、容器删除

docker rm 容器名/ID            # 只能删除已停止的容器
docker rm -f 容器名/ID         # 强制删除(运行中的容器也能直接删)
docker container prune         # 一键清理所有已停止的容器

七、网络与信息查看

# 查看所有 docker 网络
docker network ls

# 查看容器详细配置(网络、IP、挂载卷等全部信息)
docker inspect 容器名

# 只查网络模式
docker inspect 容器名 | grep NetworkMode

八、文件互拷(宿主机 ↔ 容器)

# 宿主机文件 拷到 容器里
docker cp 宿主机路径 容器名:/容器路径

# 容器文件 拷到 宿主机
docker cp 容器名:/容器路径 宿主机路径

九、保存容器为镜像(保留所有修改)

在容器里安装了软件、修改了配置,想把当前状态永久保存下来、或者导出到别的机器上使用时,用 commit 把容器打包成新镜像:

docker commit 容器名 新镜像名:标签

十、日志查看

docker logs 容器名             # 查看历史日志
docker logs -f 容器名          # 实时滚动查看日志(按 Ctrl+C 退出查看,不影响容器运行)

附:全命令速查总表

分类 功能 命令
镜像 拉取镜像 docker pull 镜像名:标签
镜像 查看本地镜像 docker images
镜像 删除镜像 docker rmi 镜像ID/镜像名
运行 前台交互运行 docker run -it --name 容器名 镜像名 bash
运行 后台常驻运行 docker run -d --name 容器名 镜像名 tail -f /dev/null
运行 临时运行自动删除 docker run -it --rm 镜像名 bash
查看 查看运行中的容器 docker ps
查看 查看所有容器 docker ps -a
启停 启动 docker start 容器名/ID
启停 正常停止 docker stop 容器名/ID
启停 强制停止 docker kill 容器名/ID
启停 重启 docker restart 容器名/ID
进出 进入容器 docker exec -it 容器名 bash
进出 退出容器 exit
删除 删除已停止容器 docker rm 容器名/ID
删除 强制删除容器 docker rm -f 容器名/ID
清理 清理所有停止容器 docker container prune
网络 查看网络列表 docker network ls
网络 查看容器详细配置 docker inspect 容器名
网络 只查网络模式 docker inspect 容器名
拷贝 宿主机 → 容器 docker cp 宿主机路径 容器名:/容器路径
拷贝 容器 → 宿主机 docker cp 容器名:/容器路径 宿主机路径
保存 容器保存为镜像 docker commit 容器名 新镜像名:标签
日志 查看历史日志 docker logs 容器名
日志 实时滚动日志 docker logs -f 容器名

四、资源下载

可通过以下途径获取:

:globe_with_meridians: 官方在线课程与资料库: 幻尔科技官网在线教程

:speech_balloon: 客服领取: 联系你购买设备的店铺客服(淘宝/京东/天猫客服),提供订单号即可免费领取资料。

:warning: 社区工程师【避坑提示】

  1. docker run 只在创建时执行一次:容器创建好后,后续开关都用 start / stop,不要再重复 run,否则会再开出一个同名报错的新容器。
  2. 前台容器退出即停,别慌:docker run -it 进去后 exit 容器就关闭了,需要长期运行请用 -d 后台方式,再用 docker exec -it 进入。
  3. exec 进入后 exit 不会关闭容器:后台容器用 exec 进入,exit 只是退出当前终端,容器照常运行。
  4. 删除顺序:docker rm 只能删已停止的容器,运行中的容器要先 docker stop,或直接 docker rm -f。
  5. 镜像删不掉先查容器:docker rmi 报镜像被占用时,先 docker ps -a 找到使用它的容器并删除,再删镜像。
  6. 重要代码不要只放在容器里:docker commit 保存的是快照,容器一旦误删无法找回;建议把代码放在挂载 / 共享目录(如 /home/ubuntu/shared)中,再用 docker cp 或共享目录与宿主机互拷备份。