Docker 使用入门

Docker 使用入门

八月 28, 2025 次阅读

在学习使用 Docker 之前,深入理解 Docker 镜像仓库的概念至关重要。镜像仓库是 Docker 生态系统的核心组件,为镜像的存储、管理和分发提供了基础设施支持。

一、Docker Registry 架构解析

1.1 核心概念定义

镜像仓库 (Docker Registry) 是集中存储和分发 Docker 镜像的服务,它提供以下核心功能:

  • 镜像的存储与管理
  • 版本控制与标签管理
  • 用户认证与权限控制
  • 镜像检索与索引服务

1.2 层次化组织结构

镜像仓库采用分层化的组织结构:

Registry (镜像仓库) → Repository (仓库) → Image (镜像) → Tag (标签)

具体说明:

  • Registry: 通过 DNS 或 IP 地址标识的镜像仓库服务(如 hub.docker.com
  • Repository: 包含特定 Docker 镜像所有版本的集合,分为:
    • 顶层仓库: 如 nginx, ubuntu
    • 用户仓库: 格式为 用户名/仓库名,如 alpine/nginx
  • Tag: 标识同一镜像的不同版本,如 nginx:latest, nginx:1.25

1.3 技术实现架构

每个容器镜像包含两个组成部分:

  • 元数据 (Metadata): 描述镜像的层次结构、校验和、构建历史等信息
  • 存储数据 (Blob): 实际的文件系统层内容,占用主要存储空间

镜像仓库的整体视图如下:

registry

二、镜像仓库分类体系

2.1 按访问权限划分

(1)公有仓库 (Public Registry)

  • 典型代表: Docker Hub, Quay.io
  • 特点: 面向公众开放,通常无需认证即可下载镜像
  • 适用场景: 开源项目、公共基础镜像分发

(2)私有仓库 (Private Registry)

  • 部署位置: 私有网络环境
  • 特点: 需要身份认证,提供更高的安全性和隐私保护
  • 适用场景: 企业内部镜像管理、敏感应用部署

2.2 按服务提供商划分

(1)赞助仓库 (Sponsor Registry)

  • 第三方提供商运营
  • 面向 Docker 社区和客户使用

(2)镜像仓库 (Mirror Registry)

  • 第三方提供的镜像代理服务
  • 通常需要注册使用(如阿里云镜像服务)

(3)供应商仓库 (Vendor Registry)

  • 由软件供应商直接提供
  • 如 Google Container Registry, RedHat Quay

(4)私有仓库 (Private Registry)

  • 企业自建的内部分发体系
  • 提供完整的隔离和安全保障

三、镜像仓库工作流程

3.1 核心操作流程

Docker 镜像仓库的标准工作流程包含以下关键步骤:

  1. 身份认证: docker login 登录到目标仓库
  2. 镜像拉取: docker pull 从仓库下载所需镜像
  3. 镜像构建: 通过 Dockerfile 或 commit 制作新镜像
  4. 镜像推送: docker push 将镜像上传至仓库

注意: 拉取公共镜像通常无需登录,但推送镜像必须通过身份认证。

3.2 多环境分发流程

在现代软件开发流程中,镜像通过仓库在不同环境间流转:

work

环境角色说明:

  • 开发环境: 开发人员构建和测试镜像的环境
  • 测试环境: 质量保证团队进行功能验证的环境
  • 预发布环境: 模拟生产环境进行最终验证
  • 生产环境: 面向终端用户的正式运行环境

3.3 本地缓存机制

Docker Daemon 的智能缓存策略:

  • 启动容器时优先检查本地镜像缓存
  • 本地缺失时自动从配置的 Registry 下载
  • 下载的镜像持久化存储在本地,加速后续使用

为了更好地理解镜像仓库的概念,我们可以用超市购物来类比:

  • Registry = 整个超市(如沃尔玛、家乐福)
  • Repository = 商品类别(饮料区、零食区、日用品区)
  • Image = 具体商品(可乐、薯片、洗发水)
  • Tag = 商品规格(330ml 罐装、500ml 瓶装、家庭装)

这种层次化的组织结构使得海量镜像的管理和检索变得高效而有序。

Docker 镜像仓库作为容器化生态的基石,提供了完整的镜像生命周期管理能力。通过理解其架构设计、分类体系和工作原理,开发者能够更好地利用 Docker 技术实现高效的应用构建、分发和部署。掌握镜像仓库的使用是 Docker 技术栈中不可或缺的核心技能。

四、常见镜像仓库

4.1 Docker Hub

Docker HubDocker 提供的托管存储库服务,用于查找容器映像并与您的团队共享。具有以下功能:
(1)个人可以注册私有仓库,能够发布自己的镜像
(2)提供镜像检索能力
(3)提供海量官方和认证组织的镜像
(4)从 GitHubBitbucket 自动构建容器镜像并将它们推送到 Docker Hub
(5)支持 webhook(webhook 是一种基于 HTTP 的回调函数,发生指定的事件时,服务器会自动将相关的有效负载发送到客户端的 webhook URL。 )

Docker Hub 功能强大,下面列举几个非常常用的功能:

4.1.1 镜像搜索

用户可以通过关键字搜索功能,快速找到所需的镜像。

search

4.1.2 镜像 tag 查找

用户可以通过镜像的标签(tag)快速找到特定版本的镜像。

tag

通过对应的 tag 可以直接获取对应的版本拉取指令,一键 CP,简单无脑

command

4.2 国内镜像源

直接访问 docker hub 通常是比较慢的,因此很多国内云服务商提供了镜像加速服务。常见的国内镜像源包括:

  • 阿里云
https://<your-region>.mirror.aliyuncs.com
  • 腾讯云
https://mirror.ccs.tencentyun.com
  • 华为云
https://repo.huaweicloud.com
  • DaoCloud
https://www.daocloud.io/mirror

使用这些国内镜像源可以显著提高镜像拉取速度,减少构建时间。

4.3 私有仓库

私有镜像仓库是指部署在企业或组织内部网络环境中,专门用于内部 Docker 镜像存储、管理和分发的镜像仓库服务。在企业级 DevOps 流程中,私有仓库发挥着至关重要的作用。

核心价值与定位

私有镜像仓库在企业环境中具有以下关键价值:

  • 安全性保障:避免将敏感应用镜像暴露在公网环境中
  • 网络优化:内网传输显著提升镜像拉取和推送速度
  • 合规性要求:满足行业监管和数据本地化存储要求
  • 自主可控:完全掌握镜像的生命周期管理权限

在自动化发布体系中,私有仓库作为 CI/CD 流程的核心枢纽,通常承担以下职责:

  • 接收来自持续集成阶段构建的应用镜像
  • 为持续部署阶段提供稳定可靠的镜像源
  • 实现不同环境(开发、测试、生产)间的镜像版本控制

主流私有仓库解决方案

1. Harbor - 企业级 Registry 解决方案

产品背景

  • 由 VMware 公司开源的企业级 Docker Registry 项目
  • 在 Docker 官方开源 registry 基础上增强而来

核心特性

  • 可视化管理系统:提供友好的 Web 管理界面
  • 基于角色的访问控制(RBAC):精细化的权限管理体系
  • 企业集成能力:支持 AD/LDAP 认证集成
  • 安全审计功能:完整的操作日志记录和审计追踪
  • 多语言支持:原生支持中文界面
  • 高可用架构:支持多节点集群部署

技术架构

  • 采用微服务架构设计,各组件均以 Docker 容器形式运行
  • 使用 Docker Compose 或 Kubernetes 进行统一部署和管理
2. Nexus Repository - 通用制品仓库平台

产品背景

  • 由 Sonatype 公司开发的通用制品仓库管理平台
  • 最初作为 Maven 私服广泛应用,现已支持多种格式

核心特性

  • 多格式支持:同时支持 Maven、Docker、NPM、PyPI 等多种制品格式
  • 统一管理:单一平台管理所有类型的开发制品
  • 代理缓存:智能缓存公有仓库内容,减少外网依赖
  • 空间优化:高效的存储空间管理和垃圾回收机制
  • 扩展性强:丰富的插件生态系统和 API 接口

适用场景

  • 需要统一管理多种类型制品的异构技术栈环境
  • 已有 Nexus 作为 Maven 私服,希望扩展 Docker 支持的企业
3. Docker Registry - 官方轻量级解决方案

产品背景

  • Docker 官方提供的开源镜像仓库实现
  • 功能简洁,专注于核心的镜像存储和分发

核心特性

  • 轻量级设计:资源消耗低,部署简单快捷
  • 标准兼容:完全遵循 Docker Registry API 规范
  • 灵活存储:支持多种后端存储驱动(文件系统、S3、Azure Blob 等)
  • TLS 加密:支持 HTTPS 安全传输
  • 基础认证:提供基本的身份验证机制

适用场景

  • 小型团队或测试环境的快速搭建
  • 作为其他复杂解决方案的底层基础
  • 需要高度定制化开发的基础平台

技术选型建议

特性 Harbor Nexus Docker Registry
企业级功能 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐
易用性 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐
多格式支持 ⭐⭐ ⭐⭐⭐⭐⭐
部署复杂度 中等 中等 简单
社区生态 活跃 成熟 基础
适合规模 中大型企业 混合技术栈企业 小型团队

部署实践建议

  1. 存储规划:预留充足的存储空间,并考虑备份策略
  2. 网络配置:合理规划网络访问策略和域名解析
  3. 监控告警:建立完整的监控体系,包括磁盘空间、服务状态等
  4. 备份恢复:制定完善的备份和灾难恢复方案
  5. 权限管理:根据团队结构设计合理的权限分配方案

私有镜像仓库的选择应该基于企业的具体需求、技术栈现状和团队规模进行综合考量。对于大多数企业而言,Harbor 提供了最完整的开箱即用体验,而 Nexus 则更适合需要统一管理多种类型制品的复杂环境。

五、镜像仓库命令

5.1 docker login

简介:用于登录到 Docker 镜像仓库(如 Docker Hub、阿里云容器镜像服务等私有仓库)。登录后,你才拥有推送镜像到仓库或拉取私有镜像的权限。

基本用法

docker login [OPTIONS] [SERVER]
  • SERVER:镜像仓库地址(可选)。默认为 Docker Hub (https://index.docker.io/v1/)。如果使用私有仓库,需指定其地址,如 registry.example.com:5000
  • OPTIONS:常用选项包括 -u(用户名)和 -p(密码),但不建议直接在命令中输入密码,以免泄露。

示例

# 登录到 Docker Hub(交互式输入用户名和密码)
docker login

# 登录到私有仓库
docker login registry.example.com:5000

# 使用命令行参数登录(不推荐,因为密码会留在历史记录中)
docker login -u your_username -p your_password

注意事项

  • 登录凭证默认存储在 ~/.docker/config.json 文件中。

  • 出于安全考虑,更推荐使用 --password-stdin 选项从标准输入读取密码:

    echo "your_password" | docker login -u "your_username" --password-stdin

5.2 docker pull

简介:从镜像仓库拉取(下载)镜像或仓库到本地。这是获取和运行容器的基础。

基本用法

docker pull [OPTIONS] NAME[:TAG|@DIGEST]
  • NAME:镜像名称,格式通常为 [仓库地址/]用户名/仓库名
  • TAG:镜像标签(版本)。如果省略,默认为 latest
  • DIGEST:镜像的数字摘要,用于精确指定某个版本的镜像,比 TAG 更唯一、安全。

示例

# 从 Docker Hub 拉取最新的 Ubuntu 镜像
docker pull ubuntu

# 拉取指定标签的 Nginx 镜像(版本为 1.25-alpine)
docker pull nginx:1.25-alpine

# 从私有仓库拉取镜像
docker pull myregistry.com:5000/myapp:v1.0

# 通过镜像摘要拉取,确保内容绝对一致
docker pull ubuntu@sha256:abc123...

注意事项

  • 总是明确指定标签(如 :alpine, :v1.0)而非依赖默认的 latest,以确保环境的一致性,通过官网中的 tag 复制对应仓库对应版本的镜像拉取命令是一个好习惯。

5.3 docker push

简介:将本地的镜像标签推送到镜像仓库。这是分享和部署自定义镜像的关键步骤。

基本用法

docker push [OPTIONS] NAME[:TAG]
  • 推送前,必须先用 docker tag 命令将本地镜像命名为符合目标仓库规范的名称(仓库地址/用户名/仓库名:标签)。

示例

# 1. 首先,为本地镜像打上符合仓库规范的标签
docker tag my_local_image:latest your_username/your_repo:v1.0

# 2. 然后,推送到仓库
docker push your_username/your_repo:v1.0

# 推送到私有仓库
docker push myregistry.com:5000/your_repo:v1.0

注意事项

  • 推送前必须确保已通过 docker login 登录且有相应权限。
  • 镜像推送是分层的操作的,如果仓库中已存在相同的层,则不会重复上传,节省时间和带宽。

5.4 docker search

简介:在 Docker Hub 或其它配置的仓库中搜索镜像。用于发现官方或社区的可用镜像。

基本用法

docker search [OPTIONS] TERM
  • TERM:要搜索的关键词。
  • OPTIONS:常用选项包括 --limit(限制返回结果数量)和 --filter(过滤条件,如 is-official=true)。

示例

# 搜索与 "nginx" 相关的镜像
docker search nginx

# 只显示官方镜像
docker search --filter "is-official=true" nginx

# 只显示自动化构建的镜像
docker search --filter "is-automated=true" python

# 限制返回 5 个结果
docker search --limit 5 redis

注意事项

  • 搜索结果中的 OFFICIAL 标记表示是官方维护的镜像,通常更可靠。
  • STARS 数类似于 GitHub 的点赞数,可以作为流行度和社区认可度的参考。

5.5 docker logout

简介:从指定的 Docker 镜像仓库注销,清除本地存储的登录凭证。

基本用法

docker logout [SERVER]
  • SERVER:镜像仓库地址(可选)。默认为 Docker Hub。

示例

# 从 Docker Hub 注销
docker logout

# 从私有仓库注销
docker logout registry.example.com:5000

注意事项

  • 注销操作只会删除 ~/.docker/config.json 文件中的对应凭证,不会影响已运行的容器。
  • 在多用户系统或公共机器上操作后,及时注销是一个好习惯。

这五个命令构成了与 Docker 镜像仓库交互的核心工作流:

  1. 登录 (login) → 获取权限
  2. 搜索 (search) → 发现镜像
  3. 拉取 (pull) → 获取镜像
  4. 推送 (push) → 分享镜像
  5. 注销 (logout) → 退出登录

六、镜像命令

6.1 docker images

  • 功能
    列出本地存储的 Docker 镜像。

  • 语法

    docker images [OPTIONS] [REPOSITORY[:TAG]]
  • 别名

    docker image ls
    docker image list
  • 关键参数

    • -a, --all:显示所有镜像(包括中间镜像层,默认情况下会过滤掉中间镜像层)
    • --digests:显示镜像的摘要信息
    • -f, --filter:根据条件过滤显示结果
    • --format:使用 Go 模板格式化输出内容
    • --no-trunc:显示完整的镜像信息(不截断输出)
    • -q, --quiet:只显示镜像 ID
  • 使用示例

    # 列出本地所有镜像
    docker images
    
    # 列出特定的镜像(ubuntu 仓库的所有版本)
    docker images ubuntu
    
    # 显示所有镜像(包括中间层)
    docker images -a
    
    # 只显示镜像ID
    docker images -q
    
    # 显示完整的镜像信息(不截断)
    docker images --no-trunc
    
    # 使用过滤器显示特定标签的镜像
    docker images -f "reference=nginx:*"

6.2 docker image inspect

  • 功能
    显示镜像的详细信息,包括元数据、配置信息、层信息等。

  • 语法

    docker image inspect [OPTIONS] IMAGE [IMAGE...]
  • 关键参数

    • -f, --format:使用给定的 Go 模板格式化输出
  • 使用示例

    # 查看指定镜像的详细信息
    docker image inspect nginx:1.23.3
    
    # 查看多个镜像的信息
    docker image inspect ubuntu:22.04 alpine:latest
    
    # 使用格式输出只查看镜像的架构信息
    docker image inspect -f '{{.Architecture}}' nginx:1.23.3
    
    # 查看镜像的创建时间
    docker image inspect -f '{{.Created}}' nginx:1.23.3
    
    # 查看镜像的所有层(Layer)
    docker image inspect -f '{{.RootFS.Layers}}' nginx:1.23.3

6.3 docker tag

  • 功能
    为本地镜像创建新的标签,通常用于为镜像添加仓库地址前缀,为推送镜像到仓库做准备。

  • 语法

    docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
  • 别名

    docker image tag
  • 使用示例

    # 为本地镜像添加新的标签
    docker tag ubuntu:22.04 myregistry.com/myubuntu:22.04
    
    # 为镜像添加版本标签
    docker tag nginx nginx:1.23.3
    
    # 为镜像添加多个标签
    docker tag myapp:latest myregistry.com/myapp:v1.0
    docker tag myapp:latest myregistry.com/myapp:latest
    
    # 推送到私有仓库前的标签准备
    docker tag local-image:tag your-private-registry.com/username/repository:tag
  • 注意事项

    • docker tag 并不会创建新的镜像,只是为现有镜像添加了一个新的引用名称
    • 同一个镜像可以有多个标签,它们共享相同的镜像 ID
    • 删除一个标签不会删除镜像本身,只有当所有标签都被删除时,镜像才会被真正删除
    • 在推送镜像到仓库前,必须使用 docker tag 为镜像添加包含仓库地址的完整名称

七、容器命令

7.3 docker run

功能

创建一个新的容器并运行一个命令。这是 Docker 中最常用且最重要的命令之一,用于从镜像启动容器实例。

语法

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

别名

docker container run

关键参数详解

运行模式控制
  • -d, --detach:后台运行容器,并返回容器 ID。

    docker run -d nginx:alpine
  • -i, --interactive:以交互模式运行容器,保持 STDIN 打开。

  • -t, --tty:为容器分配一个伪终端。

    # 通常 -i 和 -t 一起使用,实现交互式终端
    docker run -it ubuntu:22.04 bash
容器标识
  • --name:为容器指定一个名称。

    docker run --name my-nginx nginx:alpine
  • -h, --hostname:指定容器的 hostname。

    docker run -h myhost ubuntu:22.04
    # 查看容器内的 hostname
    root@myhost:/# hostname
      myhost
端口映射
  • -P, --publish-all:将容器暴露的所有端口随机映射到主机端口。

    docker run -P nginx  # 映射到随机主机端口
  • -p, --publish:指定端口映射,格式:主机端口:容器端口

    docker run -p 8080:80 nginx        # 主机8080 → 容器80
    docker run -p 80:80 nginx          # 主机80 → 容器80
    docker run -p 127.0.0.1:8080:80 nginx  # 仅本地访问
资源限制
  • --cpuset-cpus:绑定容器到指定 CPU 运行。

    docker run --cpuset-cpus="0-2" ubuntu  # 使用0-2号CPU
    docker run --cpuset-cpus="0,1" ubuntu   # 使用0和1号CPU
  • -m, --memory:设置容器使用内存最大值。

    ┌─[root@VM-16-15-debian] - [/home/ljx/docker_test/namespace_test/test_dir2] - [1590]
    └─[$] docker run -d -m 512m nginx:stable-alpine3.21-perl      # 限制512MB内存
    844e981eb908a6208d2531732444da829408f718349c27ca57c25c2eac987d85
    # 查看容器资源使用情况
    ┌─[root@VM-16-15-debian] - [/home/ljx/docker_test/namespace_test/test_dir2] - [1590]
    └─[$] docker stats 844e981eb908a6208d2531732444da829408f718349c27ca57c25c2eac987d85
    CONTAINER ID   NAME                CPU %     MEM USAGE / LIMIT   MEM %     NET I/O       BLOCK I/O     PIDS
    844e981eb908   boring_mirzakhani   0.00%     2.957MiB / 512MiB   0.58%     876B / 126B   0B / 12.3kB   3
环境变量
  • -e, --env:设置环境变量。

    docker run -e MY_VAR=value ubuntu
    docker run -e DATABASE_URL=postgres://user:pass@host/db app
容器链接
  • --link:添加链接到另一个容器(已逐渐被网络功能替代)。

    docker run --link redis-container:redis app
容器生命周期
  • --rm:容器退出时自动删除容器文件系统。

    # 临时测试用,退出后自动清理
    docker run --rm -it ubuntu:22.04 /bin/bash

使用示例

# 后台运行nginx容器,命名为web,映射端口80
docker run -d --name web -p 80:80 nginx:alpine

# 交互式运行ubuntu容器,退出后自动删除
docker run --rm -it ubuntu:22.04 /bin/bash

# 运行容器并设置环境变量
docker run -e ENV=production -e DEBUG=false myapp:latest

# 限制容器资源使用
docker run -m 512m --cpuset-cpus="0-1" resource-limited-app

# 指定主机名和端口映射
docker run -h myapp -p 8080:3000 myapp:latest

注意事项

  1. 如果没有指定 COMMAND,容器将运行镜像中定义的默认命令
  2. 使用 -d 后台运行时,可以使用 docker logs 查看输出
  3. --rm 选项适合临时测试,生产环境通常需要持久化容器
  4. 端口映射时确保主机端口没有被其他进程占用
  5. 资源限制参数有助于防止单个容器消耗过多主机资源

7.4 docker ps

功能

列出容器。这是 Docker 中最常用的监控和管理命令之一,用于查看当前容器运行状态。

语法

docker ps [OPTIONS]

别名

docker container ls
docker container list
docker container ps

关键参数详解

显示范围控制
  • -a, --all:显示所有容器,包括停止的容器。

    docker ps -a
  • -f, --filter:根据条件过滤显示结果。

    docker ps -f "name=web"
    docker ps -f "status=running"
  • -n, --last:显示最近创建的 n 个容器(包括所有状态)。

    docker ps -n 3
显示格式控制
  • -q, --quiet:只显示容器 ID。

    docker ps -q
  • --no-trunc:显示完整信息,不截断输出。

    docker ps --no-trunc
  • --format:使用 Go 模板格式化输出。

    docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"
  • -s, --size:显示容器文件大小。

    docker ps -s
时间显示
  • -l, --latest:显示最近创建的容器(包括所有状态)。

    docker ps -l

输出列说明

执行 docker ps 后显示的表格包含以下重要列:

列名 说明
CONTAINER ID 容器的唯一标识符(通常显示前 12 位)
IMAGE 创建容器所使用的镜像名称
COMMAND 容器启动时运行的命令
CREATED 容器创建时间
STATUS 容器状态(Up 表示运行中,Exited 表示已退出)
PORTS 端口映射信息
NAMES 容器名称

过滤器常用用法

过滤器是 docker ps 的强大功能,支持多种过滤条件:

# 按名称过滤
docker ps -f "name=web"

# 按状态过滤
docker ps -f "status=running"   # 运行中的容器
docker ps -f "status=exited"    # 已停止的容器
docker ps -f "status=created"   # 已创建但未运行的容器

# 按镜像过滤
docker ps -f "ancestor=nginx"   # 使用nginx镜像的容器

# 按退出代码过滤
docker ps -a -f "exited=0"      # 正常退出的容器
docker ps -a -f "exited=1"      # 异常退出的容器

# 按标签过滤
docker ps -f "label=environment=production"

# 组合多个过滤器
docker ps -f "name=db" -f "status=running"

格式化输出示例

使用 --format 参数可以自定义输出格式:

# 只显示ID和名称
docker ps --format "table {{.ID}}\t{{.Names}}"

# 显示ID、名称、状态和端口
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"

# 以JSON格式输出
docker ps --format "{{json .}}"

# 自定义表格标题
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}" --format "ID\tNAME\tSTATUS"

使用示例

# 查看所有运行中的容器
docker ps

# 查看所有容器(包括已停止的)
docker ps -a

# 查看最近创建的2个容器
docker ps -n 2

# 只显示运行中容器的ID
docker ps -q

# 查看名称包含"web"的容器
docker ps -f "name=web"

# 查看所有异常退出的容器
docker ps -a -f "exited=1"

# 显示容器大小信息
docker ps -s

# 自定义格式输出
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

实际应用场景

  1. 快速查看容器状态

    # 日常监控
    docker ps
  2. 查找特定容器

    # 查找MySQL容器
    docker ps -f "name=mysql"
  3. 批量操作容器

    # 停止所有运行中的容器
    docker stop $(docker ps -q)
    
    # 删除所有已停止的容器
    docker rm $(docker ps -a -q -f "status=exited")
  4. 故障排查

    # 查看异常退出的容器
    docker ps -a -f "exited=1"
  5. 资源监控

    # 查看容器占用空间
    docker ps -s

注意事项

  1. 默认情况下 docker ps 只显示运行中的容器
  2. 使用 -a 参数可以查看所有状态的容器
  3. 过滤器功能非常强大,可以组合多个条件进行精确查询
  4. 格式化输出适合编写脚本和自动化工具
  5. 容器 ID 的前几个字符通常就足够唯一标识一个容器

docker ps 是 Docker 日常管理中最基础且重要的命令,熟练掌握其各种参数和用法能够极大提高容器管理效率。