如何在 Linux 上创建和管理 Docker 容器

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本全面的 Docker 容器教程为开发者和 IT 专业人员深入介绍了容器基础,探讨了容器化技术的核心原理。通过了解 Docker 的架构、生命周期管理和操作策略,学习者将获得在各种计算环境中构建、部署和管理现代软件应用程序的实用技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/restart("Restart Container") docker/ContainerOperationsGroup -.-> docker/logs("View Container Logs") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") subgraph Lab Skills docker/start -.-> lab-392937{{"如何在 Linux 上创建和管理 Docker 容器"}} docker/stop -.-> lab-392937{{"如何在 Linux 上创建和管理 Docker 容器"}} docker/restart -.-> lab-392937{{"如何在 Linux 上创建和管理 Docker 容器"}} docker/logs -.-> lab-392937{{"如何在 Linux 上创建和管理 Docker 容器"}} docker/info -.-> lab-392937{{"如何在 Linux 上创建和管理 Docker 容器"}} docker/version -.-> lab-392937{{"如何在 Linux 上创建和管理 Docker 容器"}} end

Docker 容器基础

什么是 Docker 容器?

Docker 容器是一种轻量级、独立的可执行软件包,其中包含运行应用程序所需的一切:代码、运行时环境、系统工具、库和设置。容器化使开发者能够在不同的计算平台上创建一致的环境。

容器架构概述

graph TD A[应用程序代码] --> B[容器镜像] B --> C[Docker 容器] C --> D[主机操作系统]

关键容器特性

特性 描述
隔离 容器使用专用资源独立运行
可移植性 可以在不同环境中一致地部署
效率 与传统虚拟机相比更轻量级
可扩展性 易于复制并进行水平扩展

基本的 Docker 容器命令

Ubuntu 22.04 提供了简单的 Docker 容器管理:

## 拉取官方 Docker 镜像
docker pull ubuntu:latest

## 创建并运行一个新容器
docker run -it ubuntu:latest /bin/bash

## 列出正在运行的容器
docker ps

## 列出所有容器
docker ps -a

## 停止正在运行的容器
docker stop [容器 ID]

容器生命周期管理

容器会经历几个状态:已创建、正在运行、已暂停、已停止和已删除。每个状态代表容器操作生命周期中的一个特定阶段。

容器化的好处

容器化在现代软件开发中具有显著优势:

  • 一致的开发环境
  • 更快的部署流程
  • 降低基础设施复杂性
  • 提高资源利用率
  • 增强应用程序可移植性

技术实现示例

## 创建一个简单的 Web 应用程序容器
docker run -d -p 8080:80 nginx:latest

此命令展示了使用 Docker 容器可以多么快速地部署 Web 服务器,突出了该技术的简单性和效率。

容器生命周期管理

容器状态转换

Docker 容器在其运行生命周期中会经历多个状态,代表执行和管理的不同阶段。

stateDiagram-v2 [*] --> Created Created --> Running Running --> Paused Paused --> Running Running --> Stopped Stopped --> Running Stopped --> [*]

容器状态管理命令

状态 Docker 命令 描述
创建 docker create 准备容器但不启动
启动 docker start 启动已停止的容器
停止 docker stop 优雅地终止正在运行的容器
暂停 docker pause 冻结容器进程
重启 docker restart 停止并立即重启容器

重启策略

Ubuntu 22.04 Docker 配置支持多种重启策略:

## 始终重启策略
docker run -d --restart=always nginx:latest

## 仅在失败时重启
docker run -d --restart=on-failure nginx:latest

## 以最大重试次数重启
docker run -d --restart=on-failure:3 nginx:latest

容器恢复机制

重启策略可实现容器的自动恢复:

  • 处理意外的容器终止
  • 保持服务可用性
  • 可配置的重试机制
  • 支持不同的恢复场景

实际生命周期管理示例

## 监控容器生命周期
docker events

## 检查容器状态
docker inspect [容器 ID]

## 查看容器日志
docker logs [容器 ID]

这些命令提供了全面的容器状态跟踪和管理功能。

高级 Docker 操作

容器健康状态监测

Docker 提供了完善的机制来跟踪容器的性能和可靠性:

graph TD A[容器健康检查] --> B[就绪探针] A --> C[存活探针] B --> D[服务可用性] C --> E[自动恢复]

健康检查配置

## 自定义健康检查配置
HEALTHCHECK --interval=5s --timeout=3s \
  CMD curl -f || exit 1

性能优化策略

策略 描述 影响
资源限制 CPU/内存约束 防止资源耗尽
多阶段构建 减小镜像大小 提高部署效率
卷管理 持久数据处理 增强数据持久性

容器扩展技术

## 使用 Docker Swarm 进行水平扩展
docker service create --replicas 5 nginx:latest

## 动态扩展
docker service scale web=10

高级网络配置

## 创建自定义网络
docker network create --driver bridge isolated_network

## 将容器连接到特定网络
docker run --network=isolated_network nginx:latest

性能监测命令

## 实时容器统计信息
docker stats

## 资源使用情况分析
docker system df

## 容器性能指标
docker top [容器 ID]

容器安全增强措施

## 以有限权限运行容器
docker run --read-only nginx:latest

## 禁用容器的 root 访问权限
docker run --security-opt=no-new-privileges nginx:latest

总结

Docker 容器化是一种变革性的软件开发和部署方法,提供了前所未有的灵活性、效率和可移植性。通过掌握容器管理技术,开发者可以创建一致、可扩展且轻量级的应用程序环境,从而简化开发工作流程并降低基础设施的复杂性。成功实现容器化的关键在于理解容器生命周期、利用 Docker 的强大工具集,以及实施资源管理和应用程序隔离的最佳实践。