如何高效构建和部署 Docker 容器

DockerDockerBeginner
立即练习

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

简介

本全面的 Docker 教程为开发者和系统管理员提供了一份详细指南,以帮助他们理解和应用容器技术。通过探索 Docker 的核心概念、安装过程和基本命令,学习者将获得在不同计算环境中创建、管理和部署容器化应用程序的实用技能。

Docker 基础

Docker 与容器技术简介

Docker 是一个强大的容器化平台,使开发者能够在不同的计算环境中一致地打包、分发和运行应用程序。容器技术通过提供轻量级、可移植且高效的运行时环境,彻底改变了软件部署方式。

Docker 的核心概念

什么是 Docker?

Docker 是一个开源平台,它使用容器化来简化应用程序部署。与传统虚拟机不同,Docker 容器共享主机系统的内核,这使得它们更节省资源且启动速度更快。

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

Docker 的关键组件

组件 描述 功能
Docker 引擎 核心运行时 管理容器生命周期
Docker 镜像 只读模板 定义容器结构
Docker 容器 可运行实例 执行应用程序

在 Ubuntu 22.04 上安装

要在 Ubuntu 上安装 Docker,请执行以下命令:

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

## 安装依赖项
sudo apt-get install ca-certificates curl gnupg

## 添加 Docker 的官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

## 设置存储库
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg]  \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

## 安装 Docker 软件包
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Docker 基本命令

了解基本的 Docker 命令对于有效管理容器至关重要:

## 检查 Docker 版本
docker --version

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

## 列出可用镜像
docker images

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

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

## 停止容器
docker stop [容器 ID]

Docker 的用例

Docker 广泛应用于:

  • 微服务架构
  • 持续集成/持续部署(CI/CD)
  • 云原生应用开发
  • 开发和测试环境
  • 可扩展的基础设施管理

Docker 镜像创建

理解 Docker 镜像

Docker 镜像是只读模板,其中包含一组用于创建 Docker 容器的指令。它们是容器化应用程序的基本构建块,打包了所有必要的依赖项和配置。

graph LR A[Dockerfile] --> B[Docker 构建] B --> C[Docker 镜像] C --> D[Docker 容器]

Dockerfile 基础

Dockerfile 是一个文本文件,包含组装 Docker 镜像所需的所有命令。以下是一个完整示例:

## 选择基础镜像
FROM ubuntu:22.04

## 元数据
LABEL maintainer="[email protected]"

## 环境设置
ENV APP_HOME=/application

## 系统依赖项
RUN apt-get update && apt-get install -y \
  python3 \
  python3-pip \
  && rm -rf /var/lib/apt/lists/*

## 工作目录配置
WORKDIR ${APP_HOME}

## 复制应用程序文件
COPY. ${APP_HOME}

## 安装 Python 依赖项
RUN pip3 install -r requirements.txt

## 暴露应用程序端口
EXPOSE 8000

## 容器启动命令
CMD ["python3", "app.py"]

Dockerfile 指令

指令 用途 示例
FROM 指定基础镜像 FROM ubuntu:22.04
RUN 执行 shell 命令 RUN apt-get update
COPY 将文件复制到镜像中 COPY. /app
WORKDIR 设置工作目录 WORKDIR /application
ENV 设置环境变量 ENV DEBUG=true
EXPOSE 定义容器端口 EXPOSE 80
CMD 默认容器命令 CMD ["python", "app.py"]

构建 Docker 镜像

使用以下命令创建和管理 Docker 镜像:

## 从 Dockerfile 构建镜像
docker build -t myapp:v1.

## 列出本地镜像
docker images

## 删除特定镜像
docker rmi myapp:v1

## 标记镜像
docker tag myapp:v1 myregistry/myapp:latest

镜像管理策略

Docker 提供了多种创建和分发镜像的方法:

  • 本地镜像构建
  • 从 Docker Hub 拉取镜像
  • 使用 Dockerfile 创建自定义镜像
  • 将镜像推送到容器注册表

容器部署

容器部署基础

容器部署涉及在从本地开发到云基础设施的不同环境中运行和管理 Docker 容器。有效的部署策略可确保应用程序性能的一致性、可扩展性和可靠性。

graph TD A[Docker 镜像] --> B[本地容器] A --> C[云容器] B --> D[开发环境] C --> E[生产基础设施]

容器运行时管理

基本容器操作

## 在分离模式下运行容器
docker run -d --name webapp nginx:latest

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

## 停止容器
docker stop webapp

## 删除容器
docker rm webapp

## 重启容器
docker restart webapp

容器配置参数

参数 描述 示例
-p 端口映射 -p 8080:80
-v 卷挂载 -v /host/path:/container/path
-e 环境变量 -e DATABASE_URL=mysql://localhost
--network 网络配置 --network=custom_network

容器网络

Docker 为容器通信提供了多种网络模式:

## 创建自定义网络
docker network create myapp_network

## 在特定网络中运行容器
docker run -d --network=myapp_network nginx:latest

容器扩展策略

Docker Compose 部署

version: "3"
services:
  webapp:
    image: nginx:latest
    ports:
      - "8080:80"
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure

云部署方法

AWS ECS 部署示例

## 将镜像推送到 AWS ECR
aws ecr get-login-password | docker login
docker tag myapp:latest aws_account.dkr.ecr.region.amazonaws.com/myapp
docker push aws_account.dkr.ecr.region.amazonaws.com/myapp

容器编排基础

像 Kubernetes 这样的容器编排平台通过自动管理容器生命周期、扩展和网络,简化了复杂的部署场景。

总结

Docker 代表了一种革命性的软件部署方法,提供轻量级、可移植且高效的运行时环境。通过掌握 Docker 的核心组件、安装过程和基本命令,专业人员可以简化应用程序开发、提高资源利用率,并在各种计算平台上实现一致的性能。本教程为学习者提供了有效利用容器化技术所需的基础知识。