Skip to content

Docker 操作与命令 ​

构建、拉取与查看镜像 ​

已有镜像先 pull,再 ls 检查;需要从源码构建时看 build。镜像历史与资源清理分开查阅。

docker image pull · 从镜像仓库下载 Docker 镜像 ​

更多信息:https://docs.docker.com/reference/cli/docker/image/pull/。

  • 下载指定的 Docker 镜像:
bash
docker {{[pull|image pull]}} {{镜像}}:{{标签}}
  • 以静默模式下载指定的 Docker 镜像:
bash
docker {{[pull|image pull]}} {{[-q|--quiet]}} {{镜像}}:{{标签}}
  • 下载指定 Docker 镜像的所有标签:
bash
docker {{[pull|image pull]}} {{[-a|--all-tags]}} {{镜像}}
  • 下载指定平台的 Docker 镜像:
bash
docker {{[pull|image pull]}} --platform {{linux/amd64}} {{镜像}}:{{标签}}
  • 显示帮助:
bash
docker {{[pull|image pull]}} --help
  • 从 Docker registry 中拉取镜像:
bash
docker {{[pull|image pull]}} {{镜像}}

docker image ls · 列出 Docker 镜像 ​

更多信息:https://docs.docker.com/reference/cli/docker/image/ls/。

  • 列出所有 Docker 镜像:
bash
docker {{[images|image ls]}}
  • 列出包括中间镜像在内的所有 Docker 镜像:
bash
docker {{[images|image ls]}} {{[-a|--all]}}
  • 以静默模式列出结果(仅显示数字 ID):
bash
docker {{[images|image ls]}} {{[-q|--quiet]}}
  • 列出悬空镜像(dangling=true),而非所有未被容器使用的镜像:
bash
docker {{[images|image ls]}} {{[-f|--filter]}} dangling=true
  • 列出名称中包含指定子字符串的镜像:
bash
docker {{[images|image ls]}} "{{*名称*}}"
  • 按大小对镜像排序:
bash
docker {{[images|image ls]}} --format "{{.ID}}\t{{.Size}}\t{{.Repository}}:{{.Tag}}" | sort {{[-k|--key]}} 2 {{[-h|--human-numeric-sort]}}

docker build · 从 Dockerfile 打包镜像 ​

更多信息:https://docs.docker.com/reference/cli/docker/buildx/build/。

  • 使用当前目录下的 Dockerfile 打包一个 Docker 镜像:
bash
docker build .
  • 从指定 URL 的 Dockerfile 打包 Docker 镜像:
bash
docker build {{github.com/creack/docker-firefox}}
  • 打包一个 Docker 镜像并指定镜像的标签:
bash
docker build {{[-t|--tag]}} {{name:tag}} .
  • 打包一个没有上下文的 Docker 镜像:
bash
docker < {{Dockerfile}} build {{[-t|--tag]}} {{name:tag}} -
  • 打包镜像时不使用缓存:
bash
docker build --no-cache {{[-t|--tag]}} {{name:tag}} .
  • 使用指定的 Dockerfile 打包一个 Docker 镜像:
bash
docker build {{[-f|--file]}} {{Dockerfile}} .
  • 传入自定义变量用于打包:
bash
docker build --build-arg {{HTTP_PROXY=http://192.0.2.10:1234}} --build-arg {{FTP_PROXY=http://40.50.60.5:4567}} .

docker image · 管理 Docker 镜像 ​

另请参阅:docker build, docker image pull, docker image rm。 更多信息:https://docs.docker.com/reference/cli/docker/image/。

  • 列出本地的 Docker 镜像:

参见 docker image ls。

  • 清理未使用的 Docker 镜像:

参见 docker image rm。

  • 展示本地 Docker 镜像的历史:
bash
docker {{[history|image history]}} {{镜像}}
  • 查看 docker image rm 的文档:

参见 docker image rm。

创建容器、启动已有容器与进入容器 ​

run 创建新容器,start 启动已有容器,exec 在运行中的容器执行命令;总入口保留容器列表与启动已有容器的例子。

docker · 管理 Docker 容器和镜像 ​

此命令也有关于其子命令的文件,例如:run。 更多信息:https://docs.docker.com/reference/cli/docker/。

  • 列出所有 Docker 容器(包括停止的容器):
bash
docker {{[ps|container ls]}} {{[-a|--all]}}
  • 透过镜像启动容器,并为容器命名:

参见 docker container run。

  • 启动或停止现有容器:
bash
docker container {{start|stop}} {{容器名称}}
  • 从 Docker registry 中拉取镜像:

参见 docker image pull。

  • 显示已下载的镜像清单:

参见 docker image ls。

  • 从正在运行的容器内打开一个交互式 ([i]nteractive) 终端 ([t]ty) shell (sh):

参见 docker container exec。

  • 删除一个停止的容器:

参见 docker container rm。

  • 获取并查看容器的日志:

参见 docker container logs。

docker container run · 创建一个新的容器并运行命令 ​

更多信息:https://docs.docker.com/reference/cli/docker/container/run/。

  • 使用打上标签的 Docker 镜像的新容器中执行命令:
bash
docker {{[run|container run]}} {{镜像:标签}} {{命令}}
  • 在后台运行新容器中的命令,并输出其容器ID:
bash
docker {{[run|container run]}} {{[-d|--detach]}} {{镜像}} {{命令}}
  • 以交互模式和伪终端启动一个容器,并执行指定的命令:
bash
docker {{[run|container run]}} --rm {{[-it|--interactive --tty]}} {{镜像}} {{命令}}
  • 在新容器中传入环境变量并运行指定命令:
bash
docker {{[run|container run]}} {{[-e|--env]}} '{{变量名}}={{变量值}}' {{[-e|--env]}} {{变量名=变量值}} {{镜像}} {{命令}}
  • 在新容器中挂载目录卷并运行指定命令:
bash
docker {{[run|container run]}} {{[-v|--volume]}} /{{宿主机路径}}:/{{容器内路径}} {{镜像}} {{命令}}
  • 在新容器中开放映射端口并运行指定命令:
bash
docker {{[run|container run]}} {{[-p|--publish]}} {{宿主机端口}}:{{容器内端口}} {{镜像}} {{命令}}
  • 在新容器中覆盖镜像中 ENTRYPOINT 并运行指定命令:
bash
docker {{[run|container run]}} --entrypoint {{命令}} {{镜像}}
  • 在新容器中设定使用需使用的网络并运行指定命令:
bash
docker {{[run|container run]}} --network {{网络}} {{镜像}}
  • 透过镜像启动容器,并为容器命名:
bash
docker {{[run|container run]}} --name {{容器名称}} {{镜像}}

docker container exec · 在一个正在运行的 Docker 容器内部,执行一个命令 ​

更多信息:https://docs.docker.com/reference/cli/docker/container/exec/。

  • 在正在运行的容器内,启动交互式 shell 会话:
bash
docker {{[exec|container exec]}} {{[-it|--interactive --tty]}} {{容器_名称}} {{/bin/bash}}
  • 在一个运行的容器内部,后台(分离)执行一个命令:
bash
docker {{[exec|container exec]}} {{[-d|--detach]}} {{容器_名称}} {{命令}}
  • 指定要运行命令的运行目录:
bash
docker {{[exec|container exec]}} {{[-it|--interactive --tty]}} {{[-w|--workdir]}} {{路径/到/文件夹}} {{容器_名称}} {{命令}}
  • 在现存容器内部,后台执行一个命令,但是保持 stdin 开启:
bash
docker {{[exec|container exec]}} {{[-i|--interactive]}} {{[-d|--detach]}} {{容器_名称}} {{命令}}
  • 在运行中容器的 Bash 内,设置环境变量:
bash
docker {{[exec|container exec]}} {{[-it|--interactive --tty]}} {{[-e|--env]}} {{变量_名称}}={{值}} {{容器_名称}} {{/bin/bash}}
  • 作为特定用户执行命令:
bash
docker {{[exec|container exec]}} {{[-u|--user]}} {{用户名}} {{容器_名称}} {{命令}}
  • 从正在运行的容器内打开一个交互式 ([i]nteractive) 终端 ([t]ty) shell (sh):
bash
docker {{[exec|container exec]}} {{[-it|--interactive --tty]}} {{容器名称}} {{sh}}

查看日志、退出状态与底层配置 ​

先读 logs;需要核对镜像、退出码或完整对象配置时看 inspect。

docker container logs · 显示容器的日志 ​

更多信息:https://docs.docker.com/reference/cli/docker/container/logs/。

  • 显示一个容器的日志:
bash
docker {{[logs|container logs]}} {{容器_名称}}
  • 显示历史日志,然后跟踪容器日志:
bash
docker {{[logs|container logs]}} {{容器_名称}} {{[-f|--follow]}}
  • 显示最后 5 行日志:
bash
docker {{[logs|container logs]}} {{容器_名称}} {{[-n|--tail]}} 5
  • 显示带有时间戳的日志:
bash
docker {{[logs|container logs]}} {{容器_名称}} {{[-t|--timestamps]}}
  • 展示容器运行过程中,截至某个时间点之前的日志(也就是,23m、10s、2013-01-02T13:23:37):
bash
docker {{[logs|container logs]}} {{容器_名称}} --until {{时间点}}

docker-inspect · 查看容器、镜像或其他 Docker 对象的底层信息。输出可能含环境变量等敏感配置,分享前先检查 ​

  • 查看容器的完整 JSON 信息:
bash
docker inspect {{container}}
  • 明确按容器类型查询,避免与同名其他对象混淆:
bash
docker inspect --type=container {{container}}
  • 只查看容器使用的镜像名称:
bash
docker inspect --format '{{.Config.Image}}' {{container}}
  • 查看最近退出状态和错误信息:
bash
docker inspect --format '{{.State.ExitCode}} {{.State.Error}}' {{container}}

编排、启动与停止多容器服务 ​

先确定 Compose 项目和配置文件,再 up 启动;临时停止用 stop,移除资源用 down。

docker compose · 运行并管理多个 Docker 容器应用 ​

更多信息:https://docs.docker.com/reference/cli/docker/compose/。

  • 列出所有正在运行的容器:
bash
docker compose ps
  • 创建并启动服务,以及启动前重新构建:

参见 docker compose up。

  • 指定一个项目名称和特定 compose 文件,启动所有容器:
bash
docker compose {{[-p|--project-name]}} {{项目_名称}} {{[-f|--file]}} {{路径/到/文件}} up
  • 停止所有运行中的容器:

参见 docker compose stop。

  • 停止,然后移除对应所有的容器、网络、镜像文件和文件卷:
bash
docker compose down --rmi all {{[-v|--volumes]}}
  • 跟踪所有容器的日志:
bash
docker compose logs {{[-f|--follow]}}
  • 跟踪特定容器的日志:
bash
docker compose logs {{[-f|--follow]}} {{容器_名称}}

docker compose up · 启动并运行 Compose 文件中定义的 Docker 服务 ​

更多信息:https://docs.docker.com/reference/cli/docker/compose/up/。

  • 启动 docker-compose 文件中定义的所有服务:
bash
docker compose up
  • 在后台启动服务(分离模式):
bash
docker compose up {{[-d|--detach]}}
  • 启动服务前重新构建镜像:
bash
docker compose up --build
  • 仅启动指定服务:
bash
docker compose up {{服务1 服务2 ...}}
  • 使用自定义 compose 文件启动服务:
bash
docker compose {{[-f|--file]}} {{路径/到/配置文件}} up
  • 启动服务并删除孤立容器:
bash
docker compose up --remove-orphans
  • 启动服务并指定实例数量:
bash
docker compose up --scale {{服务}}={{数量}}
  • 启动服务并在日志中显示时间戳:
bash
docker compose up --timestamps

docker compose stop · 停止正在运行的容器,但不移除它们 ​

更多信息:https://docs.docker.com/reference/cli/docker/compose/stop。

  • 停止所有正在运行的服务:
bash
docker compose stop
  • 停止指定服务:
bash
docker compose stop {{服务1 服务2 ...}}
  • 使用以秒为单位的自定义关闭超时停止服务:
bash
docker compose stop {{[-t|--timeout]}} {{秒数}}
  • 停止指定 Compose 文件中定义的服务:
bash
docker compose {{[-f|--file]}} {{路径/到/配置文件}} stop
  • 模拟运行(显示操作但不执行):
bash
docker compose stop --dry-run
  • 使用自定义超时停止指定服务:
bash
docker compose stop {{[-t|--timeout]}} {{秒数}} {{服务1 服务2 ...}}

docker compose down · 停止并移除由 docker compose up 创建的容器、网络、镜像和卷 ​

更多信息:https://docs.docker.com/reference/cli/docker/compose/down/。

  • 停止并移除所有容器和网络:
bash
docker compose down
  • 停止并移除容器、网络以及服务使用的所有镜像:
bash
docker compose down --rmi all
  • 停止并移除容器、网络以及没有自定义标签的镜像:
bash
docker compose down --rmi local
  • 停止并移除容器、网络和所有卷:
bash
docker compose down {{[-v|--volumes]}}
  • 停止并移除所有资源,包括孤立容器:
bash
docker compose down --remove-orphans
  • 使用另一个 Compose 文件停止并移除容器:
bash
docker compose {{[-f|--file]}} {{路径/到/配置文件}} down
  • 使用以秒为单位的自定义超时停止并移除容器:
bash
docker compose down {{[-t|--timeout]}} {{秒数}}
  • 移除 Compose 文件中未定义的服务所对应的容器:
bash
docker compose down --remove-orphans {{[-v|--volumes]}}

导出与导入镜像归档 ​

镜像归档按 save→load 成对使用。

docker image save · 将 Docker 镜像导出到归档文件 ​

更多信息:https://docs.docker.com/reference/cli/docker/image/save/。

  • 通过将 stdout 重定向到 .tar 归档文件来保存镜像:
bash
docker {{[save|image save]}} {{镜像}}:{{标签}} > {{路径/到/文件.tar}}
  • 将镜像保存到 .tar 归档文件:
bash
docker {{[save|image save]}} {{[-o|--output]}} {{路径/到/文件.tar}} {{镜像}}:{{标签}}
  • 保存镜像的所有标签:
bash
docker {{[save|image save]}} {{[-o|--output]}} {{路径/到/文件.tar}} {{镜像名称}}
  • 选择镜像的特定标签进行保存:
bash
docker {{[save|image save]}} {{[-o|--output]}} {{路径/到/文件.tar}} {{镜像名称:标签1 镜像名称:标签2 ...}}

docker image load · 从文件或 stdin 加载 Docker 镜像 ​

更多信息:https://docs.docker.com/reference/cli/docker/image/load/。

  • 从 stdin 加载 Docker 镜像:
bash
docker < {{路径/到/镜像文件.tar}} {{[load|image load]}}
  • 从指定文件加载 Docker 镜像:
bash
docker {{[load|image load]}} {{[-i|--input]}} {{路径/到/镜像文件.tar}}
  • 以静默模式从指定文件加载 Docker 镜像:
bash
docker {{[load|image load]}} {{[-q|--quiet]}} {{[-i|--input]}} {{路径/到/镜像文件.tar}}

停止容器、移除容器与清理镜像 ​

先停止再移除容器,随后按需移除镜像或清理未使用镜像。

docker container stop · 停止一个或多个正在运行的容器 ​

更多信息:https://docs.docker.com/reference/cli/docker/container/stop/。

  • 停止一个 Docker 容器:
bash
docker {{[stop|container stop]}} {{容器}}
  • 停止容器,并向其发送指定信号:
bash
docker {{[stop|container stop]}} {{[-s|--signal]}} {{信号}} {{容器}}
  • 停止容器,并在强制终止前等待指定秒数:
bash
docker {{[stop|container stop]}} {{[-t|--timeout]}} {{秒数}} {{容器}}
  • 停止一个或多个容器:
bash
docker {{[stop|container stop]}} {{容器1 容器2 ...}}
  • 显示帮助:
bash
docker {{[stop|container stop]}} --help

docker container rm · 移除容器 ​

更多信息:https://docs.docker.com/reference/cli/docker/container/rm/。

  • 移除容器:
bash
docker {{[rm|container rm]}} {{容器1 容器2 ...}}
  • 强制移除容器:
bash
docker {{[rm|container rm]}} {{[-f|--force]}} {{容器1 容器2 ...}}
  • 移除容器以及其文件卷:
bash
docker {{[rm|container rm]}} {{[-v|--volumes]}} {{容器}}
  • 显示帮助:
bash
docker {{[rm|container rm]}} --help

docker image rm · 移除 Docker 镜像 ​

更多信息:https://docs.docker.com/reference/cli/docker/image/rm/。

  • 根据名称移除一个或多个镜像:
bash
docker {{[rmi|image rm]}} {{镜像1 镜像2 ...}}
  • 强制移除镜像:
bash
docker {{[rmi|image rm]}} {{[-f|--force]}} {{镜像}}
  • 移除镜像但不删除未标记的父镜像:
bash
docker {{[rmi|image rm]}} --no-prune {{镜像}}
  • 显示帮助:
bash
docker {{[rmi|image rm]}} --help
  • 删除未使用的 Docker 镜像:
bash
docker image prune
  • 删除全部的未使用镜像(而不仅仅是那些没有打上标签的镜像):
bash
docker image prune {{[-a|--all]}}

示例整理自 tldr-pages,作者为 tldr-pages team and contributors,遵循 CC BY 4.0。

继续阅读