简介
Docker 通过提供轻量级、可移植的容器化解决方案,彻底改变了软件部署方式。了解如何查看和管理你的 Docker 容器清单,对开发者和系统管理员而言至关重要。本教程将指导你通过各种方法,在不同场景下有效地列出、检查和跟踪 Docker 容器。
Docker 容器概述
什么是 Docker 容器?
Docker 容器是一个轻量级、独立的可执行软件包,它包含运行一段软件所需的一切,包括代码、运行时环境、系统工具、库和设置。容器为不同计算平台上的应用程序提供了一致且可重现的环境。
Docker 容器的关键特性
隔离性
容器将应用程序与主机系统及其他容器隔离开来,确保每个应用程序都在自己的环境中运行,互不干扰。
graph TD
A[主机操作系统] --> B[容器 1]
A --> C[容器 2]
A --> D[容器 3]
可移植性
容器可以在从开发到生产的不同环境中持续运行,减少“在我的机器上能运行”这类问题。
高效性
与传统虚拟机相比,容器的资源利用效率更高,因为它们共享主机系统的内核,开销更小。
容器与虚拟机对比
| 特性 | Docker 容器 | 虚拟机 |
|---|---|---|
| 资源使用 | 轻量级 | 重量级 |
| 启动时间 | 秒级 | 分钟级 |
| 隔离级别 | 进程级 | 完整系统级 |
| 性能 | 高 | 低 |
常见用例
- 微服务架构
- 持续集成/持续部署(CI/CD)
- 云原生应用开发
- 开发与测试环境
基本的 Docker 容器工作流程
graph LR
A[Docker 镜像] --> B[创建容器]
B --> C[启动容器]
C --> D[运行应用程序]
D --> E[停止容器]
E --> F[移除容器]
通过 LabEx 入门
为了通过实践学习 Docker 容器并获得实际经验,LabEx 提供交互式环境和全面的教程,帮助开发者掌握容器技术。
查看容器清单
基本的 Docker 容器列出命令
列出正在运行的容器
要查看当前正在运行的容器,请使用 docker ps 命令:
docker ps
列出所有容器(包括已停止的)
要查看所有容器,包括已停止的容器:
docker ps -a
高级容器列出技巧
过滤容器
Docker 提供了强大的过滤选项来查看特定的容器:
## 按状态过滤
docker ps -f "status=running"
## 按镜像过滤
docker ps -f "ancestor=ubuntu:latest"
自定义输出格式
使用特定列来自定义容器列表:
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Status}}"
容器清单可视化
graph TD
A[Docker 命令] --> B{列出类型}
B --> |正在运行的容器| C[docker ps]
B --> |所有容器| D[docker ps -a]
B --> |过滤后的容器| E[docker ps -f]
详细的容器信息
检查特定容器
获取有关特定容器的详细信息:
docker inspect [容器 ID]
容器清单属性
| 属性 | 描述 | 示例 |
|---|---|---|
| 容器 ID | 唯一的容器标识符 | a1b2c3d4e5f6 |
| 镜像 | 使用的基础镜像 | ubuntu:latest |
| 命令 | 正在运行的命令 | /bin/bash |
| 创建时间 | 容器创建时间 | 2 小时前 |
| 状态 | 当前容器状态 | 已运行 45 分钟 |
| 端口 | 暴露的端口 | 80/tcp |
| 名称 | 容器名称 | friendly_newton |
LabEx Pro 提示
在处理 Docker 容器清单时,LabEx 建议在受控环境中练习这些命令,以建立肌肉记忆并加深理解。
实际场景
- 监控容器生命周期
- 排查容器部署故障
- 管理多个容器环境
- 审计容器资源
容器管理技术
容器生命周期管理
启动容器
使用 docker start 命令启动容器:
docker start [容器 ID]
停止容器
优雅地停止正在运行的容器:
docker stop [容器 ID]
重启容器
使用单个命令重启容器:
docker restart [容器 ID]
容器生命周期工作流程
graph TD
A[创建容器] --> B[启动容器]
B --> C{容器状态}
C --> |运行中| D[执行命令]
C --> |已停止| E[重启/移除]
D --> F[停止容器]
F --> G[移除容器]
高级容器管理
交互式运行容器
在容器内启动交互式 shell:
docker run -it ubuntu:latest /bin/bash
在运行的容器中执行命令
在活动容器中运行命令:
docker exec [容器 ID] 命令
容器资源管理
限制容器资源
控制 CPU 和内存使用:
docker run --cpus=2 --memory=1g ubuntu:latest
资源使用监控
跟踪容器性能:
docker stats [容器 ID]
容器管理技术
| 技术 | 命令 | 描述 |
|---|---|---|
| 创建 | docker create | 准备容器但不启动 |
| 运行 | docker run | 创建并启动容器 |
| 停止 | docker stop | 优雅地停止容器 |
| 移除 | docker rm | 删除容器 |
| 暂停 | docker pause | 临时冻结容器 |
容器网络
端口映射
将容器端口暴露给主机:
docker run -p 8080:80 nginx:latest
创建自定义网络
创建隔离的容器网络:
docker network create mynetwork
docker run --network=mynetwork nginx:latest
容器备份与迁移
创建容器快照
从运行的容器生成镜像:
docker commit [容器 ID] myimage:backup
导出容器
保存容器状态以进行迁移:
docker export [容器 ID] > container.tar
LabEx 建议
对于全面的 Docker 容器管理,LabEx 建议在受控的模拟环境中练习这些技术,以培养实践技能。
最佳实践
- 始终使用资源限制
- 实施适当的容器监控
- 定期清理未使用的容器
- 对容器配置使用版本控制
- 实施安全扫描
总结
掌握 Docker 容器清单管理对于维护一个强大且高效的容器化环境至关重要。通过利用 Docker CLI 命令和高级过滤技术,你可以全面了解正在运行和已停止的容器,从而实现更好的资源管理和系统监控。



