15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用
31.10.2024
1 +1

如何在 CentOS 上安装 Docker:完整分步指南

Docker 从根本上改变了开发人员构建、交付和运行应用程序的方式。通过将软件打包到轻量级、可移植的容器中,Docker 消除了经典的”在我的机器上可以运行”问题,并大大简化了开发工作流和生产部署。如果您正在运行 CentOS 并想要利用容器化的力量,本综合指南将引导您完成每一步——从全新的系统更新到高级配置。

无论您是部署单个 Web 应用程序还是编排复杂的多容器环境,在 CentOS 上正确安装 Docker 是至关重要的第一步。

前置条件

开始之前,请确保您拥有:

  • CentOS 7 或 CentOS 8 服务器(物理或虚拟)
  • 具有 sudo 权限的用户账户
  • 稳定的互联网连接
  • 对 Linux 命令行的基本熟悉

> 专业提示:为了获得最佳的 Docker 体验,请考虑在 VPS 托管计划上运行它。虚拟专用服务器为您提供完整的 root 访问权限、专用资源和在没有共享环境限制的情况下运行容器的灵活性。

步骤 1:更新系统

在安装任何新软件之前,始终更新现有软件包以确保兼容性和安全性。运行以下命令:

sudo yum update -y

此命令将所有已安装的软件包刷新到其最新版本。根据待处理更新的数量,可能需要几分钟。完全更新的系统可降低 Docker 安装期间依赖项冲突的风险。

步骤 2:安装所需的依赖项

Docker 依赖于多个系统级软件包才能正常运行。使用单个命令安装它们:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

以下是每个软件包的功能:

软件包用途
yum-utils为管理存储库提供 yum-config-manager 实用程序
device-mapper-persistent-dataDocker 设备映射器存储驱动程序所需
lvm2Docker 存储后端的逻辑卷管理器支持

这些依赖项确保 Docker 可以在您的 CentOS 系统上高效可靠地管理容器存储。

步骤 3:添加官方 Docker 存储库

CentOS 的默认软件包存储库不包含最新的 Docker 软件包。您需要添加 Docker 的官方存储库以获取最新的稳定版本:

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

此命令将 Docker 的官方 CentOS 存储库添加到您系统的存储库列表中。使用官方源可确保您直接从 Docker Inc. 获得真正的、最新的 Docker 软件包,而不是来自第三方镜像的可能过时的版本。

您可以通过列出已配置的存储库来验证存储库是否已成功添加:

sudo yum repolist

步骤 4:安装 Docker 引擎

有了存储库,安装 Docker 很简单:

sudo yum install -y docker-ce docker-ce-cli containerd.io

> 注意:建议同时安装 docker-ce-cli(Docker 命令行界面)和 containerd.io(容器运行时)以及主引擎,以获得完整的生产就绪设置。

这将安装 Docker Community Edition (CE) ——Docker 的免费开源版本,完全适合开发和生产工作负载。

步骤 5:启动并启用 Docker 服务

安装 Docker 不会自动启动它。您需要启动 Docker 守护程序并将其配置为在系统启动时自动启动:

sudo systemctl start docker
sudo systemctl enable docker
  • systemctl start docker — 立即启动 Docker 服务
  • systemctl enable docker — 配置 Docker 在每次服务器重启时自动启动

验证服务状态

确认 Docker 正确运行:

sudo systemctl status docker

您应该看到指示服务 active (running) 的输出。如果状态显示任何错误,请使用 journalctl -u docker 查看系统日志以获取故障排除详情。

步骤 6:验证 Docker 安装

运行 Docker 的内置测试以确认一切按预期工作:

sudo docker run hello-world

此命令执行以下操作:

  1. 联系 Docker Hub 注册表
  2. 下载轻量级 hello-world 测试镜像
  3. 从该镜像创建新容器
  4. 运行容器,打印确认消息

如果您的安装成功,您将看到以以下内容开头的输出:

Hello from Docker!
This message shows that your installation appears to be working correctly.

恭喜——Docker 现已在您的 CentOS 服务器上完全安装并可正常运行。

步骤 7:为非 Root 用户配置 Docker(可选但推荐)

默认情况下,Docker 命令需要 sudo(root 权限)。为了在开发环境中提高安全性和便利性,您可以通过将特定的非 root 用户添加到 docker 组来允许他们运行 Docker 命令。

创建 Docker 组

在大多数情况下,此组在安装期间自动创建。如果没有,请手动创建:

sudo groupadd docker

将您的用户添加到 Docker 组

your_username 替换为实际的 Linux 用户名:

sudo usermod -aG docker your_username

应用更改

注销并重新登录以刷新您的组成员身份。或者,在当前会话中激活更改:

newgrp docker

不使用 Sudo 进行测试

docker run hello-world

如果此命令运行时不需要 sudo 且没有权限错误,则配置工作正常。

> 安全警告:docker 组授予与 root 用户等效的权限。在生产环境中,仅将受信任的用户添加到此组。

步骤 8:基本 Docker 命令参考

Docker 运行后,以下是您日常使用最重要的命令:

容器管理

# List all running containers
docker ps

# List all containers (including stopped ones)
docker ps -a

# Start a stopped container
docker start container_id

# Stop a running container
docker stop container_id

# Remove a container
docker rm container_id

# Remove all stopped containers at once
docker container prune

镜像管理

# List all locally stored images
docker images

# Pull an image from Docker Hub
docker pull image_name

# Pull a specific version/tag
docker pull image_name:tag

# Remove a local image
docker rmi image_name

# Remove all unused images
docker image prune -a

运行容器

# Run a container interactively
docker run -it image_name /bin/bash

# Run a container in detached (background) mode
docker run -d image_name

# Run a container with port mapping
docker run -d -p 8080:80 image_name

# Run a container with a custom name
docker run -d --name my_container image_name

查看日志和统计信息

# View container logs
docker logs container_id

# Follow live log output
docker logs -f container_id

# View real-time resource usage
docker stats

步骤 9:确认 Docker 在启动时启动

运行 systemctl enable docker 后,Docker 应该已配置为在启动时启动。要双重检查或重新启用此行为:

sudo systemctl enable docker

要禁用自动启动(例如,在开发机器上,您不总是需要 Docker 运行):

sudo systemctl disable docker

步骤 10:高级配置(可选)

安装 Docker Compose

Docker Compose 是使用简单 YAML 配置文件定义和管理多容器应用程序的必要工具。安装最新的稳定版本:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

验证安装:

docker-compose --version

使用 Docker Compose,您可以在单个 docker-compose.yml 文件中定义整个应用程序堆栈——Web 服务器、数据库、缓存——并使用一个命令启动它们:docker-compose up -d

配置 Docker 守护程序

您可以通过编辑(或创建)守护程序配置文件来自定义 Docker 的行为:

sudo nano /etc/docker/daemon.json

常见的配置示例:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "storage-driver": "overlay2",
  "default-address-pools": [
    {"base": "172.17.0.0/16", "size": 24}
  ]
}

编辑守护程序配置后,重启 Docker 以应用更改:

sudo systemctl restart docker

您可以配置的常见守护程序设置包括:

  • 日志驱动程序和轮换 — 防止容器日志占用所有磁盘空间
  • 存储驱动程序overlay2 是 CentOS 推荐的驱动程序
  • DNS 设置 — 为容器设置自定义 DNS 服务器
  • 注册表镜像 — 使用本地镜像加快镜像拉取速度

配置防火墙规则(CentOS 7)

如果您正在运行 firewalld,您可能需要允许 Docker 的网络流量:

sudo firewall-cmd --zone=public --add-masquerade --permanent
sudo firewall-cmd --reload

为 Docker 选择合适的托管环境

在生产环境中运行 Docker 需要可靠的高性能服务器环境。以下是根据您的使用情况选择的最佳选项:

  • VPS 托管 — 适合大多数 Docker 部署。完整的 root 访问权限、可扩展的资源和经济实惠的价格使 VPS 成为容器化应用程序的首选。
  • 专用服务器 — 最适合高流量生产环境或当您需要最大 CPU、RAM 和存储性能来同时运行数十个容器时。
  • GPU 托管 — 完美适合在 Docker 容器内运行需要 GPU 加速进行模型训练或推理的 AI/ML 工作负载。
  • 带 cPanel 的 VPS — 如果您需要 Docker 与用户友好的控制面板相结合来管理网站和电子邮件,此组合提供了两全其美。

排查 CentOS 上的常见 Docker 问题

Docker 守护程序启动失败

检查系统日志以获取错误详情:

journalctl -u docker --no-pager | tail -50

权限被拒绝错误

如果您看到 Got permission denied while trying to connect to the Docker daemon socket,请确保您的用户在 docker 组中,并且您已注销并重新登录。

无法拉取镜像

15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用