【Docker】初识docker 基本概念及安装使用(巨详细版)-CSDN博客
【Docker】初识docker 基本概念及安装使用(巨详细版),网络安全零基础入门到精通实战教程!-CSDN博客
Docker安装
初始准备
40分钟的Docker实战攻略,一期视频精通Docker_哔哩哔哩_bilibili
在 Windows 上安装 Docker - Training | Microsoft Learn
https://blog.csdn.net/m0_51453764/article/details/151715177
tech-shrimp/docker_installer: Docker官方安装包,用来解决因国内网络无法安装使用Docker的问题
windows 11系统下的安装和使用。
键盘按win键,搜索**"启用或关闭Windows功能"** ,点击**"打开"**。

勾选**"Hyper-V"** 、"适用Linux的Windows 子系统"和"虚拟机平台"。windows 11家庭版没看到hyper-v,有的是没写勾选这个。

如果没有hyper-v可以参考下面的链接。
【解决方法】Win11家庭版启用或关闭Windows功能中没有hyper-v? - 知乎
复制以下代码保存为hyper-v.bat后以管理员身份运行。
bash
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
键盘按win键后搜索cmd,以管理员身份运行。

运行下面两条命令,如果没下载会自己下载。
bash
wsl --set-default-version 2
wsl --update --web-download

Docker Desktop Installer.exe下载与安装
下载Docker Desktop Installer,大部分是amd64版。
Releases · tech-shrimp/docker_installer
Docker 桌面:开发者用的 #1 容器化工具 |Docker
windows软件ARM64和AMD64(x64)区别,如何查看电脑支持哪种_amd64和arm64-CSDN博客
可以通过win+R,输入cmd打开命令提示符窗口,输入下面的命令。
bash
echo %PROCESSOR_ARCHITECTURE%



下载安装包后直接双击安装,指定安装目录可以运行下面这条命令(以管理员身份打开命令行并确认Docker Desktop Installer.exe文件在当前目录)。
bash
start /w "" "Docker Desktop Installer.exe" install --installation-dir=D:\Docker
Docker Desktop中文设置
如果想将界面设置成中文可以参考下面的博客,替换前先关闭Docker Desktop,防止出错我们还需要备份app.asar文件,之后把下载后的文件修改成这个名字进行替换,文件夹默认是"C:\Program Files\Docker \Docker\frontend\resources",如果是指定安装目录安装的需要找到自己对应的目录,我的是"D:\Docker\frontend\resources"。
Docker desktop中文设置_docker desktop设置中文-CSDN博客

配置镜像站
打开docker desktop后点击右上角的设置,然后点击Docker 引擎,添加下面这段。
tech-shrimp/docker_installer: Docker官方安装包,用来解决因国内网络无法安装使用Docker的问题
bash
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1panel.live",
"https://hub.rat.dev"
]

镜像管理
| 命令 | 说明 |
|---|---|
docker pull |
从仓库拉取镜像 |
docker images |
列出本地所有镜像 |
docker build |
根据 Dockerfile 构建镜像 |
docker rmi |
删除本地镜像 |
docker tag |
为镜像打标签 |
docker save |
将镜像保存为压缩包 |
docker load |
从压缩包载入镜像 |
从仓库拉取镜像(docker pull)
bash
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
pull |
必需 | 表示执行"拉取"操作的核心命令。 |
| [OPTIONS] | 可选 | 选项 ,用于调整拉取行为。常用选项有: - --platform:指定镜像平台(如 linux/amd64, linux/arm64) - --all-tags / -a:拉取仓库中所有标签的镜像(谨慎使用,数据量大) |
| NAME | 必需 | 镜像名称 。由 [仓库地址/]用户名/仓库名 组成。 示例 : - ubuntu:官方镜像(等价于 docker.io/library/ubuntu) - nginx:官方镜像 - bitnami/nginx:第三方 (bitnami) 用户的 nginx 镜像 - registry.example.com/myapp:私有仓库镜像 |
| [:TAG] | 可选 | 镜像标签 ,用于指定版本。默认值为 :latest。 示例 : - ubuntu:20.04 - python:3.11-slim - nginx:1.25-alpine |
| [@DIGEST] | 可选 | 镜像摘要 。一个基于内容的唯一哈希值,用于精确锁定镜像 ,确保内容绝对一致。 示例 : ubuntu@sha256:c95a8e4... |
示例
docker pull ubuntu:20.04
下载一个打包好的Ubuntu 20.04系统文件包(镜像)到电脑,以便用Docker快速创建基于此系统的独立运行环境(容器)。
ubuntu是镜像名称,20.04是标签,指定下载镜像的版本,如果没有默认是**:latest**,表示该仓库维护者标记为"最新"的版本。
列出本地存储的docker镜像(docker images)
bash
docker images [OPTIONS] [REPOSITORY[:TAG]]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
images |
必需 | 核心命令。也可以用其等价的 image ls。 |
| [OPTIONS] | 可选 | 选项,用于过滤和格式化输出。常用选项见下方表格。 |
| [REPOSITORY[:TAG]] | 可选 | 过滤器 。指定后,仅列出与该仓库名(和可选标签)匹配的镜像。 示例 : docker images ubuntu 或 docker images nginx:latest |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--all |
-a |
显示所有镜像 ,包括中间层镜像(无标签的镜像)。 docker images -a |
--quiet |
-q |
仅显示镜像ID 。适用于脚本处理。 docker images -q |
--digests |
显示镜像摘要 。 docker images --digests |
|
--filter |
-f |
根据条件过滤 。非常强大。 docker images -f "dangling=true"(悬空镜像) docker images -f "label=maintainer=ZJUNLP"(按标签过滤) docker images -f "since=ubuntu:20.04"(在某个镜像之后创建) docker images -f "before=zjunlp/deepke:latest"(在某个镜像之前创建) |
--format |
使用Go模板格式化输出 。 docker images --format "table {``{.ID}}\t{``{.Repository}}\t{``{.Tag}}" docker images --format "{``{.Repository}}:{``{.Tag}}"(仅显示名称) |
|
--no-trunc |
不截断输出 ,显示完整的镜像ID等信息。 docker images --no-trunc |
列出本地所有镜像
docker images 或者docker image ls。
| 列名 | 对应标准命令中的列 | 具体含义与说明 |
|---|---|---|
| IMAGE | REPOSITORY:TAG | 镜像的名称和标签。 |
| ID | IMAGE ID | 镜像的唯一标识(短ID)。 |
| DISK USAGE | (计算得出) | 该镜像在磁盘上的总占用空间 。这是最关键的数字,代表如果删除该镜像,实际能释放的空间。 |
| CONTENT SIZE | (部分对应SIZE) | 该镜像独有的、不可共享的数据大小。多个镜像共享的层不重复计算在此内。 |
| EXTRA | (状态标记) | 额外的状态标记。"U" 表示该镜像目前正在被至少一个容器使用 (In Use)。 |

根据Dockerfile构建镜像(docker build)
bash
docker build [OPTIONS] PATH | URL | -
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
build |
必需 | 核心命令,表示执行"构建"操作。 |
| [OPTIONS] | 可选 | 构建选项 ,用于控制构建过程。最常用的是 -t。 |
| PATH | URL | - | 必需 | 构建上下文(Build Context)的路径 。 • PATH :本地目录路径 (最常用)。通常是包含 Dockerfile 的目录,用 . 表示当前目录。 • URL :Git 仓库地址等。 • -:通过标准输入(stdin)传递 Dockerfile。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--tag |
-t |
为构建的镜像指定名称和标签 。格式为 -t 名称:标签。可多次使用。 docker build -t myapp:latest -t myapp:v1 . |
--file |
-f |
指定 Dockerfile 的路径 (如果不在上下文根目录或名称不是Dockerfile)。 docker build -f ./docker/Dockerfile.prod . |
--build-arg |
设置构建时的环境变量 ,可在 Dockerfile 的 ARG 指令中使用。 docker build --build-arg NODE_ENV=production . |
|
--no-cache |
禁用缓存 ,强制从头开始构建所有层。 docker build --no-cache . |
|
--pull |
总是尝试拉取基础镜像的最新版本 ,即使本地已存在。 docker build --pull . |
|
--target |
多阶段构建时,指定构建目标阶段 。 docker build --target builder . |
|
--progress |
设置输出进度显示的格式 (auto, plain, tty)。 docker build --progress=plain .(输出更详细) |
|
--quiet |
-q |
安静模式 ,成功后只输出镜像ID。 docker build -q . |
--network |
设置构建过程中容器的网络模式 。 docker build --network=host . |
Dockerfile文件(按功能分类)
基础与构建过程指令
定义镜像的"地基"和"施工步骤"。
| 指令 | 格式与示例 | 作用与说明 |
|---|---|---|
FROM |
FROM <基础镜像>[:标签] FROM python:3.9-slim |
指定基础镜像 。必须是第一条有效指令(ARG除外)。 |
WORKDIR |
WORKDIR <容器内路径> WORKDIR /app |
设置工作目录 。后续的 RUN, CMD, COPY 等指令都会在此目录下执行。如果目录不存在则会自动创建。相当于 cd 和 mkdir 的结合。 |
COPY |
COPY <源路径>... <目标路径> COPY . . COPY requirements.txt ./ |
从构建上下文复制文件/目录到镜像内 。源路径是相对于构建上下文的;目标路径可以是绝对路径,或相对于 WORKDIR 的相对路径。 |
ADD |
ADD <源>... <目标路径> ADD package.tar.gz /app/ |
增强版 COPY 。除了复制,还支持: 1. 解压压缩包(如 .tar, .gz)到目标路径。 2. 从 URL 下载文件(但不推荐,下载的层无法被缓存)。 最佳实践:仅在需要自动解压时使用,否则一律用 COPY。 |
RUN |
1. Shell格式 :RUN <命令> RUN pip install -r requirements.txt 2. Exec格式 :RUN ["可执行文件", "参数1", "参数2"] |
在构建过程中执行命令 。每一条 RUN 指令都会创建一个新的镜像层。通常用于安装软件包、编译程序等。使用 && 连接多个命令,并用 \ 换行,可以减少镜像层数并清理缓存。 |
ARG |
ARG <变量名>[=<默认值>] ARG VERSION=latest FROM ubuntu:${VERSION} |
定义构建时的环境变量 。仅在 docker build 过程中有效,使用 --build-arg <变量名>=<值> 传递。在最终运行的镜像中不可用。 |
运行配置与元信息指令
定义容器运行时的行为和属性。
| 指令 | 格式与示例 | 作用与说明 |
|---|---|---|
ENV |
ENV <key> <value> ENV <key1>=<value1> <key2>=<value2> ENV NODE_ENV=production |
设置容器内的环境变量 。在构建过程和容器运行时都有效。可以被 docker run --env 覆盖。 |
EXPOSE |
EXPOSE <端口> [<端口>/<协议>...] EXPOSE 80/tcp EXPOSE 8080 |
声明容器运行时监听的端口 。这只是一个文档化的提示,便于他人了解。实际的端口映射需要在 docker run 时通过 -p 参数发布。 |
VOLUME |
VOLUME ["/data"] VOLUME /var/log |
定义匿名数据卷挂载点 。任何向该路径写入的数据都不会进入容器层,而是直接写入宿主机,从而实现数据持久化。最佳实践是在运行时通过 -v 显式挂载。 |
USER |
USER <用户名>[:<用户组>] USER appuser |
指定后续指令(以及容器运行时)以哪个用户身份执行 。为了安全,应避免使用 root 用户。通常先通过 RUN 创建用户和组。 |
HEALTHCHECK |
HEALTHCHECK [选项] CMD <命令> HEALTHCHECK --interval=30s CMD curl -f http://localhost/ |
定义检查容器健康状态的命令。Docker 会定期执行该命令,根据退出状态判断容器健康度。 |
容器启动指令
定义容器启动时的默认行为。
| 指令 | 格式与示例 | 作用与说明 |
|---|---|---|
CMD |
1. Exec格式(推荐) :CMD ["可执行文件", "参数1", "参数2"] CMD ["python", "app.py"] 2. Shell格式 :CMD 命令 参数1 参数2 3. 参数列表格式 :CMD ["参数1", "参数2"](为 ENTRYPOINT 提供默认参数) |
提供容器启动时的默认执行命令 。一个 Dockerfile 中只能有一条 CMD,如果有多条则仅最后一条生效。CMD 的主要目的是为容器提供默认的执行项。docker run 后面如果指定了其他命令,会覆盖 CMD 的内容。 |
ENTRYPOINT |
Exec格式(推荐) :ENTRYPOINT ["可执行文件", "参数1", "参数2"] ENTRYPOINT ["top", "-b"] |
设置容器启动时的主程序 。ENTRYPOINT 不会被 docker run 后面的命令覆盖,而是将 docker run 后面的所有参数当作参数传递给 ENTRYPOINT 指令指定的程序。 |
CMD 与 ENTRYPOINT 协作 |
组合使用:ENTRYPOINT 定义固定主程序,CMD 定义默认参数。 ENTRYPOINT ["top", "-b"] CMD ["-c"] |
两者协同工作模式 : 1. 如果 docker run 指定了参数,如 docker run myimage -i,则实际执行 top -b -i。 2. 如果 docker run 未指定参数,则使用 CMD 的默认参数 -c,实际执行 top -b -c。 简记 :ENTRYPOINT 定义"做什么",CMD 定义"怎么做(默认)"。 |
示例
40分钟的Docker实战攻略,一期视频精通Docker_哔哩哔哩_bilibili
使用 VS Code创建项目,安装Docker插件,项目中包含Dockerfile,main.py,requirements.txt三个文件。

Dockerfile(注意没有后缀名)
| 指令 | 解释 |
| FROM python:3.13-slim | 指定基础镜像 。以官方 python:3.13-slim 镜像为模板开始构建。slim 版本比完整版更轻量,去除了不常用工具,但包含了运行 Python 应用的核心环境。 |
| WORKDIR /app | 设置工作目录 。在容器内创建并切换到 /app 目录。后续的 COPY、RUN、CMD 等指令都将默认在此目录下执行。 |
| COPY . . | 复制文件 。将宿主机当前目录 (构建上下文)下的所有文件(除了 .dockerignore 中声明的),复制到容器内的当前工作目录 (即 /app)下。 |
| RUN pip install -r requirements.txt | 安装依赖 。在容器内执行命令,读取 /app 目录下的 requirements.txt 文件,并使用 pip 安装其中列出的所有 Python 包。 |
| EXPOSE 8000 | 声明端口 。这是一个文档性声明 ,说明容器内的应用程序预期 会监听 8000 端口。它本身并不发布端口 ,实际端口映射需要在运行容器时通过 -p 参数(如 -p 8000:8000)设置。 |
CMD [ "python3", "main.py" ] |
设置容器启动命令 。当容器启动时,默认执行 python3 main.py。此命令必须在工作目录 /app 下存在 main.py 文件才能正常运行。 |
|---|
bash
FROM python:3.13-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
EXPOSE 8000
CMD [ "python3","main.py" ]
python
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
if __name__ =="__main__":
uvicorn.run(app,host="0.0.0.0",port=8000)
requirements.txt
bash
fastapi
uvicorn
如果是python环境可以通过命令导出依赖清单。
pip环境
生成当前环境下所有包的精确版本。
bash
pip freeze > requirements.txt
扫描项目实际import的库。
bash
pipreqs /path/to/your/project --encoding=utf8
conda
bash
conda list --export > environment.yml
pipenv
bash
Pipfile.lock
需要确保构建镜像前项目可以运行。
构建镜像,镜像命名为docker_test,最后的'.'代表当前目录。Docker会将此目录下的所有文件打包发给守护进程并默认在此路径下寻找名为Dockerfile的文件。
bash
docker build -t docker_test .

删除本地镜像(docker rmi)
删除一个或多个本地Docker镜像
bash
docker rmi [OPTIONS] IMAGE [IMAGE...]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
rmi |
必需 | 核心命令,表示执行"删除镜像"操作。 |
| [OPTIONS] | 可选 | 删除选项 ,用于调整删除行为。最常用的是 -f。 |
| IMAGE [IMAGE...] | 必需 | 要删除的镜像。可以指定一个或多个,用空格分隔。 |
核心选项
| 选项 | 简写 | 作用与说明 |
|---|---|---|
--force |
-f |
强制删除 。即使有容器正在使用此镜像(即使容器已停止),也强制删除镜像。慎用,可能影响依赖此镜像的容器。 |
--no-prune |
不删除未标记的父层。默认情况下,删除镜像时会一并删除其未被其他镜像依赖的父层(悬空镜像)。此选项可保留它们。 |
自动批量清理未被使用的 Docker 镜像
bash
docker image prune [OPTIONS]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
image prune |
必需 | 核心命令。prune 意为"修剪",专门用于清理未被引用的资源。 |
| [OPTIONS] | 可选 | 清理选项,用于控制清理的范围和行为。 |
核心选项
| 选项 | 简写 | 作用与说明 |
|---|---|---|
--all |
-a |
删除所有未被容器使用的镜像 ,而不仅仅是悬空镜像。这是一个危险但彻底的清理选项,会删除所有没有被任何容器(无论运行中或已停止)引用的镜像。 |
--force |
-f |
强制清理,不显示确认提示。在脚本或自动化任务中使用。 |
--filter |
使用条件过滤要清理的镜像。例如,可以按创建时间过滤。 | |
--dry-run |
"试运行" 。不执行实际删除,仅显示哪些镜像会被清理。这是一个非常安全的检查方式。 |
悬空镜像是看是否没有被任何最终镜像(即带名称和标签的镜像)所依赖,可以通过执行下面这条命令来判断当前是否有悬空镜像。
bash
docker image ls -f dangling=true

常见报错
| 错误类型 | 典型错误信息 | 核心原因 | 解决步骤 |
|---|---|---|---|
| 镜像被容器使用 | Error: conflict: unable to remove... cannot be forced... is being used by running container... |
有正在运行的容器基于此镜像。 | 1. 停止容器:docker stop <容器ID> 2. 删除容器:docker rm <容器ID> 3. 再删镜像:docker rmi <镜像> |
| 镜像被容器引用 | Error response from daemon: conflict: unable to delete... is being used by stopped container... |
有已停止的容器基于此镜像。 | 1. 删除容器:docker rm <容器ID> 2. 再删镜像:docker rmi <镜像> |
| 镜像被其他镜像依赖 | Error: conflict: unable to delete... (must be forced) - image is referenced in multiple repositories |
该镜像是其他本地镜像的父层(基础镜像)。 | 谨慎操作 : 1. 先删除依赖它的所有镜像。 2. 或强制删除:docker rmi -f <镜像>(可能导致依赖镜像损坏)。 |
| 镜像不存在 | Error: No such image: <镜像名> |
镜像名称/标签错误,或镜像已被删除。 | 1. 检查拼写:docker images 2. 使用镜像ID删除。 |
| 需要强制删除 | Error: conflict: unable to delete... (cannot be forced...) |
存在更严格的依赖(如被运行中容器使用),仅 -f 无效。 |
必须按顺序:先处理容器(见错误1),再删镜像。 |
示例
docker rmi ubuntu:20.04
删除本地名为ubuntu:20.04的镜像,下面的输出表示镜像存在且没有任何容器或其他镜像依赖。
为镜像打标签(docker tag)
为本地已存在的镜像创建一个新的标签(别名或引用), 不是重命名,而是为同一镜像内容添加一个额外的名称标识**(给一个镜像ID贴上一个新的名字,之后两个不同名称但是镜像ID完全相同,指向同一份数据)。**
bash
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
tag |
必需 | 核心命令,表示执行"打标签"操作。 |
SOURCE_IMAGE[:TAG] |
必需 | 源镜像 。必须是已存在于本地的镜像,可以通过"镜像名:标签"或"镜像ID"指定。 |
TARGET_IMAGE[:TAG] |
必需 | 目标镜像 。这是你要为源镜像创建的新名称和/或新标签。 |
示例
docker tag hello-world:latest love:5.20
为hello-world:latest镜像创建一个名为 love:5.20的新标签。
docker rmi love:5.20通过这条命令删除love:5.20这个标签。
将镜像保存为压缩包(docker save)
bash
docker save [OPTIONS] IMAGE [IMAGE...]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
save |
必需 | 核心命令,表示执行"保存"操作。 |
| [OPTIONS] | 可选 | 保存选项,主要用于指定输出文件。 |
| IMAGE [IMAGE...] | 必需 | 要保存的镜像。可以指定一个或多个(用空格分隔),可以是"镜像名:标签"或"镜像ID"。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--output |
-o |
将归档文件输出到指定路径 ,而不是默认的标准输出(stdout)。这是最常用、最直观的方式。 |
| (无简写) | 不使用 -o 选项 。归档内容将直接输出到标准输出 。通常需要配合重定向符 > 来写入文件,或者通过管道传递给其他命令(如 gzip)。 |
示例
docker save -o ubuntu_20.04.tar ubuntu:20.04
文件默认保存在执行该命令的当前工作目录下,后面也可以接多个镜像(空格分隔)通过镜像名:标签或者镜像ID的形式打包到一起。
从压缩包载入镜像(docker load)
bash
docker load [OPTIONS]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
load |
必需 | 核心命令,表示执行"加载"操作。 |
| [OPTIONS] | 可选 | 加载选项,主要用于指定输入文件。 |
| (输入数据流) | 必需 | 包含镜像数据的归档文件。通常来自文件或标准输入。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--input |
-i |
从指定的归档文件中加载镜像。这是最常用、最直观的方式。 |
--quiet |
-q |
安静模式,加载过程中仅显示镜像摘要,不输出每一层的详情。 |
| (无选项) | 从标准输入读取数据 。通常配合重定向符 < 或管道 ` |
示例
docker load -i ubuntu_20.04.tar
将ubuntu_20.04.tar文件中的所有镜像加载到本地。
也可以使用重定向。
docker load < ubuntu_20.04.tar
容器生命周期管理
| 命令 | 说明 |
|---|---|
docker run |
创建并启动新容器 |
docker ps |
列出容器 |
docker start/stop |
启动 / 停止已有容器 |
docker restart |
重启容器 |
docker rm |
删除已停止的容器 |
docker exec |
在运行中的容器内执行命令 |
docker logs |
查看容器日志 |
创建并启动新容器(docker run)
bash
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker run |
必需 | 核心命令,表示"运行"一个容器。 |
| [OPTIONS] | (通常需要) | 配置容器的选项 。用于设置网络、存储、资源限制等。这是命令最复杂的部分。 |
IMAGE[:TAG] |
必需 | 要基于哪个镜像创建容器 。例如 ubuntu:20.04, nginx:latest。 |
| [COMMAND] | 可选 | 容器启动后执行的命令 ,会覆盖 镜像 Dockerfile 中定义的 CMD。 |
| [ARG...] | 可选 | 传递给 COMMAND 的参数。 |
核心选项
| 分类 | 选项 | 简写 | 作用与示例 |
|---|---|---|---|
| 运行模式 | --detach |
-d |
后台运行 。容器启动后返回容器ID,不阻塞终端。docker run -d nginx |
--interactive --tty |
-it |
交互模式 。分配一个伪终端,通常与 /bin/bash 结合进入容器。docker run -it ubuntu /bin/bash |
|
--rm |
退出后自动删除 。用于一次性测试,避免留下停止的容器。docker run --rm alpine echo hello |
||
| 命名与重启 | --name |
为容器指定名称 ,便于后续管理。docker run --name my_nginx nginx |
|
--restart |
设置重启策略 。常用 always(总是重启)、unless-stopped(除非手动停止)。docker run -d --restart always nginx |
||
| 网络与端口 | --publish |
-p |
端口映射 。格式:主机端口:容器端口。核心选项 。docker run -p 8080:80 nginx |
--network |
指定容器网络 。如 bridge(默认)、host(主机网络)、none(无网络)。 |
||
| 存储与挂载 | --volume |
-v |
挂载数据卷或目录 。用于持久化数据或同步代码。-v /宿主机路径:/容器路径。docker run -v /data:/app/data nginx |
| 环境配置 | --env |
-e |
设置容器内环境变量 。docker run -e MY_VAR=value app |
| 资源限制 | --memory |
-m |
限制容器内存 。docker run -m 512m app |
--cpus |
限制CPU使用量 。docker run --cpus=1.5 app |
-v 和 --mount
| 选项 | 含义 | 历史 | 语法特点 | 示例 |
|---|---|---|---|---|
-v 或 --volume |
传统方式挂载卷或绑定挂载 | Docker 早期版本 | 简洁但不够明确 | -v 源:目标:选项 |
--mount |
现代方式挂载卷或绑定挂载 | Docker 17.06+ | 结构化,更明确 | --mount type=...,source=...,target=... |
示例
接**Dockerfile的示例,**创建并启动一个新容器,-d参数表示后台运行模式,容器启动后,命令行立即返回并显示一个容器ID,而不会将容器的输出打印到当前终端,-p参数表示端口映射,<宿主机端口>:<容器内端口>,docker_test表示要使用的镜像名称。
bash
docker run -d -p 8000:8000 docker_test

访问localhost:8000打印{"Hello":"World"}。

列出容器(docker ps)
bash
docker ps [OPTIONS]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
ps |
必需 | 核心命令。ps 借鉴自 Linux 的进程查看命令,表示"Process Status"。 |
| [OPTIONS] | 可选 | 列表选项,用于过滤、格式化输出和显示更多信息。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--all |
-a |
显示所有容器 ,包括已停止的容器。这是最常用的选项之一,用于查看完整的容器历史。 |
--quiet |
-q |
仅显示容器ID(安静模式)。适用于脚本处理或与其他命令(如停止、删除)组合使用。 |
--latest |
-l |
显示最近创建的容器(无论状态是运行还是停止)。 |
--size |
-s |
显示容器占用的总文件大小 (在 SIZE 列)。 |
--filter |
-f |
根据条件过滤显示。功能非常强大,见下方示例。 |
--format |
使用 Go 模板格式化输出,自定义要显示的列。 | |
--no-trunc |
不截断输出,显示完整的容器ID和命令信息。 |
输出表头
| 列名 | 含义 | 说明与示例 |
|---|---|---|
| CONTAINER ID | 容器的唯一标识符 | 完整ID的缩写(如 a1b2c3d4),足以在大多数命令中标识该容器。 |
| IMAGE | 创建该容器所使用的镜像。 | ubuntu:20.04, nginx:latest。 |
| COMMAND | 容器启动时执行的命令。 | "/docker-entrypoint...", "python main.py"。 |
| CREATED | 容器的创建时间。 | 2 hours ago, 5 days ago。 |
| STATUS | 容器的状态,最关键的信息。 | Up 5 minutes(运行中),Exited (0) 2 days ago(已停止)。 |
| PORTS | 容器的端口映射信息。 | 0.0.0.0:8080->80/tcp 表示将主机的8080端口映射到了容器的80端口。 |
| NAMES | 容器的名称。 | 由 --name 指定或系统自动生成的随机名称(如 pedantic_bohr)。 |
示例
docker ps
查看正在运行的容器
字段 你的输出 解释 CONTAINER ID 51673604330e此容器的唯一短ID。执行针对此容器的命令(如 docker stop,docker logs)时,使用前几位(如516736)通常就足够了。IMAGE docker_test此容器是基于你之前构建的 docker_test:latest镜像创建的。COMMAND "python3 main.py"容器启动时执行的命令。这和 Dockerfile 中的 CMD ["python3", "main.py"]完全一致。CREATED About an hour ago容器创建于大约1小时前。 STATUS Up About an hour最关键信息 :容器正在运行,并且已持续运行了约1小时。这表明你的应用启动成功。 PORTS 0.0.0.0:8000->8000/tcp核心配置 :成功进行了端口映射。你主机的所有网络接口( 0.0.0.0)的 8000端口 已被映射到容器内的 8000端口 。你现在可以通过http://localhost:8000访问该容器内的应用。NAMES trusting_rubinDocker 为容器自动生成的随机名称(因为你运行 docker run时没有使用--name参数指定)。这个名字足够友好,可以用来替代容器ID进行操作。
docker ps和docker images的区别
docker images理解成查看"软件安装包",docker ps理解成查看"正在运行的程序"。
镜像是制作蛋糕的模具和食谱。
容器是实际制作出来的一个个蛋糕。
| 对比维度 | docker images (或 docker image ls) |
docker ps (或 docker container ls) |
|---|---|---|
| 管理对象 | 镜像 | 容器 |
| 概念本质 | 只读的模板 或安装包 | 镜像的运行时实例(基于镜像创建的进程) |
| 生命周期 | 存在本地,可被多个容器使用。删除需用 docker rmi。 |
可被启动、停止、删除。删除需用 docker rm。 |
| 可读写性 | 只读 | 可写(在容器层修改文件) |
| 数据存储 | 存储在 Docker 数据目录(如 /var/lib/docker) |
运行时数据在容器层,停止后数据可保留(除非容器被删除) |
| 主要用途 | 查看本地有哪些可用的"环境"或"软件包"。 | 查看当前有哪些"程序"在运行或存在。 |
启动/停止已有容器(docker start/stop)
启动容器
bash
docker start [OPTIONS] CONTAINER [CONTAINER...]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
start |
必需 | 核心命令,表示执行"启动"操作。 |
| [OPTIONS] | 可选 | 启动选项,用于控制启动时的附加行为。 |
| CONTAINER | 必需 | 要启动的容器,可以是容器ID或容器名称。可以同时指定多个,用空格分隔。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--attach |
-a |
附加模式 :启动容器并附加(连接)到其标准输出和标准错误流,可以实时看到容器启动时输出的日志。这对于调试容器启动过程非常有用。 |
--interactive |
-i |
交互模式 :通常与 -a 一同使用,以附加到容器的标准输入(STDIN)。 |
--detach-keys |
覆盖用于从容器分离(detach)的键序列(默认是 CTRL-p CTRL-q)。 |
停止容器
bash
docker stop [OPTIONS] CONTAINER [CONTAINER...]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
stop |
必需 | 核心命令,表示执行"停止"操作。 |
| [OPTIONS] | 可选 | 停止选项,用于控制停止过程。 |
| CONTAINER | 必需 | 要停止的容器,可以是容器ID或容器名称。可以同时指定多个,用空格分隔。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--time |
-t |
停止超时时间 。向容器内进程发送 SIGTERM 信号后,等待多少秒(默认10秒 )让其进行优雅关闭。超时后,Docker 将发送 SIGKILL 信号强制终止容器。 |
示例
docker stop trusting_rubin
通过容器名称停止容器(也可以通过容器ID,短ID:516736),这里不是docker_test(之前运行的镜像名),而是trusting_rurbin(因为docker run时没有通过--name指定容器名称,所以这是docker容器自动生成的随机名称,可以替代容器ID进行操作)。
docker ps
列出容器。
docker start trusting_rubin
通过容器名称启动。
重启容器(docker restart)
bash
docker restart [OPTIONS] CONTAINER [CONTAINER...]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
restart |
必需 | 核心命令,表示执行"重启"操作。 |
| [OPTIONS] | 可选 | 重启选项,主要用于控制停止阶段的超时时间。 |
| CONTAINER | 必需 | 要重启的容器,可以是容器ID或容器名称。可以同时指定多个,用空格分隔。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--time |
-t |
停止超时时间 。在重启过程的停止阶段,向容器内进程发送 SIGTERM 信号后,等待多少秒(默认10秒 )让其进行优雅关闭。超时后,Docker 将发送 SIGKILL 信号强制终止容器。 |
示例
重启本质上是依次执行docker stop和docker start的组合。
docker restart trusting_rubin
通过容器名称重启
docker restart 516736
通过容器ID重启
删除已停止的容器(docker rm)
bash
docker rm [OPTIONS] CONTAINER [CONTAINER...]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
rm |
必需 | 核心命令,表示执行"删除容器"操作。 |
| [OPTIONS] | 可选 | 删除选项,主要用于强制删除。 |
| CONTAINER | 必需 | 要删除的容器,可以是容器ID或容器名称。可以同时指定多个,用空格分隔。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--force |
-f |
强制删除 。即使容器正在运行(Up状态),也强制停止并删除 它。慎用。 |
--volumes |
-v |
同时删除与容器关联的匿名数据卷。这是防止产生"悬空数据卷"的好习惯。 |
docker stop和docker rm的区别
| 对比维度 | docker stop (停止) |
docker rm (删除) |
|---|---|---|
| 核心作用 | 停止 一个或多个正在运行的容器,使其进入"已停止"状态。 | 删除 一个或多个已停止(或强制删除运行中)的容器,将其从系统中移除。 |
| 对象状态 | 操作对象必须是正在运行 (Up 状态)的容器。 |
默认操作对象是已停止 (Exited 状态)的容器;使用 -f 可删除运行中的容器。 |
| 数据与状态 | 保留。容器的所有文件系统更改、配置都保留在本地,可以随时重新启动。 | 永久丢失 。容器的可写层被销毁,所有未通过卷(-v)持久化的数据将永久丢失。 |
| 可恢复性 | 可恢复 。使用 docker start 可以重新启动它,一切如常。 |
不可恢复 。删除后,这个特定的容器实例就消失了。如需相同服务,必须基于镜像创建一个全新的容器。 |
| 磁盘空间 | 不释放。容器及其数据仍然占用磁盘空间。 | 释放。删除容器会释放其可写层占用的磁盘空间。 |
| 常用选项 | -t:设置优雅停止的等待超时时间。 |
-f:强制删除运行中的容器。 -v:同时删除关联的匿名数据卷。 |
| 类比 | 就像关闭电脑。电脑(容器)关了,但硬盘(数据)里的东西都在,下次还能开机。 | 就像把电脑格式化了扔掉。电脑(容器)没了,里面没备份的数据(可写层)也一起没了。 |
示例
使用docker stop trusting_rubin 后可以通过docker start trusting_rubin启动。
docker rm trusting_rubin
没有停止容器进行删除将出现Error response from daemon: cannot remove container "trusting_rubin": container is running: stop the container before removing or force remove
强制删除docker rm -f trusting_rubin
docker stop trusting_rubin/docker start trusting_rubin再启动就会出现Error response from daemon: No such container: trusting_rubin
在运行中的容器内执行命令(docker exec)
bash
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker exec |
必需 | 核心命令。 |
| [OPTIONS] | (通常需要) | 执行选项,控制如何与命令交互。 |
CONTAINER |
必需 | 目标容器 (名称或ID),容器必须处于 Up(运行中) 状态。 |
COMMAND |
必需 | 要在容器内执行的命令 ,如 /bin/bash, python, ls。 |
| [ARG...] | 可选 | 传递给命令的参数。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--interactive |
-i |
保持标准输入打开 ,允许你向容器内的命令发送输入。通常与 -t 联用。 |
--tty |
-t |
分配一个伪终端 ,让命令的输出格式友好,并可支持如 top 这样的交互式程序。 |
--detach |
-d |
在后台运行命令,不阻塞当前终端。适用于启动后台任务。 |
--user |
-u |
指定用户名或UID 执行命令,例如 -u root 以root身份运行。 |
--env |
-e |
设置环境变量,仅对本次执行的命令有效。 |
--workdir |
-w |
指定命令的工作目录。 |
常见四种使用模式
| 模式 | 命令示例 | 适用场景 |
|---|---|---|
| 交互式终端(最常用) | docker exec -it <容器名> /bin/bash |
进入容器内部,像使用SSH一样进行交互式操作(浏览文件、安装软件、调试)。 |
| 执行单条命令 | docker exec <容器名> ls -la |
快速查看容器状态,不进入交互模式,执行完即返回结果。 |
| 启动后台任务 | docker exec -d <容器名> python script.py |
在容器内启动一个守护进程或后台任务。 |
| 以特定用户执行 | docker exec -it -u root <容器名> /bin/bash |
当需要更高权限操作时,切换用户身份。 |
查看容器日志(docker logs)
bash
docker logs [OPTIONS] CONTAINER
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
logs |
必需 | 核心命令。 |
| [OPTIONS] | 可选 | 日志选项,用于控制输出的内容、格式和时间范围。 |
CONTAINER |
必需 | 目标容器 的名称或ID。容器可以是正在运行 或已停止状态。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--follow |
-f |
实时跟踪(Follow)日志输出 。类似于 tail -f 命令,会持续打印新的日志,直到您按下 Ctrl+C。这是动态调试的利器。 |
--tail |
仅显示最后N行日志 。--tail=10 显示最后10行;--tail=0 不显示历史,只等待新日志(需配合 -f)。--tail all 显示全部。 |
|
--timestamps |
-t |
为每一行日志添加时间戳 。格式为 YYYY-MM-DDTHH:MM:SS.MMMMMMMZ,便于分析事件顺序。 |
--since |
显示从某个时间点开始的日志 。时间可以是相对时间(如 10m 表示10分钟内)或绝对时间戳。--since 2024-01-01 |
|
--until |
显示到某个时间点为止的日志 。与 --since 配合可以划定时间窗口。 |
|
--details |
显示提供给日志的额外详细信息。 | |
| (无) | 不附加任何选项 :默认显示容器的全部历史日志(从启动到当前或停止时刻)。 |
容器运维与信息查看
| 命令 | 说明 |
|---|---|
docker inspect |
查看容器/镜像的详细配置信息 |
docker cp |
在宿主机和容器间复制文件 |
docker stats |
实时查看容器资源占用(CPU、内存) |
docker top |
查看容器内运行的进程 |
查看容器/镜像的详细配置信息(docker inspect)
bash
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
inspect |
必需 | 核心命令。 |
| [OPTIONS] | 可选 | 查看选项,主要用于控制输出的格式和范围。 |
| NAME|ID | 必需 | 一个或多个 Docker 对象的名称或ID。可以是容器、镜像、网络、卷、任务等。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--format |
-f |
使用 Go 模板格式化输出 。这是最核心、最实用的选项,可以精确提取你关心的字段,而不是面对整个 JSON。 |
--type |
指定要检查的对象类型 。当名称可能歧义时使用,如 container, image, network。默认会自行推断。 |
|
--size |
-s |
显示容器总文件大小 (仅对容器有效)。会多返回一个 SizeRw 和 SizeRootFs 字段。 |
核心字段
容器(Container)
| 字段类别 | 字段路径 (用于 -f 模板) |
说明与示例值 |
|---|---|---|
| 基本信息 | .Id |
容器的完整ID。 |
.Name |
容器名称(带 / 前缀)。 |
|
.State.Status |
运行状态 :running, exited, paused。 |
|
.State.StartedAt |
容器启动时间(UTC)。 | |
.State.FinishedAt |
容器结束时间(如果已停止)。 | |
.Created |
容器的创建时间。 | |
| 配置信息 | .Config.Image |
创建此容器所使用的镜像。 |
.Config.Cmd |
容器启动时执行的命令。 | |
.Config.Env |
设置的环境变量列表。 | |
.Hostname |
容器的主机名。 | |
| 网络信息 | .NetworkSettings.IPAddress |
容器在默认网络(bridge)中的IP地址。 |
.NetworkSettings.Ports |
端口映射 信息(在 docker ps 中看到的)。 |
|
.NetworkSettings.Networks |
容器加入的所有网络的详细配置(包括IP、网关等)。 | |
| 存储信息 | .Mounts |
挂载的卷列表,包含源(宿主机路径)和目标(容器内路径)。 |
.Config.WorkingDir |
容器内的工作目录。 | |
| 资源与日志 | .HostConfig.Memory |
内存限制(字节)。 |
.HostConfig.NanoCpus |
CPU限制(10^9 核)。 | |
.LogPath |
容器日志文件的宿主机路径。 |
镜像(Image)
| 字段类别 | 字段路径 (用于 -f 模板) |
说明与示例值 |
|---|---|---|
| 基本信息 | .Id / .RepoDigests |
镜像的唯一标识(ID 或 摘要)。 |
.RepoTags |
镜像的标签列表,如 ["myapp:latest"]。 |
|
.Created |
镜像的构建时间(UTC)。 | |
.Size |
镜像的虚拟大小(字节)。 | |
.Architecture |
架构,如 amd64。 |
|
.Os |
操作系统,如 linux。 |
|
| 配置信息 | .Config.Image |
父镜像的ID。 |
.Config.Cmd |
默认启动命令。 | |
.Config.Env |
默认环境变量。 | |
.Config.WorkingDir |
默认工作目录。 | |
.Config.Labels |
镜像的标签(Metadata)。 | |
| 构建信息 | .RootFS.Layers |
镜像的所有层ID,这是理解镜像分层的关键。 |
.Comment |
构建注释。 |
网络(Network)
字段路径 (用于 -f 模板) |
说明与示例值 |
|---|---|
.Name |
网络名称。 |
.Id |
网络ID。 |
.Driver |
网络驱动:bridge, host, overlay。 |
.IPAM.Config |
IP地址管理配置(子网、网关)。 |
.Containers |
连接到该网络的容器列表及其IP地址。 |
.Options |
网络特定选项。 |
数据卷(Volume)
字段路径 (用于 -f 模板) |
说明与示例值 |
|---|---|
.Name |
卷的名称。 |
.Driver |
存储驱动:local。 |
.Mountpoint |
卷数据在宿主机上的实际存储路径。 |
.Labels |
卷的标签。 |
.UsageData.RefCount |
引用该卷的容器数量。 |
示例
docker inspect -f "镜像ID: {{.Id}} 创建时间: {{.Created}}" docker_test:latest
查看docker_test:latest的id和Created字段.
镜像ID: sha256:4580a3c98379aa36c73a6a59dd5d0836cfad7d44f0dec3ecec0a3db2b98c5f3c 创建时间: 2026-02-09T12:10:38.159757878Z
可以先通过docker inspect docker_test:latest命令获取完整结构。
Docker是按照:容器>镜像>卷>网络的顺序查找(容器优先级最高),当容器和镜像同名时会返回容器的信息。
在宿主机和容器间复制文件(docker cp)
bash
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
| 组成部分 | 说明与示例 |
|---|---|
docker cp |
核心命令。 |
| [OPTIONS] | 选项 ,目前主要有一个 -a 选项,用于复制文件的存档模式(保留UID/GID等信息),通常可忽略。 |
| 复制方向 | 从容器复制到宿主机 :CONTAINER:SRC_PATH(源) → DEST_PATH(目标) 从宿主机复制到容器 :SRC_PATH(源) → CONTAINER:DEST_PATH(目标) |
CONTAINER |
容器的名称或ID 。容器可以是运行中 或已停止状态。 |
SRC_PATH |
源路径。要复制的文件或目录的位置。 |
DEST_PATH |
目标路径 。文件或目录要复制到的位置。如果目标路径以 / 结尾,Docker会将其视为目录。 |
docker cp trusting_rubin:/app/data /tmp/
将容器内 `/app/data` 整个目录复制到宿主机的 `/tmp` 目录
docker cp ./scripts trusting_rubin:/opt/将宿主机 `./scripts` 目录复制到容器的 `/opt` 目录下
容器内使用绝对路径, 可以在容器运行中 或已停止时使用。
实时查看容器资源占用(docker stats)
bash
docker stats [OPTIONS] [CONTAINER...]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
stats |
必需 | 核心命令。 |
| [OPTIONS] | 可选 | 监控选项,用于控制输出的内容和格式。 |
| [CONTAINER...] | 可选 | 要监控的容器 列表(名称或ID),用空格分隔。如果不指定,则监控所有运行中的容器。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--all |
-a |
**显示所有容器(包括已停止的)**的统计信息。已停止的容器各项数据通常为0或空。 |
--format |
使用 Go 模板格式化输出。可以自定义显示的列,这对于自动化脚本或清晰查看特定指标非常有用。 | |
--no-stream |
只显示当前状态,然后立即退出,而不是持续输出。适用于获取某个时间点的快照。 | |
--no-trunc |
不截断输出,显示完整的容器ID。 |
输出表头
| 列名 | 含义与说明 |
|---|---|
| CONTAINER ID | 容器的短ID。 |
| NAME | 容器名称。 |
| CPU % | CPU 使用百分比。如果主机有多个核心,百分比可能超过100%。 |
| MEM USAGE / LIMIT | 内存使用量 / 内存限制。这是最关键的指标之一,用于判断是否接近限制。 |
| MEM % | 内存使用百分比(相对于容器限制)。 |
| NET I/O | 网络输入/输出流量。 |
| BLOCK I/O | 磁盘块设备输入/输出流量。 |
| PIDS | 容器内进程数。 |
示例
docker stats
监控所有正在运行的容器
查看容器内运行的进程(docker top)
bash
docker top CONTAINER [ps OPTIONS]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
top |
必需 | 核心命令。 |
CONTAINER |
必需 | 要查看的容器 的名称或ID。容器必须处于运行中(Up) 状态。 |
| [ps OPTIONS] | 可选 | 传递给容器内 ps 命令的参数 ,用于定制输出格式。这些是标准的 ps 命令选项。 |
核心选项
| 选项 | 作用 | 示例 |
|---|---|---|
-e 或 -A |
显示所有进程(包括其他用户的)。 | docker top trusting_rubin -e |
-f 或 -f |
显示完整格式,包含更多详细信息(如启动命令、参数)。 | docker top trusting_rubin -f |
-aux 或 aux |
组合选项:显示所有用户(a)、终端无关(x)的进程,并带有用户(u)等信息。这是最常用的格式之一。 | docker top trusting_rubin aux |
--sort |
按指定字段排序,如 --sort=-%cpu 按CPU降序。 |
docker top trusting_rubin --sort=-%mem |
-o |
自定义输出列,例如 -o pid,user,comm。 |
docker top trusting_rubin -o pid,pcpu,pmem,comm |
输出表头
| 列名 | 含义与说明 |
|---|---|
| PID | 进程ID,但在容器内的PID命名空间中。 |
| USER | 运行该进程的用户。 |
| %CPU | CPU 使用百分比。 |
| %MEM | 内存使用百分比(相对于容器可用的总内存)。 |
| VSZ | 虚拟内存大小。 |
| RSS | 实际使用的物理内存(常驻集大小)。 |
| TTY | 进程关联的终端。 |
| STAT | 进程状态(如 S-睡眠,R-运行,Z-僵尸)。 |
| START | 进程启动时间。 |
| TIME | 进程占用CPU总时间。 |
| COMMAND | 启动该进程的命令,这是排查问题的关键。 |
示例
docker top peaceful_hugle
查看容器内的基本进程列表,输出的相关进行直接丢给AI。
列名 全称与含义 在您输出中的值 具体解读 UID User ID :运行该进程的用户身份。 root此进程由 root(超级用户) 运行。在容器中常见,但也应注意安全最佳实践(使用非root用户)。 PID Process ID :进程在容器内部的唯一标识符。 1964这是 python3 main.py在容器内的进程号。注意:此PID与宿主机上的PID不同。PPID Parent Process ID:父进程的PID。 1940此进程的父进程PID是1940,通常是容器的初始化进程(如 /sbin/init或docker-init)。C CPU Utilization:CPU使用率或调度信息。 0表示采样时刻的CPU使用率为0%(或一个很小的整数),说明此刻进程未在主动计算。 STIME Start Time:进程的启动时间。 08:34进程于今天上午08:34启动。 TTY Teletypewriter:进程关联的终端。 ??表示此进程是守护进程/后台进程 ,没有关联任何终端。这正是您使用-d参数后台运行容器的表现。TIME CPU Time:进程总共占用的CPU时间。 00:00:01该进程自启动以来,累计使用了1秒的CPU时间。 CMD Command:启动该进程的完整命令。 python3 main.py这就是您在 Dockerfile中定义的CMD,也是容器运行的主程序。
数据卷管理
解决容器内数据的持久化问题,确保数据不随容器删除而丢失,并支持容器间数据共享。
| 命令 | 说明 |
|---|---|
docker volume create |
创建数据卷 |
docker volume ls |
列出所有数据卷 |
docker volume inspect |
查看数据卷详情 |
docker volume rm |
删除数据卷 |
创建数据卷(docker volume create)
bash
docker volume create [OPTIONS] [VOLUME]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
volume create |
必需 | 核心命令,表示执行"创建卷"操作。 |
| [OPTIONS] | 可选 | 创建选项,用于指定卷的驱动程序和配置。 |
| [VOLUME] | 可选 | 要创建的卷的名称。如果未指定,Docker 将随机生成一个名称。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--driver |
-d |
指定卷使用的驱动程序 。默认为 local(本地存储)。其他驱动如 nfs, cifs 用于远程存储。 |
--opt |
-o |
设置驱动程序特定的选项(可多次使用)。这是配置卷行为的核心,例如设置大小、设备类型等。 |
--label |
-l |
为卷添加元数据标签 ,方便过滤和管理(如 -l project=myapp)。 |
不检查路径是否存在,只是登记信息,使用时才会检查,使用是通过docker run命令的-v或者--mount参数实现。
列出所有数据卷(docker volume ls)
bash
docker volume ls [OPTIONS]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
volume ls |
必需 | 核心命令,表示执行"列出卷"操作。您也可以使用 docker volume list,两者完全等价。 |
| [OPTIONS] | 可选 | 列表选项,用于过滤和格式化输出。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--filter |
-f |
根据条件过滤显示卷。这是非常强大的功能,您可以根据标签、驱动名称等过滤。 |
--format |
使用 Go 模板格式化输出,自定义要显示的列。 | |
--quiet |
-q |
仅显示卷的名称(安静模式)。这在编写脚本需要处理卷名时非常有用。 |
输出表头
-
DRIVER :卷的驱动类型。
local表示存储在本地宿主机。 -
VOLUME NAME:卷的名称。创建时指定的名称或系统自动生成的随机名
查看数据卷详情(docker volume inspect)
bash
docker volume inspect [OPTIONS] VOLUME [VOLUME...]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
volume inspect |
必需 | 核心命令。 |
| [OPTIONS] | 可选 | 查看选项,主要用于格式化输出。 |
| VOLUME | 必需 | 要查看的卷的名称。可以同时指定多个,用空格分隔。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--format |
-f |
使用 Go 模板格式化输出 。这是最实用的选项,可以直接提取您关心的特定字段,而不是面对整个 JSON 文档。 |
--size |
(仅限 API v1.42+)如果卷驱动支持,则显示卷的大小信息。 |
输出表头
| 字段 | 含义与重要性 |
|---|---|
Name |
卷的名称。 |
Driver |
使用的驱动。 |
Mountpoint |
最关键字段 。卷数据在宿主机上的实际存储路径 。请务必确认此路径是否正确存在。 |
Options |
驱动选项。对于绑定挂载卷,这里会明确显示您绑定的设备路径。 |
Labels |
您创建卷时添加的标签(元数据)。 |
Scope |
卷的作用域,通常是 "local"。 |
删除数据卷(docker volume rm)
bash
docker volume rm [OPTIONS] VOLUME [VOLUME...]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
volume rm |
必需 | 核心命令,表示执行"删除卷"操作。 |
| [OPTIONS] | 可选 | 删除选项,主要用于强制删除。 |
| VOLUME | 必需 | 要删除的卷的名称。可以同时指定多个,用空格分隔。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--force |
-f |
强制删除 。即使卷正在被某个(停止的)容器引用 ,也强制删除。请注意 :如果卷被运行中的容器使用,此选项也无法删除,您必须先停止并移除该容器。 |
网络管理
解决容器之间的连接和通信问题,确保容器能够相互发现和安全通信,同时提供与外部世界的连接。
| 命令 | 说明 |
|---|---|
docker network ls |
列出所有网络 |
docker network create |
创建自定义网络 |
docker network connect |
将容器连接到网络 |
docker network inspect |
查看网络详情 |
列出所有网络(docker network ls)
bash
docker network ls [OPTIONS]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
network ls |
必需 | 核心命令。ls 是 list 的缩写。 |
| [OPTIONS] | 可选 | 列表选项,用于过滤和格式化输出。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--filter |
-f |
根据条件过滤显示的网络。例如按驱动类型、网络名过滤。 |
--format |
使用 Go 模板格式化输出,自定义要显示的列。 | |
--quiet |
-q |
仅显示网络ID(安静模式)。适用于脚本处理。 |
--no-trunc |
不截断输出,显示完整的网络ID。 |
创建自定义网络(docker network create)
bash
docker network create [OPTIONS] NETWORK
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
network create |
必需 | 核心命令。 |
| [OPTIONS] | 可选 | 创建选项,用于配置网络的驱动、子网、网关等核心属性。 |
| NETWORK | 必需 | 要创建的网络名称。 |
核心选项
| 选项 | 简写 | 作用与说明 |
|---|---|---|
--driver |
-d |
指定网络驱动 。默认为 bridge。其他常用值:overlay(用于Swarm集群), macvlan, host, none。 |
--subnet |
指定网络的子网 (CIDR格式)。为容器分配IP的基础。手动指定可避免IP冲突 。例如:--subnet=172.20.0.0/16 |
|
--gateway |
指定子网的网关IP 。必须在子网范围内。例如:--gateway=172.20.0.1 |
|
--ip-range |
指定容器IP的分配范围(CIDR格式)。必须是子网的一部分。用于进一步划分IP池。 | |
--label |
为网络添加元数据标签 ,便于过滤和管理。例如:--label project=myapp |
|
--attachable |
允许手动将容器连接到此网络 (docker network connect)。对于 overlay 网络很有用。 |
|
--internal |
创建内部网络,禁止网络内容器访问外部网络(互联网)。 | |
--ipv6 |
启用IPv6支持。需要Docker守护进程已配置IPv6。 |
网络驱动
| 动类型 | 典型用途与说明 |
|---|---|
bridge |
默认的单机网络驱动 。适用于同一宿主机上的容器间通信。可自定义子网、提供DNS自动发现。 |
host |
容器直接使用宿主机的网络命名空间,性能最佳,但失去网络隔离,端口易冲突。 |
overlay |
跨多个Docker宿主机 的集群网络驱动,用于 Docker Swarm 集群。 |
none |
容器拥有独立的网络命名空间,但不配置任何网络接口,完全隔离。 |
将容器连接到网络(docker network connect)
bash
docker network connect [OPTIONS] NETWORK CONTAINER
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
network connect |
必需 | 核心命令,表示执行"连接网络"操作。 |
| [OPTIONS] | 可选 | 连接选项,用于指定IP地址、别名等高级配置。 |
| NETWORK | 必需 | 目标网络的名称。容器将被连接到此网络。 |
| CONTAINER | 必需 | 目标容器的名称或ID 。容器可以是运行中 或已停止状态。 |
核心选项
| 选项 | 作用与说明 |
|---|---|
--alias |
在此网络中为容器设置一个额外的DNS别名(可多次使用)。其他容器可以通过此别名访问该容器。 |
--ip |
指定容器在此网络中的 IPv4 地址(必须在该网络的子网范围内)。 |
--ip6 |
指定容器在此网络中的 IPv6 地址。 |
--link |
链接到另一个容器(此方式已逐渐被自定义网络DNS发现取代,不推荐新项目使用)。 |
查看网络详情(docker network inspect)
bash
docker network inspect [OPTIONS] NETWORK [NETWORK...]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
network inspect |
必需 | 核心命令。 |
| [OPTIONS] | 可选 | 查看选项,主要用于格式化输出。 |
| NETWORK | 必需 | 要查看的网络的名称或ID。可以同时指定多个,用空格分隔。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--format |
-f |
使用 Go 模板格式化输出。强烈推荐,可直接提取关键字段。 |
--verbose |
-v |
显示更详细的网络信息(对于 bridge 等本地驱动,会显示端口映射等低级细节)。 |
输出表头
| 字段路径 | 含义与重要性 | 示例值/说明 |
|---|---|---|
.Name |
网络名称。 | "my_app_net" |
.Id |
网络的唯一标识符。 | "a1b2c3..." |
.Driver |
网络驱动。 | "bridge" |
.IPAM.Config |
IP地址管理配置 ,包含子网 和网关。这是最关键的配置信息。 | [{"Subnet": "172.20.0.0/16", "Gateway": "172.20.0.1"}] |
.Containers |
已连接到此网络的容器列表及其IP地址。这是查看"谁在网里"的核心。 | 一个对象,键为容器ID,值包含容器名和IPv4地址。 |
.Options |
网络特定选项(如 com.docker.network.bridge.name)。 |
{} |
.Internal |
是否为内部网络(无外网访问)。 | false |
.Attachable |
是否允许运行中的容器动态连接到此网络。 | true |
.Labels |
网络的标签(元数据)。 | {} |
系统清理与信息查看
| 命令 | 说明 |
|---|---|
docker system df |
查看Docker磁盘使用情况 |
docker system prune |
一键清理所有未使用的资源(镜像、容器、网络、构建缓存) |
docker info |
显示Docker系统信息 |
docker version |
显示Docker版本信息 |
查看Docker磁盘使用情况(docker system df)
bash
docker system df [OPTIONS]
| 部分 | 是否必需 | 说明与示例 |
|---|---|---|
docker |
必需 | Docker 客户端程序。 |
system df |
必需 | 核心命令。df 借鉴自 Linux 的磁盘空间查看命令。 |
| [OPTIONS] | 可选 | 查看选项,目前主要用于显示更详细的信息。 |
核心选项
| 选项 | 简写 | 作用与示例 |
|---|---|---|
--verbose |
-v |
显示更详细的磁盘使用信息 ,特别是会列出每种资源类型下的具体项目详情(如每个镜像的大小)。这是分析空间占用来源的关键选项。 |
--format |
使用 Go 模板格式化输出(此命令较少使用,通常直接阅读默认表格)。 |
输出表头
| 类型 | 含义 | 包含内容 |
|---|---|---|
| Images | 镜像占用的总空间。 | 所有本地镜像及其共享层。 |
| Containers | 容器占用的总空间。 | 所有容器的可写层(日志、临时文件等)。 |
| Local Volumes | 本地数据卷占用的总空间。 | 由 Docker 管理的所有命名卷和匿名卷。 |
| Build Cache | 构建缓存占用的总空间。 | 镜像构建过程中产生的中间层和缓存。 |

一键清理 所有未使用的资源(docker system prune)
镜像、容器、网络、构建缓存。
bash
docker system prune [OPTIONS]
| 参数 | 简写 | 说明 |
|---|---|---|
--all |
-a |
清理所有未使用的镜像(不仅仅是悬空镜像) |
--force |
-f |
强制清理,不提示确认 |
--volumes |
- | 同时清理未使用的数据卷(谨慎使用) |
--filter |
- | 按条件过滤要清理的资源 |
--dry-run |
- | 模拟运行,显示哪些会被清理但不实际执行 |
显示Docker系统信息(docker info)
bash
docker info [OPTIONS]
| 参数 | 简写 | 说明 |
|---|---|---|
--format |
-f |
使用Go模板格式化输出 |
--help |
- | 显示帮助信息 |
显示Docker版本信息(docker version)
bash
docker version [OPTIONS]
| 参数 | 简写 | 说明 |
|---|---|---|
--format |
-f |
使用Go模板格式化输出 |
--help |
- | 显示帮助信息 |













