简介
本全面教程探讨了 Docker 容器管理的关键方面,为开发者和系统管理员提供有效控制和优化容器操作的基本技术。通过掌握容器生命周期、资源管理和操作策略,你将提高精确且高效地部署、监控和扩展容器化应用程序的能力。
本全面教程探讨了 Docker 容器管理的关键方面,为开发者和系统管理员提供有效控制和优化容器操作的基本技术。通过掌握容器生命周期、资源管理和操作策略,你将提高精确且高效地部署、监控和扩展容器化应用程序的能力。
Docker 容器是一个轻量级的、独立的、可执行的软件包,它包含运行应用程序所需的一切:代码、运行时环境、系统工具、库和设置。与虚拟机不同,容器虚拟化的是操作系统而非硬件,这使得它们更高效且便于移植。
| 特性 | 描述 |
|---|---|
| 隔离性 | 容器在隔离的环境中运行 |
| 轻量级 | 资源消耗极少 |
| 可移植性 | 能够在不同平台上一致地运行 |
| 可扩展性 | 易于扩展或缩减 |
docker pull ubuntu:22.04
docker run -it --name my-container ubuntu:22.04 /bin/bash
## 列出正在运行的容器
docker ps
## 列出所有容器
docker ps -a
LabEx 提供了实践 Docker 容器环境,帮助开发者在实际场景中练习和理解容器技术。
Docker 容器具有多种状态,可以通过特定命令进行控制。了解这些状态对于有效管理容器至关重要。
| 命令 | 操作 | 描述 |
|---|---|---|
docker create |
创建 | 准备一个容器但不启动它 |
docker start |
启动 | 启动一个已停止的容器 |
docker run |
创建 + 启动 | 创建并立即启动一个容器 |
docker stop |
停止 | 优雅地停止一个正在运行的容器 |
docker restart |
重启 | 停止然后启动一个容器 |
docker pause |
暂停 | 暂停容器中的所有进程 |
docker unpause |
取消暂停 | 恢复暂停的进程 |
docker rm |
删除 | 删除一个已停止的容器 |
## 创建一个新容器
docker create --name web-app nginx:latest
## 启动容器
docker start web-app
## 停止容器
docker stop web-app
## 删除容器
docker rm web-app
## 在分离模式下运行容器
docker run -d --name background-app ubuntu:22.04 sleep 3600
## 使用交互式 shell 运行容器
docker run -it --name test-container ubuntu:22.04 /bin/bash
## 始终重启一个容器
docker run -d --restart=always nginx:latest
## 失败时重启,最多重试 5 次
docker run -d --restart=on-failure:5 web-application
## 向容器发送特定信号
docker kill --signal=SIGTERM web-container
## 观察容器事件
docker events
## 检查容器详细信息
docker inspect web-container
LabEx 提供交互式环境来实践容器生命周期管理,帮助开发者掌握 Docker 容器控制技术。
容器资源管理对于优化性能、确保公平的资源分配以及防止系统过载至关重要。
| 策略 | 描述 | Docker 标志 |
|---|---|---|
| CPU 份额 | 相对 CPU 时间分配 | --cpu-shares |
| CPU 核心 | 限制特定 CPU 核心 | --cpuset-cpus |
| CPU 周期 | 控制 CPU 分配时间 | --cpu-period |
| CPU 配额 | 限制 CPU 使用百分比 | --cpu-quota |
## 将容器限制为一个 CPU 核心的 50%
docker run -d --cpus=0.5 nginx:latest
## 将容器分配到特定的 CPU 核心
docker run -d --cpuset-cpus="0,1" web-app
## 设置 CPU 份额(默认是 1024)
docker run -d --cpu-shares=512 background-service
## 设置硬内存限制
docker run -d --memory=500m nginx:latest
## 设置带有预留的软内存限制
docker run -d --memory=1g --memory-reservation=750m web-app
## 防止容器消耗过多内存
docker run -d --oom-kill-disable=false --memory=500m app
## 创建一个命名卷
docker volume create app-data
## 将卷挂载到容器
docker run -v app-data:/app/data nginx:latest
## 限制容器的磁盘 I/O
docker run --device-write-bps /dev/sda:10mb web-app
## 限制网络带宽
docker run --net-alias=limited-network \
--network-bandwidth=100kbps \
web-service
## 控制网络连接限制
docker run --ulimit nproc=50 app-container
## 实时容器资源统计信息
docker stats
## 检查容器资源配置
docker inspect --format '{{.HostConfig.Memory}}' container-name
| 工具 | 用途 |
|---|---|
| cAdvisor | 容器监控 |
| Prometheus | 指标收集 |
| Grafana | 可视化 |
LabEx 提供全面的实践环境来练习高级 Docker 资源管理技术,帮助开发者优化容器性能和效率。
了解 Docker 容器操作对于现代软件开发和部署至关重要。本教程为你提供了管理容器生命周期、控制资源以及实施最佳实践的基本技能。通过应用这些技术,你可以创建更强大、可扩展且高效的容器化环境,从而简化你的开发和运营工作流程。