如何在 Ubuntu 上设置 Docker 容器

DockerDockerBeginner
立即练习

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

简介

本全面的 Docker 教程为开发者和 IT 专业人员提供了理解容器化技术所需的关键技能。通过探索 Docker 的核心概念、架构和实际实施策略,学习者将获得实用知识,以简化应用程序部署并改进软件开发工作流程。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) 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/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") subgraph Lab Skills docker/start -.-> lab-391872{{"如何在 Ubuntu 上设置 Docker 容器"}} docker/stop -.-> lab-391872{{"如何在 Ubuntu 上设置 Docker 容器"}} docker/restart -.-> lab-391872{{"如何在 Ubuntu 上设置 Docker 容器"}} docker/logs -.-> lab-391872{{"如何在 Ubuntu 上设置 Docker 容器"}} docker/inspect -.-> lab-391872{{"如何在 Ubuntu 上设置 Docker 容器"}} docker/info -.-> lab-391872{{"如何在 Ubuntu 上设置 Docker 容器"}} docker/version -.-> lab-391872{{"如何在 Ubuntu 上设置 Docker 容器"}} end

Docker 基础

Docker 简介

Docker 是一个强大的容器化平台,彻底改变了软件打包和部署方式。作为领先的容器技术,Docker 使开发者能够在不同的计算环境中一致地创建、部署和运行应用程序。

容器化的核心概念

容器化允许将应用程序与其所有依赖项捆绑在一起,确保在各种系统上具有统一的性能。与传统虚拟机不同,容器共享主机系统的内核,使其轻量级且高效。

graph TD A[应用程序代码] --> B[Docker 容器] B --> C[一致的部署] B --> D[隔离的环境]

Docker 架构

组件 描述 功能
Docker 守护进程 后台服务 管理 Docker 对象
Docker 客户端 命令行界面 向 Docker 守护进程发送命令
Docker 镜像仓库 镜像存储库 存储和分发 Docker 镜像

在 Ubuntu 22.04 上安装

## 更新软件包索引
sudo apt update

## 安装依赖项
sudo apt install apt-transport-https ca-certificates curl software-properties-common

## 添加 Docker 的官方 GPG 密钥
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

## 设置 Docker 仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

## 安装 Docker 引擎
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

基本的 Docker 命令

## 检查 Docker 版本
docker --version

## 从 Docker Hub 拉取镜像
docker pull ubuntu:latest

## 列出可用镜像
docker images

## 运行容器
docker run -it ubuntu:latest /bin/bash

Docker 的主要优势

通过 Docker 进行容器化具有显著优势:

  • 开发和生产环境一致
  • 快速应用程序部署
  • 高效资源利用
  • 简化依赖管理
  • 增强的可扩展性和可移植性

容器生命周期

容器状态与管理

Docker 容器在其生命周期中会经历多个状态,从创建到终止。了解这些状态对于有效地管理和部署容器至关重要。

stateDiagram-v2 [*] --> 创建 创建 --> 运行 运行 --> 暂停 暂停 --> 运行 运行 --> 停止 停止 --> 删除 删除 --> [*]

容器创建与初始化

## 拉取基础镜像
docker pull ubuntu:latest

## 创建并启动容器
docker run -d --name mycontainer ubuntu:latest

## 使用交互式终端运行容器
docker run -it ubuntu:latest /bin/bash

容器管理命令

命令 功能 示例
docker create 创建新容器 docker create ubuntu:latest
docker start 启动已停止的容器 docker start mycontainer
docker stop 停止正在运行的容器 docker stop mycontainer
docker restart 重启容器 docker restart mycontainer
docker pause 暂停容器进程 docker pause mycontainer
docker unpause 取消暂停容器 docker unpause mycontainer

容器部署策略

## 部署多个容器实例
docker run -d --name web1 nginx
docker run -d --name web2 nginx
docker run -d --name web3 nginx

## 检查正在运行的容器
docker ps

使用 Docker Compose 进行容器扩展

version: "3"
services:
  webapp:
    image: nginx
    deploy:
      replicas: 3

资源管理

## 限制容器资源
docker run -d --cpus=0.5 --memory=512m nginx

容器删除

## 删除已停止的容器
docker rm mycontainer

## 强制删除正在运行的容器
docker rm -f mycontainer

## 删除所有已停止的容器
docker container prune

容器最佳实践

Dockerfile 优化

## 使用特定的镜像标签
FROM ubuntu:22.04

## 最小化层数
RUN apt-get update \
  && apt-get install -y python3 \
  && rm -rf /var/lib/apt/lists/*

## 使用多阶段构建
FROM python:3.9-slim
COPY --from=builder /app /app

容器监控策略

graph TD A[容器监控] --> B[资源使用情况] A --> C[性能指标] A --> D[日志记录]

性能指标跟踪

指标 命令 目的
CPU 使用情况 docker stats 监控处理器消耗
内存 docker top 跟踪内存分配情况
网络 docker network inspect 分析网络性能

安全最佳实践

## 以最小权限运行容器
docker run --read-only --tmpfs /tmp nginx

## 限制容器能力
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE nginx

容器健康检查

HEALTHCHECK --interval=5m --timeout=3s \
  CMD curl -f || exit 1

日志记录与故障排除

## 查看容器日志
docker logs mycontainer

## 实时日志监控
docker logs -f mycontainer

## 详细检查容器
docker inspect mycontainer

资源管理

## 设置资源限制
docker run -d \
  --cpus=1 \
  --memory=512m \
  --memory-reservation=256m \
  nginx

容器编排原则

version: "3"
services:
  webapp:
    image: myapp
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure

总结

Docker 通过提供轻量级、一致且可移植的容器环境,彻底改变了软件开发方式。本教程为你提供了安装 Docker、管理容器以及在不同计算平台上有效利用容器化技术的基本技能。通过掌握这些技术,开发者可以提高应用程序的可靠性、可扩展性和部署效率。