如何在 Ubuntu 上部署 Docker 容器

DockerDockerBeginner
立即练习

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

简介

本全面的 Docker 教程为开发者和系统管理员提供了一份理解和实施容器技术的基础指南。通过探索 Docker 的核心概念、架构和实际应用,学习者将获得现代软件部署和基础设施管理方面的关键技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") subgraph Lab Skills docker/ls -.-> lab-393102{{"如何在 Ubuntu 上部署 Docker 容器"}} docker/ps -.-> lab-393102{{"如何在 Ubuntu 上部署 Docker 容器"}} docker/inspect -.-> lab-393102{{"如何在 Ubuntu 上部署 Docker 容器"}} docker/images -.-> lab-393102{{"如何在 Ubuntu 上部署 Docker 容器"}} docker/info -.-> lab-393102{{"如何在 Ubuntu 上部署 Docker 容器"}} docker/version -.-> lab-393102{{"如何在 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

## 设置稳定仓库
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 容器示例

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

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

## 在容器内,验证环境
cat /etc/os-release

此示例展示了如何下载 Ubuntu 镜像并运行交互式容器,展示了 Docker 在创建隔离环境方面的简便性。

容器管理

容器生命周期操作

Docker 提供了用于管理容器生命周期的全面命令,使开发者能够高效地创建、启动、停止和删除容器。

graph LR A[创建容器] --> B[启动容器] B --> C[运行中的容器] C --> D[停止容器] D --> E[删除容器]

重要的 Docker 容器命令

命令 功能 示例
docker create 创建一个新容器 docker create ubuntu:latest
docker start 启动一个已停止的容器 docker start container_id
docker stop 停止一个正在运行的容器 docker stop container_id
docker rm 删除一个容器 docker rm container_id
docker ps 列出正在运行的容器 docker ps
docker ps -a 列出所有容器 docker ps -a

容器管理示例

## 创建一个新容器
docker create --name web_server nginx:latest

## 启动容器
docker start web_server

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

## 停止容器
docker stop web_server

## 删除容器
docker rm web_server

容器资源管理

## 运行带有资源限制的容器
docker run -d \
  --name limited_container \
  --memory=512m \
  --cpus=1.5 \
  nginx:latest

此示例展示了如何为容器设置内存和 CPU 限制,确保资源使用得到控制。

高级容器检查

## 详细的容器信息
docker inspect web_server

## 容器日志
docker logs web_server

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

高级容器技术

容器网络配置

Docker 为复杂的应用程序架构提供了灵活的网络选项。

graph LR A[主机网络] --> B[桥接网络] B --> C[自定义网络] C --> D[覆盖网络]

网络类型

网络类型 描述 使用场景
桥接 默认网络 隔离容器通信
主机 直接连接主机网络 高性能场景
覆盖 多主机网络 分布式系统

创建自定义网络

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

## 在自定义网络中运行容器
docker run -d \
  --name web_app \
  --network my_custom_network \
  nginx:latest

卷管理

## 创建持久卷
docker volume create app_data

## 将卷挂载到容器
docker run -d \
  --name database \
  -v app_data:/var/lib/database \
  postgres:latest

使用 Docker Compose 进行容器编排

version: "3"
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
  database:
    image: postgres:latest
    environment:
      POSTGRES_PASSWORD: secret

性能监控

## 实时容器指标
docker stats

## 容器资源使用情况
docker top container_name

## 性能分析
docker run \
  --rm \
  -it \
  --privileged \
  ubuntu:latest \
  perf top

总结

Docker 代表了一种应用程序打包和部署的革命性方法,提供了轻量级、可移植且高效的容器化解决方案。通过掌握 Docker 的基本技术,开发者可以简化工作流程,确保环境一致性,并在各种计算平台上增强系统的可扩展性。