Docker 容器技术入门与实践 (一):命令与镜像、容器管理

命令与镜像、容器管理详解

前言

Docker 作为当前主流的容器化技术,极大地简化了应用程序的开发、部署和运维流程。对于初学者而言,掌握 Docker 的核心概念和常用命令是入门的关键。本指南将聚焦于 Docker 中最基础也最重要的两个对象:镜像(Image)和容器(Container),并详细介绍在 OpenEuler 操作系统下管理它们所需的命令。

核心概念

  1. 镜像 (Image)
    • 定义:镜像是一个只读的模板,包含了运行容器所需的所有文件和依赖项(如代码、运行时环境、库、环境变量、配置文件等)。你可以将其理解为一个应用程序及其运行环境的打包快照。
    • 特点:分层存储(Layer),只读性。多个镜像可以共享相同的底层基础层,提高存储效率。镜像是创建容器的基石。
  2. 容器 (Container)
    • 定义:容器是镜像的一个运行实例。当你启动一个容器时,Docker 会在镜像的只读层之上创建一个可写的容器层。容器是实际运行应用程序的进程(或一组进程)。
    • 特点:轻量级、可读写层、相互隔离(进程、网络、文件系统等)、资源限制、生命周期管理(创建、启动、停止、删除)。容器运行在宿主机的内核上,但拥有自己独立的用户空间。

环境准备 (OpenEuler)

在开始使用 Docker 命令之前,请确保你的 OpenEuler 系统已正确安装并启用了 Docker 引擎。通常可以通过以下命令安装:

bash 复制代码
sudo yum install docker-engine
sudo systemctl start docker
sudo systemctl enable docker

验证安装:docker versiondocker info


第一部分:Docker 镜像管理命令详解

镜像是容器运行的基础。管理好镜像是高效使用 Docker 的前提。

  1. docker images

    • 功能:列出本地主机上存储的所有 Docker 镜像。

    • 常用选项

      • -a, --all: 显示所有镜像(包括中间层镜像,默认不显示)。
      • --digests: 显示镜像的摘要信息(Digest)。
      • -q, --quiet: 仅显示镜像 ID。
      • --filter: 根据条件过滤镜像(如 dangling=true 显示悬虚镜像)。
    • 示例

      bash 复制代码
      docker images # 列出所有顶层镜像
      docker images -a # 列出所有镜像(包括中间层)
      docker images --filter "dangling=true" # 列出悬虚镜像
      docker images -q # 只显示镜像ID
    • 输出解析

      • REPOSITORY: 镜像仓库来源(如 nginx, ubuntu)。
      • TAG: 镜像标签(如 latest, 18.04),用于标识同一仓库中不同版本的镜像。
      • IMAGE ID: 镜像的唯一标识符(哈希值)。
      • CREATED: 镜像创建时间。
      • SIZE: 镜像大小(注意是压缩后在仓库中的大小,解压后运行时会更大)。
  2. docker search

    • 功能:在 Docker Hub(或其他配置的镜像仓库)上搜索公共镜像。

    • 常用选项

      • --limit: 限制返回结果的数量。
      • --filter: 过滤搜索结果(如 is-official=true 只显示官方镜像)。
    • 示例

      bash 复制代码
      docker 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])。
  3. docker pull

    • 功能:从配置的镜像仓库(默认 Docker Hub)下载(拉取)指定的镜像到本地。

    • 格式docker pull [OPTIONS] NAME[:TAG|@DIGEST]

    • 说明

      • 如果不指定 TAGDIGEST,默认拉取 latest 标签的镜像。
      • 强烈建议始终指定明确的标签 (如 ubuntu:20.04)而非依赖 latest,以保证环境一致性。
    • 示例

      bash 复制代码
      docker pull nginx # 拉取 nginx:latest
      docker pull ubuntu:20.04 # 拉取 Ubuntu 20.04 镜像
      docker pull myprivate.registry.com/app:1.0 # 从私有仓库拉取镜像
  4. docker push

    • 功能:将本地的镜像上传到配置的镜像仓库(如 Docker Hub、私有仓库)。

    • 前提

      • 镜像必须已经 docker tag 过,其名称符合目标仓库的命名规范(通常是 [registry_url]/[username]/repository:tag)。
      • 你需要有该仓库的写入权限(通常需要先 docker login)。
    • 格式docker push [OPTIONS] NAME[:TAG]

    • 示例

      bash 复制代码
      docker tag myapp:1.0 myusername/myapp:1.0 # 先打标签
      docker push myusername/myapp:1.0 # 推送到 Docker Hub
      docker push myprivate.registry.com/team/app:release # 推送到私有仓库
  5. docker build

    • 功能 :根据一个 Dockerfile 文件中的指令,自动构建一个新的镜像。

    • 核心选项

      • -t, --tag: 为构建成功的镜像指定一个名称和标签(格式 name:tag)。可以多次使用 -t 为一个镜像设置多个标签。
      • -f, --file: 指定要使用的 Dockerfile 路径(默认为当前目录下的 Dockerfile)。
    • 格式docker build [OPTIONS] PATH | URL | -

    • 说明PATH 是包含 Dockerfile 的目录路径(称为构建上下文)。构建过程中,该目录下的所有文件(除 .dockerignore 指定的外)都会被发送给 Docker 守护进程。

    • 示例

      bash 复制代码
      docker build -t mywebapp:1.0 . # 使用当前目录下的 Dockerfile 构建,并打标签
      docker build -t myapp:latest -t myapp:stable . # 打多个标签
      docker build -f /path/to/Dockerfile -t customimage . # 指定 Dockerfile 路径
  6. docker tag

    • 功能 :为本地已有的镜像创建一个新的标签(引用)。常用于在推送镜像到仓库前设置符合仓库规范的名称,或者为镜像创建别名(如 latest, v1)。

    • 格式docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

    • 示例

      bash 复制代码
      docker tag myapp:1.0 myapp:latest # 为 myapp:1.0 创建别名 latest
      docker tag localimage:dev myusername/repo:production # 准备推送镜像到仓库
  7. docker rmi

    • 功能:删除一个或多个本地镜像。

    • 常用选项

      • -f, --force: 强制删除(如删除被标记或被容器引用的镜像)。
    • 格式docker rmi [OPTIONS] IMAGE [IMAGE...]

    • 说明

      • 如果镜像有多个标签,rmi 只会删除指定的标签。只有当该镜像没有任何标签时,才会真正删除镜像数据层。
      • 如果镜像被容器(即使已停止)引用,需要先删除容器或使用 -f 强制删除(不推荐在生产环境强制删除被引用的镜像)。
    • 示例

      bash 复制代码
      docker rmi ubuntu:18.04 # 删除 ubuntu:18.04 镜像
      docker rmi myapp:oldtag # 删除特定标签
      docker rmi $(docker images -q) # 删除所有镜像(危险!慎用)
  8. docker inspect (镜像)

    • 功能:获取 Docker 镜像的详细信息(元数据),以 JSON 格式输出。

    • 输出内容:包含镜像的 ID、创建时间、父镜像 ID、作者、架构、操作系统、配置(如入口点、命令、环境变量、卷、暴露端口)、层信息等。

    • 格式docker inspect [OPTIONS] IMAGE [IMAGE...]

    • 示例

      bash 复制代码
      docker inspect nginx:latest # 查看 nginx 镜像的详细信息
      docker inspect --format '{{.Id}}' ubuntu:20.04 # 仅提取镜像完整ID
  9. docker history

    • 功能 :显示镜像的构建历史记录,即组成该镜像的每一层(Layer)及其对应的 Dockerfile 指令。

    • 输出 :包括层 ID、创建时间、创建指令 (CREATED BY)、大小。

    • 格式docker history [OPTIONS] IMAGE

    • 示例

      bash 复制代码
      docker history myapp:built # 查看自己构建的镜像历史
      docker history --no-trunc nginx # 显示完整的创建指令(不截断)
  10. docker save

    • 功能 :将一个或多个镜像保存到一个归档文件(通常是 .tar 格式)。用于备份镜像或迁移到其他未联网的 Docker 主机。

    • 常用选项

      • -o, --output: 指定输出归档文件的路径和名称。
    • 格式docker save [OPTIONS] IMAGE [IMAGE...]

    • 示例

      bash 复制代码
      docker save -o nginx.tar nginx:latest # 保存 nginx:latest 到 nginx.tar
      docker save -o allimages.tar image1 image2 # 保存多个镜像到一个文件
      docker save nginx:latest > nginx.tar # 使用重定向 (功能同 -o)
  11. docker load

    • 功能 :从归档文件(通常由 docker save 生成)中加载一个或多个镜像到本地镜像仓库。

    • 常用选项

      • -i, --input: 指定要加载的归档文件路径。
      • -q, --quiet: 静默模式,仅输出镜像名称。
    • 格式docker load [OPTIONS]

    • 示例

      bash 复制代码
      docker load -i nginx.tar # 从 nginx.tar 加载镜像
      docker load < allimages.tar # 使用重定向加载
  12. docker commit

    • 功能 :将一个运行中或已停止的容器的当前状态(主要是可写层的变化)提交为一个新的镜像。这相当于手动创建镜像,通常用于调试或保存临时修改,不推荐 作为构建镜像的常规方式(应使用 Dockerfile)。

    • 常用选项

      • -a, --author: 指定镜像作者。
      • -c, --change: 使用 Dockerfile 指令修改提交的镜像(如 CMD, ENV)。
      • -m, --message: 提交信息。
    • 格式docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

    • 示例

      bash 复制代码
      docker commit -m "Added config" mycontainer mynewimage:temp # 将容器状态保存为新镜像
  13. docker import

    • 功能 :从 tar 归档文件(通常包含一个文件系统)创建一个新的镜像。这个归档文件可以是 docker export 导出的容器文件系统,也可以是一个操作系统根文件系统的 tar 包。

    • docker load 区别

      • docker load 加载的是由 docker save 保存的完整镜像(包含历史层和元数据)。
      • docker import 导入的是一个扁平化的文件系统 tar 包,会丢弃所有历史记录和元数据,生成一个新的单层镜像。
    • 格式docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

    • 示例

      bash 复制代码
      docker import ubuntu-rootfs.tar myubuntu:custom # 从 rootfs 包创建镜像
      cat container.tar | docker import - mycontainer:snapshot # 通过管道导入

第二部分:Docker 容器管理命令详解

容器是镜像的运行实例。管理容器的生命周期是日常工作的核心。

  1. 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-shares CPU 共享权重(相对值)。
      -m, --memory 内存限制(如 512m, 2g)。
    • 格式docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

    • 说明

      • 如果 IMAGE 在本地不存在,Docker 会先尝试 docker pull
      • COMMANDARG 会覆盖 Dockerfile 中的 CMD 指令。
    • 示例

      bash 复制代码
      docker 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 # 设置容器总是重启
  2. docker create

    • 功能 :基于镜像创建一个新的容器,但不会自动启动 它。容器默认处于 created 状态。

    • 选项 :与 docker run 的大部分选项相同(如 --name, -p, -v, -e, --network 等),但没有 -d, -it, --rm 等与运行相关的选项。

    • 格式docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

    • 示例

      bash 复制代码
      docker create --name mycreatedcontainer nginx # 创建名为 mycreatedcontainer 的 nginx 容器
    • 用途 :通常用于在启动前对容器进行更复杂的配置,或者配合 docker start 使用。

  3. docker start

    • 功能 :启动一个或多个处于停止 (exited) 或创建 (created) 状态的容器。

    • 常用选项

      • -a, --attach: 附加到容器的 STDIN、STDOUT 和 STDERR。
      • -i, --interactive: 附加到容器的 STDIN(通常与 -a 一起使用)。
    • 格式docker start [OPTIONS] CONTAINER [CONTAINER...]

    • 示例

      bash 复制代码
      docker start mycreatedcontainer # 启动之前创建的容器
      docker start stopped_container # 启动已停止的容器
      docker start -a mycontainer # 启动并附加到输出
  4. docker stop

    • 功能:停止一个或多个正在运行的容器。默认情况下,Docker 会先发送 SIGTERM 信号,如果在超时期限(默认 10 秒)内容器未停止,则发送 SIGKILL 信号。

    • 常用选项

      • -t, --time: 指定停止超时时间(秒)。
    • 格式docker stop [OPTIONS] CONTAINER [CONTAINER...]

    • 示例

      bash 复制代码
      docker stop mynginx # 停止 mynginx 容器
      docker stop -t 5 container1 container2 # 停止两个容器,超时 5 秒
  5. docker restart

    • 功能 :重启一个或多个容器(无论当前是运行中还是已停止状态)。如果容器已停止,docker restart 会先启动它。过程等同于先 docker stopdocker start

    • 常用选项 :同 docker stop (-t)。

    • 格式docker restart [OPTIONS] CONTAINER [CONTAINER...]

    • 示例

      bash 复制代码
      docker restart mynginx # 重启 mynginx 容器
  6. docker kill

    • 功能:强制杀死(发送 SIGKILL 信号)一个或多个正在运行的容器。这是一种更直接、更暴力的停止方式,不会给容器清理的机会。

    • 常用选项

      • -s, --signal: 指定发送的信号(如 SIGINT, SIGHUP),默认为 SIGKILL
    • 格式docker kill [OPTIONS] CONTAINER [CONTAINER...]

    • 示例

      bash 复制代码
      docker kill unresponsive_container # 杀死无响应的容器
      docker kill -s SIGTERM container_id # 发送 SIGTERM 信号
  7. docker rm

    • 功能 :删除一个或多个容器(必须是停止状态,除非使用 -f)。

    • 常用选项

      • -f, --force: 强制删除正在运行的容器(会先发送 SIGKILL)。
      • -v, --volumes: 删除与容器关联的匿名卷(由 Dockerfile 中的 VOLUME 指令创建)。
    • 格式docker rm [OPTIONS] CONTAINER [CONTAINER...]

    • 示例

      bash 复制代码
      docker rm stopped_container # 删除已停止的容器
      docker rm -f running_container # 强制删除运行中的容器
      docker rm -v container_with_volume # 删除容器及其匿名卷
      docker rm $(docker ps -aq) # 删除所有容器(危险!慎用)
  8. docker ps

    • 功能最常用命令之一。列出当前正在运行的容器。

    • 常用选项

      选项 描述 补充说明
      -a, --all 显示所有容器(包括停止的)
      -q, --quiet 仅显示容器 ID 适合脚本处理场景
      -s, --size 显示容器大小(文件系统使用量)
      --filter 根据条件过滤容器 支持 status=runningname=web*ancestor=nginx 等条件
      --format 使用 Go 模板格式化输出 --format "{``{.ID}}: {``{.Names}}"
      -n, --last 显示最近创建的 n 个容器(包括所有状态) -n 3 显示最近 3 个容器
      -l, --latest 显示最近创建的容器(包括所有状态) 等价于 --last 1
    • 格式docker ps [OPTIONS]

    • 示例

      bash 复制代码
      docker 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 指定或随机生成)。
  9. docker exec

    • 功能 :在正在运行的容器内部执行指定的命令。常用于进入容器内部进行调试、管理或执行一次性任务。

    • 常用选项

      • -it: 组合使用,分配伪终端并保持 STDIN 打开,用于交互式命令(如 /bin/bash, /bin/sh)。
      • -e, --env: 设置执行命令时的环境变量。
      • --user: 指定执行命令的用户名或 UID。
      • -w, --workdir: 设置命令的工作目录。
    • 格式docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

    • 示例

      bash 复制代码
      docker exec -it mynginx /bin/bash # 进入 mynginx 容器的 bash shell
      docker exec mycontainer ls /app # 在容器内执行 ls /app 命令
      docker exec -e DEBUG=true myapp ./script.sh # 设置环境变量并执行脚本
  10. 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

    • 示例

      bash 复制代码
      docker logs myapp # 查看 myapp 容器的日志
      docker logs -f mynginx # 实时查看 nginx 日志
      docker logs --tail 50 -t mycontainer # 查看最后50条带时间戳的日志
  11. docker inspect (容器)

    • 功能 :获取 Docker 容器的详细信息(元数据),以 JSON 格式输出。信息比 docker ps 详细得多。

    • 输出内容:包含容器的 ID、名称、创建时间、状态、镜像、命令、参数、网络配置(IP、网关、端口映射)、挂载点、环境变量、重启策略、资源限制、日志驱动配置等。

    • 格式docker inspect [OPTIONS] CONTAINER [CONTAINER...]

    • 示例

      bash 复制代码
      docker inspect mynginx # 查看 mynginx 容器的所有信息
      docker inspect --format '{{.NetworkSettings.IPAddress}}' mycontainer # 仅提取容器IP
      docker inspect --format '{{.HostConfig.RestartPolicy.Name}}' mycontainer # 查看重启策略
  12. docker top

    • 功能 :显示容器内正在运行的进程信息(类似于在容器内运行 ps -ef)。

    • 格式docker top CONTAINER [ps OPTIONS]

    • 示例

      bash 复制代码
      docker top myapp # 显示 myapp 容器内的进程
      docker top mynginx aux # 显示类似 'ps aux' 的进程信息
  13. docker rename

    • 功能:为容器指定一个新的名称。

    • 格式docker rename OLD_NAME NEW_NAME

    • 示例

      bash 复制代码
      docker rename old_name new_name # 将容器 old_name 重命名为 new_name
  14. docker attach

    • 功能:将本地终端的 STDIN、STDOUT、STDERR 附加到一个正在运行的容器上。这使你能够看到容器的输出并与之交互(如果容器启动时配置了交互式终端)。

    • 注意

      • 如果同时附加多个终端,所有输入会发送到容器,所有输出会显示在所有附加的终端上。
      • 退出附加(如按 Ctrl+C)可能会影响容器的运行,取决于容器内的进程如何处理信号。通常使用 docker exec -it 进入容器更安全可控。
      • 要从附加会话中分离而不停止容器,使用序列 Ctrl+P + Ctrl+Q
    • 格式docker attach [OPTIONS] CONTAINER

    • 示例

      bash 复制代码
      docker attach myinteractivecontainer # 附加到交互式容器
  15. docker cp

    • 功能:在容器和本地宿主机文件系统之间复制文件或目录。

    • 格式

      • 从容器复制到主机:docker cp CONTAINER:SRC_PATH DEST_PATH
      • 从主机复制到容器:docker cp SRC_PATH CONTAINER:DEST_PATH
    • 说明SRC_PATHDEST_PATH 可以是文件或目录。容器路径必须是绝对路径。

    • 示例

      bash 复制代码
      docker cp mycontainer:/app/logs/app.log ./ # 从容器复制文件到当前目录
      docker cp ./config.ini mycontainer:/etc/app/ # 从主机复制文件到容器目录
      docker cp mycontainer:/var/www/html ./website_backup # 复制容器目录到主机
  16. docker diff

    • 功能:显示容器文件系统自创建以来,与它基于的镜像相比发生了哪些更改(A: 添加的文件/目录,C: 修改的文件/目录,D: 删除的文件/目录)。

    • 格式docker diff CONTAINER

    • 示例

      bash 复制代码
      docker diff mycontainer # 查看 mycontainer 的文件系统变更
  17. docker pause / docker unpause

    • 功能

      • pause: 暂停一个或多个运行容器内的所有进程。
      • unpause: 恢复一个或多个被暂停容器内的所有进程。
    • 说明:暂停进程会冻结它们的 CPU 时间片,但不会释放内存等资源。主要用于临时冻结容器状态。

    • 格式

      bash 复制代码
      docker pause CONTAINER [CONTAINER...]
      docker unpause CONTAINER [CONTAINER...]
    • 示例

      bash 复制代码
      docker pause myapp # 暂停 myapp 容器
      docker unpause myapp # 恢复 myapp 容器
  18. docker port

    • 功能 :列出容器端口映射的配置信息(即 docker run -pDockerfile EXPOSE 的结果),或查找将容器的特定端口映射到宿主机的哪个端口。

    • 格式

      • 列出所有映射:docker port CONTAINER
      • 查找特定容器端口:docker port CONTAINER PRIVATE_PORT[/PROTO]
    • 示例

      bash 复制代码
      docker port mynginx # 列出 mynginx 的所有端口映射
      docker port mynginx 80 # 查看容器 80 端口映射到宿主机哪个端口
  19. docker stats

    • 功能:实时显示一个或多个容器的资源使用情况统计(CPU、内存、网络 I/O、块 I/O、进程数)。

    • 常用选项

      • -a, --all: 显示所有容器(默认只显示运行的)。
      • --no-stream: 仅显示当前状态,不实时更新。
    • 格式docker stats [OPTIONS] [CONTAINER...]

    • 示例

      bash 复制代码
      docker stats # 实时显示所有运行中容器的资源使用
      docker stats myapp mydb # 实时显示 myapp 和 mydb 的资源使用
      docker stats --no-stream container_id # 获取 container_id 的当前资源快照
  20. docker update

    • 功能:更新一个或多个运行中容器的配置(如 CPU、内存限制、重启策略)。通常不需要停止容器。

    • 可更新选项--cpu-shares, --cpus, --memory, --memory-swap, --restart, --blkio-weight 等资源限制和策略。

    • 格式docker update [OPTIONS] CONTAINER [CONTAINER...]

    • 示例

      bash 复制代码
      docker update --memory 1g myapp # 将 myapp 容器的内存限制改为 1GB
      docker update --restart=on-failure:5 mycontainer # 更新重启策略
  21. docker wait

    • 功能:阻塞命令行,直到指定的一个或多个容器停止运行,然后打印出它们的退出代码。

    • 格式docker wait CONTAINER [CONTAINER...]

    • 示例

      bash 复制代码
      docker wait mycontainer # 等待 mycontainer 停止并显示其退出码
  22. docker export

    • 功能 :将容器的文件系统导出为一个 tar 归档文件。注意:导出的是容器的当前文件系统快照,不包括历史层、元数据或容器运行所需的其他信息(如端口、环境变量)。

    • 格式docker export [OPTIONS] CONTAINER

    • 常用选项

      • -o, --output: 指定输出文件。
    • 示例

      bash 复制代码
      docker export -o container_fs.tar mycontainer # 导出容器文件系统到 tar 包
      docker export mycontainer > snapshot.tar # 使用重定向
    • 用途 :通常用于检查容器内的文件,或配合 docker import 创建新镜像(会丢失历史)。

  23. docker events

    • 功能:从 Docker 守护进程获取实时事件流(如容器创建、启动、停止、销毁、镜像拉取、删除等)。

    • 常用选项

      • --filter: 过滤事件类型(如 event=create, type=container, image=nginx)。
      • --since: 显示自某个时间点之后的事件。
      • --until: 显示到某个时间点之前的事件。
    • 格式docker events [OPTIONS]

    • 示例

      bash 复制代码
      docker 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 编写等更高级的主题。

相关推荐
.柒宇.2 小时前
Python 运维实战:psutil 监控系统资源 + paramiko 远程管理服务器
运维·服务器·python
王的宝库2 小时前
【K8s】集群安全机制(二):授权(Authorization)详解与实战
学习·云原生·容器·kubernetes
henry_20162 小时前
让 AI 编程助手拥有“记忆“:Mem0 OpenMemory MCP 部署到 K8s 全记录(踩坑 + 解决方案)
人工智能·ai·容器·kubernetes·kiro
东北甜妹3 小时前
Docker 多阶段构建
运维·docker·容器
Zhu7583 小时前
【软件部署】docker环境部署nagios
运维·docker·容器
IT从业者张某某3 小时前
Docker 网络
网络·docker·容器
火车叼位3 小时前
告别资源管理器卡顿:Windows 高效复制万级小文件的正确姿势
运维
Cat_Rocky3 小时前
Docker镜像瘦身
运维·docker·容器
向宇it3 小时前
获取服务器hung住时的崩溃日志并自动系统重启——监听服务器异常崩溃问题
运维·服务器