命令与镜像、容器管理详解
前言
Docker 作为当前主流的容器化技术,极大地简化了应用程序的开发、部署和运维流程。对于初学者而言,掌握 Docker 的核心概念和常用命令是入门的关键。本指南将聚焦于 Docker 中最基础也最重要的两个对象:镜像(Image)和容器(Container),并详细介绍在 OpenEuler 操作系统下管理它们所需的命令。
核心概念
- 镜像 (Image) :
- 定义:镜像是一个只读的模板,包含了运行容器所需的所有文件和依赖项(如代码、运行时环境、库、环境变量、配置文件等)。你可以将其理解为一个应用程序及其运行环境的打包快照。
- 特点:分层存储(Layer),只读性。多个镜像可以共享相同的底层基础层,提高存储效率。镜像是创建容器的基石。
- 容器 (Container) :
- 定义:容器是镜像的一个运行实例。当你启动一个容器时,Docker 会在镜像的只读层之上创建一个可写的容器层。容器是实际运行应用程序的进程(或一组进程)。
- 特点:轻量级、可读写层、相互隔离(进程、网络、文件系统等)、资源限制、生命周期管理(创建、启动、停止、删除)。容器运行在宿主机的内核上,但拥有自己独立的用户空间。
环境准备 (OpenEuler)
在开始使用 Docker 命令之前,请确保你的 OpenEuler 系统已正确安装并启用了 Docker 引擎。通常可以通过以下命令安装:
bash
sudo yum install docker-engine
sudo systemctl start docker
sudo systemctl enable docker
验证安装:docker version 或 docker info。
第一部分:Docker 镜像管理命令详解
镜像是容器运行的基础。管理好镜像是高效使用 Docker 的前提。
-
docker images-
功能:列出本地主机上存储的所有 Docker 镜像。
-
常用选项 :
-a, --all: 显示所有镜像(包括中间层镜像,默认不显示)。--digests: 显示镜像的摘要信息(Digest)。-q, --quiet: 仅显示镜像 ID。--filter: 根据条件过滤镜像(如dangling=true显示悬虚镜像)。
-
示例 :
bashdocker images # 列出所有顶层镜像 docker images -a # 列出所有镜像(包括中间层) docker images --filter "dangling=true" # 列出悬虚镜像 docker images -q # 只显示镜像ID -
输出解析 :
REPOSITORY: 镜像仓库来源(如nginx,ubuntu)。TAG: 镜像标签(如latest,18.04),用于标识同一仓库中不同版本的镜像。IMAGE ID: 镜像的唯一标识符(哈希值)。CREATED: 镜像创建时间。SIZE: 镜像大小(注意是压缩后在仓库中的大小,解压后运行时会更大)。
-
-
docker search-
功能:在 Docker Hub(或其他配置的镜像仓库)上搜索公共镜像。
-
常用选项 :
--limit: 限制返回结果的数量。--filter: 过滤搜索结果(如is-official=true只显示官方镜像)。
-
示例 :
bashdocker search nginx # 搜索包含 "nginx" 关键字的镜像 docker search --limit 5 mysql # 搜索包含 "mysql" 的镜像,只显示前5个 docker search --filter "is-official=true" python # 搜索官方的 Python 镜像 -
输出解析 :
NAME: 镜像仓库名。DESCRIPTION: 镜像描述。STARS: 镜像的星标数(受欢迎程度)。OFFICIAL: 是否为官方镜像 ([OK])。AUTOMATED: 是否由 Docker Hub 自动构建 ([OK])。
-
-
docker pull-
功能:从配置的镜像仓库(默认 Docker Hub)下载(拉取)指定的镜像到本地。
-
格式 :
docker pull [OPTIONS] NAME[:TAG|@DIGEST] -
说明 :
- 如果不指定
TAG或DIGEST,默认拉取latest标签的镜像。 - 强烈建议始终指定明确的标签 (如
ubuntu:20.04)而非依赖latest,以保证环境一致性。
- 如果不指定
-
示例 :
bashdocker pull nginx # 拉取 nginx:latest docker pull ubuntu:20.04 # 拉取 Ubuntu 20.04 镜像 docker pull myprivate.registry.com/app:1.0 # 从私有仓库拉取镜像
-
-
docker push-
功能:将本地的镜像上传到配置的镜像仓库(如 Docker Hub、私有仓库)。
-
前提 :
- 镜像必须已经
docker tag过,其名称符合目标仓库的命名规范(通常是[registry_url]/[username]/repository:tag)。 - 你需要有该仓库的写入权限(通常需要先
docker login)。
- 镜像必须已经
-
格式 :
docker push [OPTIONS] NAME[:TAG] -
示例 :
bashdocker tag myapp:1.0 myusername/myapp:1.0 # 先打标签 docker push myusername/myapp:1.0 # 推送到 Docker Hub docker push myprivate.registry.com/team/app:release # 推送到私有仓库
-
-
docker build-
功能 :根据一个
Dockerfile文件中的指令,自动构建一个新的镜像。 -
核心选项 :
-t, --tag: 为构建成功的镜像指定一个名称和标签(格式name:tag)。可以多次使用-t为一个镜像设置多个标签。-f, --file: 指定要使用的Dockerfile路径(默认为当前目录下的Dockerfile)。
-
格式 :
docker build [OPTIONS] PATH | URL | - -
说明 :
PATH是包含Dockerfile的目录路径(称为构建上下文)。构建过程中,该目录下的所有文件(除.dockerignore指定的外)都会被发送给 Docker 守护进程。 -
示例 :
bashdocker build -t mywebapp:1.0 . # 使用当前目录下的 Dockerfile 构建,并打标签 docker build -t myapp:latest -t myapp:stable . # 打多个标签 docker build -f /path/to/Dockerfile -t customimage . # 指定 Dockerfile 路径
-
-
docker tag-
功能 :为本地已有的镜像创建一个新的标签(引用)。常用于在推送镜像到仓库前设置符合仓库规范的名称,或者为镜像创建别名(如
latest,v1)。 -
格式 :
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] -
示例 :
bashdocker tag myapp:1.0 myapp:latest # 为 myapp:1.0 创建别名 latest docker tag localimage:dev myusername/repo:production # 准备推送镜像到仓库
-
-
docker rmi-
功能:删除一个或多个本地镜像。
-
常用选项 :
-f, --force: 强制删除(如删除被标记或被容器引用的镜像)。
-
格式 :
docker rmi [OPTIONS] IMAGE [IMAGE...] -
说明 :
- 如果镜像有多个标签,
rmi只会删除指定的标签。只有当该镜像没有任何标签时,才会真正删除镜像数据层。 - 如果镜像被容器(即使已停止)引用,需要先删除容器或使用
-f强制删除(不推荐在生产环境强制删除被引用的镜像)。
- 如果镜像有多个标签,
-
示例 :
bashdocker rmi ubuntu:18.04 # 删除 ubuntu:18.04 镜像 docker rmi myapp:oldtag # 删除特定标签 docker rmi $(docker images -q) # 删除所有镜像(危险!慎用)
-
-
docker inspect(镜像)-
功能:获取 Docker 镜像的详细信息(元数据),以 JSON 格式输出。
-
输出内容:包含镜像的 ID、创建时间、父镜像 ID、作者、架构、操作系统、配置(如入口点、命令、环境变量、卷、暴露端口)、层信息等。
-
格式 :
docker inspect [OPTIONS] IMAGE [IMAGE...] -
示例 :
bashdocker inspect nginx:latest # 查看 nginx 镜像的详细信息 docker inspect --format '{{.Id}}' ubuntu:20.04 # 仅提取镜像完整ID
-
-
docker history-
功能 :显示镜像的构建历史记录,即组成该镜像的每一层(Layer)及其对应的
Dockerfile指令。 -
输出 :包括层 ID、创建时间、创建指令 (
CREATED BY)、大小。 -
格式 :
docker history [OPTIONS] IMAGE -
示例 :
bashdocker history myapp:built # 查看自己构建的镜像历史 docker history --no-trunc nginx # 显示完整的创建指令(不截断)
-
-
docker save-
功能 :将一个或多个镜像保存到一个归档文件(通常是
.tar格式)。用于备份镜像或迁移到其他未联网的 Docker 主机。 -
常用选项 :
-o, --output: 指定输出归档文件的路径和名称。
-
格式 :
docker save [OPTIONS] IMAGE [IMAGE...] -
示例 :
bashdocker save -o nginx.tar nginx:latest # 保存 nginx:latest 到 nginx.tar docker save -o allimages.tar image1 image2 # 保存多个镜像到一个文件 docker save nginx:latest > nginx.tar # 使用重定向 (功能同 -o)
-
-
docker load-
功能 :从归档文件(通常由
docker save生成)中加载一个或多个镜像到本地镜像仓库。 -
常用选项 :
-i, --input: 指定要加载的归档文件路径。-q, --quiet: 静默模式,仅输出镜像名称。
-
格式 :
docker load [OPTIONS] -
示例 :
bashdocker load -i nginx.tar # 从 nginx.tar 加载镜像 docker load < allimages.tar # 使用重定向加载
-
-
docker commit-
功能 :将一个运行中或已停止的容器的当前状态(主要是可写层的变化)提交为一个新的镜像。这相当于手动创建镜像,通常用于调试或保存临时修改,不推荐 作为构建镜像的常规方式(应使用
Dockerfile)。 -
常用选项 :
-a, --author: 指定镜像作者。-c, --change: 使用 Dockerfile 指令修改提交的镜像(如CMD,ENV)。-m, --message: 提交信息。
-
格式 :
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] -
示例 :
bashdocker commit -m "Added config" mycontainer mynewimage:temp # 将容器状态保存为新镜像
-
-
docker import-
功能 :从
tar归档文件(通常包含一个文件系统)创建一个新的镜像。这个归档文件可以是docker export导出的容器文件系统,也可以是一个操作系统根文件系统的tar包。 -
与
docker load区别 :docker load加载的是由docker save保存的完整镜像(包含历史层和元数据)。docker import导入的是一个扁平化的文件系统tar包,会丢弃所有历史记录和元数据,生成一个新的单层镜像。
-
格式 :
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]] -
示例 :
bashdocker import ubuntu-rootfs.tar myubuntu:custom # 从 rootfs 包创建镜像 cat container.tar | docker import - mycontainer:snapshot # 通过管道导入
-
第二部分:Docker 容器管理命令详解
容器是镜像的运行实例。管理容器的生命周期是日常工作的核心。
-
docker run-
功能 :最核心命令之一。基于指定镜像创建并启动一个新的容器。
-
极其常用且重要的选项 :
选项 (短/长) 说明 -d,--detach在后台运行容器并打印容器 ID。 --name为容器指定一个自定义名称(否则 Docker 会随机生成)。 -p,--publish将容器的端口映射到宿主机的端口(格式 [host_ip:]host_port:container_port)。允许多个-p。-v,--volume将宿主机的目录或文件绑定挂载(Bind Mount)到容器内(格式 [host_src:]container_dest[:options])。允许多个-v。--mount更强大的挂载选项(支持 Volume, Bind Mount, tmpfs),语法更复杂。 -e,--env设置容器内的环境变量(格式 VAR=value)。允许多个-e。--env-file从文件读取环境变量设置(文件每行 VAR=value)。-it-i(保持 STDIN 打开) 和-t(分配伪终端) 的组合,常用于运行交互式容器(如/bin/bash)。--restart设置容器的重启策略( no,on-failure[:max-retries],always,unless-stopped)。--rm容器退出时自动删除容器(不能与 -d同时使用)。--network指定容器使用的网络(如 bridge,host,none, 或自定义网络名)。--link(已过时,建议使用自定义网络)链接到另一个容器。 -c,--cpu-sharesCPU 共享权重(相对值)。 -m,--memory内存限制(如 512m,2g)。 -
格式 :
docker run [OPTIONS] IMAGE [COMMAND] [ARG...] -
说明 :
- 如果
IMAGE在本地不存在,Docker 会先尝试docker pull。 COMMAND和ARG会覆盖Dockerfile中的CMD指令。
- 如果
-
示例 :
bashdocker run -d --name mynginx -p 8080:80 nginx # 后台运行 nginx,命名,端口映射 docker run -it --rm ubuntu:20.04 /bin/bash # 运行交互式 bash,退出后删除容器 docker run -v /host/data:/container/data myapp # 挂载宿主机目录到容器 docker run -e "ENV_VAR=value" myapp # 设置环境变量 docker run --restart=always myapp # 设置容器总是重启
-
-
docker create-
功能 :基于镜像创建一个新的容器,但不会自动启动 它。容器默认处于
created状态。 -
选项 :与
docker run的大部分选项相同(如--name,-p,-v,-e,--network等),但没有-d,-it,--rm等与运行相关的选项。 -
格式 :
docker create [OPTIONS] IMAGE [COMMAND] [ARG...] -
示例 :
bashdocker create --name mycreatedcontainer nginx # 创建名为 mycreatedcontainer 的 nginx 容器 -
用途 :通常用于在启动前对容器进行更复杂的配置,或者配合
docker start使用。
-
-
docker start-
功能 :启动一个或多个处于停止 (
exited) 或创建 (created) 状态的容器。 -
常用选项 :
-a, --attach: 附加到容器的 STDIN、STDOUT 和 STDERR。-i, --interactive: 附加到容器的 STDIN(通常与-a一起使用)。
-
格式 :
docker start [OPTIONS] CONTAINER [CONTAINER...] -
示例 :
bashdocker start mycreatedcontainer # 启动之前创建的容器 docker start stopped_container # 启动已停止的容器 docker start -a mycontainer # 启动并附加到输出
-
-
docker stop-
功能:停止一个或多个正在运行的容器。默认情况下,Docker 会先发送 SIGTERM 信号,如果在超时期限(默认 10 秒)内容器未停止,则发送 SIGKILL 信号。
-
常用选项 :
-t, --time: 指定停止超时时间(秒)。
-
格式 :
docker stop [OPTIONS] CONTAINER [CONTAINER...] -
示例 :
bashdocker stop mynginx # 停止 mynginx 容器 docker stop -t 5 container1 container2 # 停止两个容器,超时 5 秒
-
-
docker restart-
功能 :重启一个或多个容器(无论当前是运行中还是已停止状态)。如果容器已停止,
docker restart会先启动它。过程等同于先docker stop再docker start。 -
常用选项 :同
docker stop(-t)。 -
格式 :
docker restart [OPTIONS] CONTAINER [CONTAINER...] -
示例 :
bashdocker restart mynginx # 重启 mynginx 容器
-
-
docker kill-
功能:强制杀死(发送 SIGKILL 信号)一个或多个正在运行的容器。这是一种更直接、更暴力的停止方式,不会给容器清理的机会。
-
常用选项 :
-s, --signal: 指定发送的信号(如SIGINT,SIGHUP),默认为SIGKILL。
-
格式 :
docker kill [OPTIONS] CONTAINER [CONTAINER...] -
示例 :
bashdocker kill unresponsive_container # 杀死无响应的容器 docker kill -s SIGTERM container_id # 发送 SIGTERM 信号
-
-
docker rm-
功能 :删除一个或多个容器(必须是停止状态,除非使用
-f)。 -
常用选项 :
-f, --force: 强制删除正在运行的容器(会先发送 SIGKILL)。-v, --volumes: 删除与容器关联的匿名卷(由Dockerfile中的VOLUME指令创建)。
-
格式 :
docker rm [OPTIONS] CONTAINER [CONTAINER...] -
示例 :
bashdocker rm stopped_container # 删除已停止的容器 docker rm -f running_container # 强制删除运行中的容器 docker rm -v container_with_volume # 删除容器及其匿名卷 docker rm $(docker ps -aq) # 删除所有容器(危险!慎用)
-
-
docker ps-
功能 :最常用命令之一。列出当前正在运行的容器。
-
常用选项 :
选项 描述 补充说明 -a,--all显示所有容器(包括停止的) -q,--quiet仅显示容器 ID 适合脚本处理场景 -s,--size显示容器大小(文件系统使用量) --filter根据条件过滤容器 支持 status=running、name=web*、ancestor=nginx等条件--format使用 Go 模板格式化输出 如 --format "{``{.ID}}: {``{.Names}}"-n,--last显示最近创建的 n 个容器(包括所有状态) 如 -n 3显示最近 3 个容器-l,--latest显示最近创建的容器(包括所有状态) 等价于 --last 1 -
格式 :
docker ps [OPTIONS] -
示例 :
bashdocker ps # 列出正在运行的容器 docker ps -a # 列出所有容器 docker ps -q # 列出所有运行中容器的ID docker ps -a -q # 列出所有容器(包括停止的)的ID docker ps --filter "status=exited" # 列出已退出的容器 docker ps --filter "name=my*" # 列出名称以 my 开头的容器 docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}" # 自定义格式输出 -
输出解析 (
docker ps -a)字段名 描述 CONTAINER ID 容器的唯一短 ID。 IMAGE 容器基于的镜像。 COMMAND 容器启动时运行的命令。 CREATED 容器创建时间。 STATUS 容器状态(例如:Up [time] 表示运行中,Exited ([code]) [time ago] 表示已退出,Created 表示已创建未启动)。 PORTS 端口映射情况(例如:0.0.0.0:8080->80/tcp)。 NAMES 容器的名称(通过 --name 指定或随机生成)。
-
-
docker exec-
功能 :在正在运行的容器内部执行指定的命令。常用于进入容器内部进行调试、管理或执行一次性任务。
-
常用选项 :
-it: 组合使用,分配伪终端并保持 STDIN 打开,用于交互式命令(如/bin/bash,/bin/sh)。-e, --env: 设置执行命令时的环境变量。--user: 指定执行命令的用户名或 UID。-w, --workdir: 设置命令的工作目录。
-
格式 :
docker exec [OPTIONS] CONTAINER COMMAND [ARG...] -
示例 :
bashdocker exec -it mynginx /bin/bash # 进入 mynginx 容器的 bash shell docker exec mycontainer ls /app # 在容器内执行 ls /app 命令 docker exec -e DEBUG=true myapp ./script.sh # 设置环境变量并执行脚本
-
-
docker logs-
功能:获取容器的日志输出。默认显示容器的 STDOUT 和 STDERR 信息。
-
常用选项 :
-f, --follow: 实时跟踪日志输出(类似tail -f)。--tail: 显示日志末尾的行数(如--tail 100)。-t, --timestamps: 显示每条日志的时间戳。--since: 显示自某个时间点之后的日志(如--since 2023-10-01T12:00:00)。--until: 显示到某个时间点之前的日志。
-
格式 :
docker logs [OPTIONS] CONTAINER -
示例 :
bashdocker logs myapp # 查看 myapp 容器的日志 docker logs -f mynginx # 实时查看 nginx 日志 docker logs --tail 50 -t mycontainer # 查看最后50条带时间戳的日志
-
-
docker inspect(容器)-
功能 :获取 Docker 容器的详细信息(元数据),以 JSON 格式输出。信息比
docker ps详细得多。 -
输出内容:包含容器的 ID、名称、创建时间、状态、镜像、命令、参数、网络配置(IP、网关、端口映射)、挂载点、环境变量、重启策略、资源限制、日志驱动配置等。
-
格式 :
docker inspect [OPTIONS] CONTAINER [CONTAINER...] -
示例 :
bashdocker inspect mynginx # 查看 mynginx 容器的所有信息 docker inspect --format '{{.NetworkSettings.IPAddress}}' mycontainer # 仅提取容器IP docker inspect --format '{{.HostConfig.RestartPolicy.Name}}' mycontainer # 查看重启策略
-
-
docker top-
功能 :显示容器内正在运行的进程信息(类似于在容器内运行
ps -ef)。 -
格式 :
docker top CONTAINER [ps OPTIONS] -
示例 :
bashdocker top myapp # 显示 myapp 容器内的进程 docker top mynginx aux # 显示类似 'ps aux' 的进程信息
-
-
docker rename-
功能:为容器指定一个新的名称。
-
格式 :
docker rename OLD_NAME NEW_NAME -
示例 :
bashdocker rename old_name new_name # 将容器 old_name 重命名为 new_name
-
-
docker attach-
功能:将本地终端的 STDIN、STDOUT、STDERR 附加到一个正在运行的容器上。这使你能够看到容器的输出并与之交互(如果容器启动时配置了交互式终端)。
-
注意 :
- 如果同时附加多个终端,所有输入会发送到容器,所有输出会显示在所有附加的终端上。
- 退出附加(如按
Ctrl+C)可能会影响容器的运行,取决于容器内的进程如何处理信号。通常使用docker exec -it进入容器更安全可控。 - 要从附加会话中分离而不停止容器,使用序列
Ctrl+P+Ctrl+Q。
-
格式 :
docker attach [OPTIONS] CONTAINER -
示例 :
bashdocker attach myinteractivecontainer # 附加到交互式容器
-
-
docker cp-
功能:在容器和本地宿主机文件系统之间复制文件或目录。
-
格式 :
- 从容器复制到主机:
docker cp CONTAINER:SRC_PATH DEST_PATH - 从主机复制到容器:
docker cp SRC_PATH CONTAINER:DEST_PATH
- 从容器复制到主机:
-
说明 :
SRC_PATH或DEST_PATH可以是文件或目录。容器路径必须是绝对路径。 -
示例 :
bashdocker cp mycontainer:/app/logs/app.log ./ # 从容器复制文件到当前目录 docker cp ./config.ini mycontainer:/etc/app/ # 从主机复制文件到容器目录 docker cp mycontainer:/var/www/html ./website_backup # 复制容器目录到主机
-
-
docker diff-
功能:显示容器文件系统自创建以来,与它基于的镜像相比发生了哪些更改(A: 添加的文件/目录,C: 修改的文件/目录,D: 删除的文件/目录)。
-
格式 :
docker diff CONTAINER -
示例 :
bashdocker diff mycontainer # 查看 mycontainer 的文件系统变更
-
-
docker pause/docker unpause-
功能 :
pause: 暂停一个或多个运行容器内的所有进程。unpause: 恢复一个或多个被暂停容器内的所有进程。
-
说明:暂停进程会冻结它们的 CPU 时间片,但不会释放内存等资源。主要用于临时冻结容器状态。
-
格式 :
bashdocker pause CONTAINER [CONTAINER...] docker unpause CONTAINER [CONTAINER...] -
示例 :
bashdocker pause myapp # 暂停 myapp 容器 docker unpause myapp # 恢复 myapp 容器
-
-
docker port-
功能 :列出容器端口映射的配置信息(即
docker run -p或DockerfileEXPOSE的结果),或查找将容器的特定端口映射到宿主机的哪个端口。 -
格式 :
- 列出所有映射:
docker port CONTAINER - 查找特定容器端口:
docker port CONTAINER PRIVATE_PORT[/PROTO]
- 列出所有映射:
-
示例 :
bashdocker port mynginx # 列出 mynginx 的所有端口映射 docker port mynginx 80 # 查看容器 80 端口映射到宿主机哪个端口
-
-
docker stats-
功能:实时显示一个或多个容器的资源使用情况统计(CPU、内存、网络 I/O、块 I/O、进程数)。
-
常用选项 :
-a, --all: 显示所有容器(默认只显示运行的)。--no-stream: 仅显示当前状态,不实时更新。
-
格式 :
docker stats [OPTIONS] [CONTAINER...] -
示例 :
bashdocker stats # 实时显示所有运行中容器的资源使用 docker stats myapp mydb # 实时显示 myapp 和 mydb 的资源使用 docker stats --no-stream container_id # 获取 container_id 的当前资源快照
-
-
docker update-
功能:更新一个或多个运行中容器的配置(如 CPU、内存限制、重启策略)。通常不需要停止容器。
-
可更新选项 :
--cpu-shares,--cpus,--memory,--memory-swap,--restart,--blkio-weight等资源限制和策略。 -
格式 :
docker update [OPTIONS] CONTAINER [CONTAINER...] -
示例 :
bashdocker update --memory 1g myapp # 将 myapp 容器的内存限制改为 1GB docker update --restart=on-failure:5 mycontainer # 更新重启策略
-
-
docker wait-
功能:阻塞命令行,直到指定的一个或多个容器停止运行,然后打印出它们的退出代码。
-
格式 :
docker wait CONTAINER [CONTAINER...] -
示例 :
bashdocker wait mycontainer # 等待 mycontainer 停止并显示其退出码
-
-
docker export-
功能 :将容器的文件系统导出为一个
tar归档文件。注意:导出的是容器的当前文件系统快照,不包括历史层、元数据或容器运行所需的其他信息(如端口、环境变量)。 -
格式 :
docker export [OPTIONS] CONTAINER -
常用选项 :
-o, --output: 指定输出文件。
-
示例 :
bashdocker export -o container_fs.tar mycontainer # 导出容器文件系统到 tar 包 docker export mycontainer > snapshot.tar # 使用重定向 -
用途 :通常用于检查容器内的文件,或配合
docker import创建新镜像(会丢失历史)。
-
-
docker events-
功能:从 Docker 守护进程获取实时事件流(如容器创建、启动、停止、销毁、镜像拉取、删除等)。
-
常用选项 :
--filter: 过滤事件类型(如event=create,type=container,image=nginx)。--since: 显示自某个时间点之后的事件。--until: 显示到某个时间点之前的事件。
-
格式 :
docker events [OPTIONS] -
示例 :
bashdocker events # 实时监听所有事件 docker events --filter 'event=die' # 只监听容器退出事件
-
第三部分:Docker 全局选项
这些选项可以用于大多数 Docker 命令,用于配置客户端行为或连接到特定的 Docker 守护进程。
| 选项(短) | 选项(长) | 参数类型 | 说明 |
|---|---|---|---|
--config |
string |
指定客户端配置文件目录(默认 /root/.docker)。 |
|
-c |
--context |
string |
指定要使用的上下文(Context)名称。这会覆盖 DOCKER_HOST 环境变量。 |
-D |
--debug |
启用调试模式,输出更详细的日志。 | |
-H |
--host |
list |
指定要连接的 Docker 守护进程的地址。允许多个 -H 连接到 Swarm。 |
-l |
--log-level |
string |
设置日志级别(debug, info, warn, error, fatal),默认 info。 |
--tls |
使用 TLS(传输层安全)。由 --tlsverify 隐含。 |
||
--tlscacert |
string |
指定受信任的 CA 证书文件路径。 | |
--tlscert |
string |
指定客户端 TLS 证书文件路径。 | |
--tlskey |
string |
指定客户端 TLS 密钥文件路径。 | |
--tlsverify |
使用 TLS 并验证远程服务器(守护进程)的身份。 | ||
-v |
--version |
打印 Docker 客户端和守护进程的版本信息并退出。 |
示例用法:
bash
docker -H tcp://remotehost:2375 ps # 连接到远程 Docker 主机的守护进程查看容器
docker --debug pull nginx # 调试模式拉取镜像
docker --tlscacert ca.pem --tlscert cert.pem --tlskey key.pem -H tcp://securehost:2376 ps # 使用 TLS 安全连接到远程主机
docker --context myremotecontext ps # 使用名为 myremotecontext 的上下文查看容器
总结
本指南详细介绍了在 OpenEuler 系统下使用 Docker 管理镜像和容器的基础命令。从镜像的拉取、构建、查看、删除,到容器的创建、启动、停止、重启、进入、查看日志、检查状态、复制文件、资源监控等,涵盖了日常操作的主要方面。理解这些命令及其常用选项是有效使用 Docker 的基础。请务必在实践中多加练习,并随时查阅官方文档 (docker COMMAND --help) 以获取更深入的信息。后续指南将探讨 Docker 网络、存储卷、Dockerfile 编写等更高级的主题。