CentOS 安装 Docker – wiki基地


在 CentOS 系统上安装 Docker 的详细指南

引言:容器化技术的基石 – Docker

在当今快速发展的软件开发和部署领域,容器化技术已成为不可或缺的一部分。它极大地提高了应用程序的可移植性、可伸缩性和一致性。而 Docker,作为容器化技术的领导者,以其易用性、强大的功能和庞大的生态系统,赢得了全球开发者的青睐。

Docker 允许开发者将应用程序及其所有依赖项(库、系统工具、代码、运行时环境等)打包到一个称为容器的标准化单元中。这个容器可以在任何安装了 Docker 的环境中运行,而不用担心环境差异带来的问题。这解决了“在我机器上可以运行”的经典痛点,实现了“构建一次,随处运行”。

CentOS,作为一款稳定、可靠、广泛应用于服务器环境的 Linux 发行版,是运行 Docker 的绝佳平台。许多企业和个人选择在 CentOS 服务器上部署 Docker,以利用其稳定性与 Docker 的敏捷性相结合。

本文将为您提供一份详尽的指南,一步步地讲解如何在 CentOS 系统上安装和配置 Docker,包括安装前的准备、不同安装方式的选择、详细的安装步骤、安装后的配置(尤其是解决国内访问慢的问题)以及一些基本的 Docker 命令,助您顺利迈出容器化旅程的第一步。

第一部分:安装前的准备与系统要求

在开始安装 Docker 之前,我们需要确保您的 CentOS 系统满足一定的要求,并进行一些必要的准备工作。

1. 系统版本要求

Docker Engine 官方支持 CentOS 7 和 CentOS 8。
* CentOS 7: 这是目前企业生产环境中部署 Docker 比较常见的版本。Docker 对其支持良好。
* CentOS 8 / CentOS Stream 8: Docker 官方也支持 CentOS 8。但需要注意的是,CentOS 8 Linux 发行版已于 2021 年底停止维护(EOL)。如果您使用的是 CentOS 8,建议考虑迁移到 CentOS Stream 8 或其他受支持的 Linux 发行版。本指南将主要侧重于 CentOS 7 的安装步骤,因为其用户基数仍然很大,但相关命令对于 CentOS 8/Stream 8 也大同小异。
* 内核版本: Docker 依赖于 Linux 内核的特定功能(如 Cgroups 和命名空间)。CentOS 7 通常自带的内核版本(3.10.x)已经满足要求。对于 CentOS 8/Stream 8,其内核版本更高,也天然支持 Docker。

2. 硬件要求

Docker 本身对硬件要求不高,但您需要考虑计划运行多少个容器、每个容器需要多少内存和 CPU 资源、以及存储空间。
* 内存 (RAM): 建议至少 2GB,如果运行较多或资源密集型容器,则需要更多。
* 处理器 (CPU): Docker 支持 x86_64 架构。几乎所有现代服务器和虚拟机都满足此要求。
* 存储空间: Docker 需要空间来存储镜像、容器的可写层、卷(Volumes)等。推荐使用 LVM 或类似的逻辑卷管理工具来管理存储,以便于扩展。Docker 使用存储驱动(如 OverlayFS, devicemapper 等)来管理镜像和容器层,不同的驱动对存储配置可能有不同的偏好。默认情况下,较新的 Docker 版本在 CentOS 上会优先使用 overlay2 存储驱动。确保 /var/lib/docker 目录有足够的空间。

3. 网络要求

您的 CentOS 服务器需要能够访问互联网,以便下载 Docker Engine 及其依赖项。如果您的服务器在内部网络中,可能需要配置代理。

4. 用户权限

您需要一个具有 sudo 权限的用户或者直接使用 root 用户来执行安装命令。为了安全起见,建议使用具有 sudo 权限的普通用户进行安装和后续管理。

5. 检查并卸载旧版本 Docker (如果存在)

如果您之前尝试安装过 Docker 的旧版本(例如,通过 CentOS 官方仓库安装的 docker 包),强烈建议先将其卸载干净,以避免冲突。

执行以下命令卸载旧版本及其相关包:

bash
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
containerd \
runc

  • yum remove: 这是 CentOS/RHEL 系统上用于卸载软件包的命令。
  • 列出的包名涵盖了 Docker Engine 的各种可能存在的旧版本名称及其依赖(如 containerdrunc)。
  • \ 符号用于在多行中输入一个长命令。

执行此命令时,系统可能会提示您确认卸载。输入 y 并按 Enter 即可。

重要提示: 卸载 Docker 并不会自动删除您之前创建的镜像、容器、卷或网络。这些数据默认存储在 /var/lib/docker 目录下。如果您希望彻底清除所有 Docker 相关数据,可以手动删除此目录:

bash
sudo rm -rf /var/lib/docker

请谨慎使用 rm -rf 命令,因为它会永久删除文件且无法恢复。只有在确定不再需要这些数据时才执行此步骤。通常情况下,我们只卸载软件包,保留数据以备新版本使用。

第二部分:选择 Docker 安装方法

在 CentOS 上安装 Docker Engine 的官方推荐方法是使用 Docker 官方仓库。这样做的好处是:

  1. 您可以随时获取到最新版本的 Docker Engine。
  2. 您可以方便地升级 Docker。
  3. 您可以选择安装特定版本的 Docker。

此外,还有其他安装方式,但通常不推荐用于生产环境:

  • 使用 CentOS 官方仓库的 yum install docker: CentOS 官方仓库中也包含 Docker 包,但通常版本较旧,更新也不如 Docker 官方仓库及时。如果您需要最新功能或遇到官方仓库版本中的 bug,这可能不是最佳选择。
  • 使用 Convenience Script: Docker 提供了一个便利脚本 (curl -fsSL https://get.docker.com | sh) 来快速安装 Docker。虽然方便,但此脚本不适用于生产环境,因为它会直接安装最新版本的 Docker,且没有明确的版本控制,可能导致不可预见的兼容性问题。

结论: 对于大多数用户,特别是需要在生产环境中部署 Docker 的用户,强烈推荐使用 Docker 官方仓库 进行安装。本指南也将主要围绕这种方法进行详细讲解。

第三部分:通过 Docker 官方仓库安装 Docker Engine

这是安装 Docker Engine 的官方推荐方法。我们将一步步完成:设置仓库、安装 Docker Engine 包、启动 Docker 服务并验证安装。

步骤 1: 安装必要的工具

在设置 Docker 仓库之前,您需要安装一些必要的 yum-utils 工具,以及推荐使用的存储驱动所需的包。

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

  • yum-utils: 这个包提供了一些有用的工具,其中 yum-config-manager 工具我们将用来添加和管理 yum 仓库。
  • device-mapper-persistent-datalvm2: 这两个包是 devicemapper 存储驱动所必需的。虽然较新版本的 Docker 在 CentOS 上默认倾向于使用 overlay2 驱动,但安装这些包可以确保兼容性,并在需要时启用 devicemapper 或其他相关功能。-y 选项会自动同意安装过程中的所有提示。

步骤 2: 设置 Docker 官方仓库

现在,我们将添加 Docker 的官方 yum 仓库到您的系统中。

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

  • yum-config-manager: 这是 yum-utils 包提供的工具,用于管理 yum 仓库。
  • --add-repo: 这个选项告诉 yum-config-manager 添加一个新的仓库。
  • https://download.docker.com/linux/centos/docker-ce.repo: 这是 Docker 为 CentOS 系统提供的仓库配置文件 URL。执行此命令后,yum-config-manager 会下载这个文件并将其保存在 /etc/yum.repos.d/ 目录下,通常文件名为 download.docker.com_linux_centos_docker-ce.repo 或类似名称。

您可以通过查看该目录来确认仓库文件已成功添加:

bash
ls /etc/yum.repos.d/

您应该能看到一个包含 docker-ce 字样的 .repo 文件。

步骤 3: 安装 Docker Engine

仓库设置好后,您就可以使用 yum 命令来安装 Docker Engine 了。

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

  • yum install: 标准的 yum 包安装命令。
  • docker-ce: 这是 Docker Community Edition (CE) 的核心包,包含 Docker Daemon、CLI 客户端以及 Docker Engine 的核心组件。
  • docker-ce-cli: 这是 Docker 命令行客户端,用于与 Docker Daemon 进行交互。将其与 docker-ce 分开允许您在不安装整个 Daemon 的情况下只安装客户端(例如,远程管理)。
  • containerd.io: containerd 是一个工业标准的容器运行时,Docker Engine 使用它来管理容器的生命周期(如启动、停止、删除容器)。它是 Docker Engine 的一个核心依赖。

执行此命令后,yum 会从刚才配置的 Docker 官方仓库下载并安装这些包及其所有依赖项。在安装过程中,您可能会被要求确认导入 Docker 的 GPG 密钥。GPG 密钥用于验证下载的软件包是否来自 Docker 并未被篡改。输入 y 并按 Enter 确认导入。

安装特定版本 (可选):

如果您需要安装特定版本的 Docker Engine,可以先列出仓库中可用的版本,然后指定版本号进行安装。

首先,列出可用版本:

bash
yum list docker-ce --showduplicates | sort -r

这个命令会列出所有可用的 docker-ce 包,并按版本号倒序排列(最新的在最上面)。输出格式大致如下:

docker-ce.x86_64 3:20.10.22-3.el7 docker-ce-stable
docker-ce.x86_64 3:20.10.21-3.el7 docker-ce-stable
...
docker-ce.x86_64 3:19.03.15-3.el7 docker-ce-stable
...

要安装某个特定版本,例如 20.10.22,您需要在包名后面加上完整的版本字符串和仓库名:

bash
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

例如,安装 20.10.22 版本:

bash
sudo yum install docker-ce-20.10.22 docker-ce-cli-20.10.22 containerd.io

如果您不指定版本,yum install docker-ce docker-ce-cli containerd.io 会默认安装最新稳定版本。对于初学者,安装最新稳定版通常是最佳选择。

步骤 4: 启动 Docker 并设置开机自启

Docker 服务安装完成后,默认是不会自动启动的。您需要手动启动它,并设置它在系统启动时自动运行。

启动 Docker 服务:

bash
sudo systemctl start docker

systemctl 是管理 systemd 系统和服务的工具。start docker 命令会启动名为 docker 的服务(即 Docker Daemon)。

设置 Docker 服务开机自启:

bash
sudo systemctl enable docker

enable docker 命令会创建一个 systemd 软链接,确保在系统下次启动时 Docker 服务也会随之启动。

验证 Docker 服务状态:

bash
sudo systemctl status docker

执行此命令后,您应该会看到类似如下的输出,其中 Active: active (running) 表示 Docker 服务正在正常运行:

● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2023-10-26 10:30:00 CST; 5min ago
Docs: https://docs.docker.com
Main PID: 12345 (dockerd)
Tasks: 45
Memory: 150.0M
CGroup: /system.slice/docker.service
└─12345 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
...

如果您看到 Active: inactive (dead) 或其他错误信息,说明服务启动失败。您可以查看 journalctl -u docker 命令来获取更详细的日志信息进行排查。

步骤 5: 验证 Docker 安装

安装并启动 Docker 服务后,最标准的验证方法是运行一个名为 hello-world 的测试容器。这个容器非常小,只会打印一条信息并退出。

bash
sudo docker run hello-world

  • docker run: 这是运行一个新容器的命令。
  • hello-world: 这是要运行的镜像名称。

首次运行 hello-world 镜像时,您的系统上可能还没有这个镜像。Docker 会自动从 Docker Hub(默认的公共镜像仓库)拉取(下载)这个镜像,然后基于它创建一个并运行一个容器。输出应该类似这样:

“`
Unable to find image ‘hello-world:latest’ locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:blahblahblah…
Status: Downloaded newer image for hello-world:latest

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

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the “hello-world” image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/
“`

看到 “Hello from Docker!” 字样及其后续解释,就表明 Docker Engine 已经成功安装并可以正常工作了。

第四部分:安装后的重要配置

虽然 Docker 已经安装成功,但为了更方便、更安全地使用它,以及解决在中国大陆地区访问 Docker Hub 的速度问题,还有一些重要的配置步骤。

1. 将非 root 用户添加到 docker 用户组 (强烈推荐)

默认情况下,docker 命令需要使用 sudo 来执行,因为只有 root 用户或 docker 组的成员才能与 Docker Daemon 进行通信。为了避免每次都输入 sudo,您可以将您的普通用户添加到 docker 用户组中。

警告: docker 用户组的成员对 Docker Daemon 具有完全的访问权限,这相当于拥有系统的 root 权限。因此,在将用户添加到 docker 组之前,请确保您完全信任该用户。

执行以下命令将当前用户添加到 docker 组:

bash
sudo groupadd docker # 如果 docker 组不存在则创建,通常安装 Docker 时会自动创建
sudo usermod -aG docker $USER

  • sudo groupadd docker: 尝试创建 docker 用户组。如果 Docker 安装时已经创建,这条命令会因为组已存在而失败或给出提示,但这没关系。
  • sudo usermod -aG docker $USER:
    • usermod: 修改用户属性的命令。
    • -aG: -a 选项表示 append(追加),-G 选项指定要加入的附加组。这将把用户添加到指定的组,而不是替换用户已有的附加组。
    • docker: 要加入的组名。
    • $USER: 这是一个环境变量,代表当前登录的用户名。

执行此命令后,需要完全退出当前的终端会话并重新登录,或者执行 newgrp docker 命令,使组成员资格更改生效。仅仅关闭并重新打开终端窗口通常是不够的。

重新登录后,您可以再次运行 hello-world 容器来验证是否不再需要 sudo

bash
docker run hello-world

如果这次运行不需要 sudo 也能成功,则说明用户已成功加入 docker 组并生效。

2. 配置 Docker 开机自启 (已在安装步骤中完成,再次强调)

您已经在安装步骤中执行了 sudo systemctl enable docker。这确保了 Docker 服务会在系统启动时自动启动。这是在服务器环境中部署 Docker 的标准做法,无需额外的配置。

您可以使用 systemctl list-unit-files | grep docker 来检查 docker.service 的状态是否是 enabled

3. 配置 Docker 镜像加速器 (解决国内访问慢问题)

Docker Hub 是默认的公共镜像仓库,但在中国大陆地区访问可能会非常缓慢,甚至不稳定。为了解决这个问题,可以使用镜像加速器(Mirror)。国内有很多云服务提供商和开源社区提供了 Docker 镜像加速服务。

配置镜像加速器的方法是修改 Docker 的配置文件 /etc/docker/daemon.json。如果该文件不存在,则创建一个。

首先,创建一个名为 daemon.json 的文件(如果不存在):

bash
sudo nano /etc/docker/daemon.json

  • nano: 一个易于使用的文本编辑器,您也可以使用 vim 或其他编辑器。

在文件中添加或修改 registry-mirrors 键,其值是一个包含一个或多个镜像加速器 URL 的 JSON 数组。

例如,使用阿里云的镜像加速器(请将 <your_aliyun_mirror_id> 替换为您在阿里云容器镜像服务中获取的专属加速器地址):

json
{
"registry-mirrors": ["https://<your_aliyun_mirror_id>.mirror.aliyuncs.com"]
}

您也可以添加多个加速器地址,Docker 会按顺序尝试使用它们:

json
{
"registry-mirrors": [
"https://<your_aliyun_mirror_id>.mirror.aliyuncs.com",
"https://mirror.nju.edu.cn/docker-hub/", # 南京大学
"https://docker.mirrors.ustc.edu.cn/", # 中国科学技术大学
"http://hub-mirror.c.163.com/" # 网易
]
}

重要: 请从您信任的提供商获取最新的、可用的镜像加速器地址。阿里云、腾讯云、网易、USTC 等都提供公共的或需要注册获取专属的镜像服务。

保存并关闭 daemon.json 文件(在 nano 中是按 Ctrl+X,然后按 Y 确认保存,最后按 Enter 确认文件名)。

配置完成后,需要重新加载 Docker Daemon 的配置并重启 Docker 服务使其生效:

bash
sudo systemctl daemon-reload
sudo systemctl restart docker

  • systemctl daemon-reload: 告诉 systemd 重新加载所有单元文件,包括我们刚刚修改的 docker.service(虽然主要修改的是 Docker 自己的配置,但这个命令是良好习惯)。
  • systemctl restart docker: 重启 Docker 服务,新的配置会在服务启动时被加载。

重启后,当您从 Docker Hub 拉取镜像时(例如 docker pull ubuntu),Docker 会尝试使用您配置的镜像加速器,速度会显著提升。

您可以通过 docker info 命令来验证镜像加速器是否已配置成功。在输出的 Registry Mirrors 部分应该能看到您添加的地址。

bash
docker info | grep "Registry Mirrors" -A 10

4. 配置防火墙

如果您的服务器启用了防火墙(如 firewalld 或 iptables),您需要确保 Docker 正常工作所需的端口和网络通信不被阻塞。

  • Docker Daemon 通信: Docker Daemon 默认监听 unix:///var/run/docker.sock,这是一种本地的进程间通信方式,通常不受防火墙影响。如果您配置了通过 TCP 端口访问 Docker Daemon (例如 -H tcp://0.0.0.0:2375,但不推荐在不安全的网络上这样做),则需要开放该端口。
  • 容器网络: Docker 会创建自己的网络接口(如 docker0)。容器之间的通信、容器与宿主机之间的通信、容器访问外部网络等都通过这些接口和 Docker 的网络规则进行。Docker 通常会自己配置 iptables 规则来管理容器的网络,但有时候防火墙服务(如 firewalld)可能会与 Docker 的 iptables 规则发生冲突。
  • 暴露的服务端口: 如果您运行的容器需要对外提供服务(例如 Web 服务器监听 80 端口),并且您通过 docker run -p 80:80 <image> 或 Docker Compose 进行了端口映射,您需要在宿主机的防火墙上开放相应的端口,以便外部客户端能够访问到这些端口。

Firewalld 配置示例 (CentOS 7/8 默认防火墙):

如果您使用 firewalld,并且希望外部能够访问您通过 Docker 映射到宿主机上的端口,您需要明确开放这些端口。

例如,开放 TCP 端口 80:

bash
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload

如果您发现 firewalld 与 Docker 存在冲突(例如,容器无法访问外部网络),一种常见的临时解决方案是停止并禁用 firewalld,但这会降低安全性。更推荐的方法是配置 firewalld 允许 Docker 的流量通过,或者使用 Docker 的 firewalld 驱动(如果安装了 firewalld 并在 Docker 配置中启用)。Docker 文档中有更详细的关于 Docker 与 firewalld 集成的说明。简单起见,对于初次安装,确保您开放了需要对外暴露的容器端口通常就足够了。

第五部分:常用的 Docker 命令入门

安装并配置好 Docker 后,您可以开始使用它来管理容器和镜像了。以下是一些最常用的 Docker 命令示例:

  • docker pull <image_name>[:tag]: 从镜像仓库拉取(下载)一个镜像。

    • 示例: docker pull ubuntu:latest (拉取最新版的 Ubuntu 镜像)
    • 示例: docker pull nginx:1.23 (拉取 1.23 版本的 Nginx 镜像)
  • docker images: 列出本地所有已下载的镜像。

  • docker run [OPTIONS] <image_name>[:tag] [COMMAND] [ARG...]: 创建并运行一个新的容器。

    • [OPTIONS]: 常用选项如 -d (后台运行), -p <host_port>:<container_port> (端口映射), -v <host_path>:<container_path> (卷挂载), -it (分配伪终端并保持标准输入开放), --name <container_name> (指定容器名称) 等。
    • 示例: docker run -d -p 80:80 --name mynginx nginx (在后台运行一个 Nginx 容器,将宿主机的 80 端口映射到容器的 80 端口,容器命名为 mynginx)
    • 示例: docker run -it ubuntu bash (启动一个 Ubuntu 容器,进入交互式 bash 终端)
  • docker ps [OPTIONS]: 列出正在运行的容器。

    • [OPTIONS]: 常用选项如 -a (列出所有容器,包括已停止的)。
  • docker stop <container_id_or_name>: 停止一个正在运行的容器。

    • 示例: docker stop mynginx
    • 示例: docker stop a3f4b6c7d8e0 (使用容器 ID 的前几位)
  • docker start <container_id_or_name>: 启动一个已停止的容器。

  • docker restart <container_id_or_name>: 重启一个容器。

  • docker rm <container_id_or_name>: 删除一个已停止的容器。

    • 示例: docker rm mynginx
    • 要删除正在运行的容器,可以加上 -f 选项强制删除:docker rm -f mynginx (不推荐,最好先停止再删除)
  • docker rmi <image_id_or_name>[:tag]: 删除一个或多个本地镜像。

    • 示例: docker rmi ubuntu:latest
    • 示例: docker rmi a1b2c3d4e5f6 (使用镜像 ID 的前几位)
    • 如果要删除被容器使用的镜像,需要先删除相关容器。可以使用 -f 强制删除,但这会连同使用该镜像的容器一并删除。
  • docker logs <container_id_or_name>: 查看容器的日志输出。

    • 示例: docker logs mynginx
    • 加上 -f 选项可以实时跟踪日志:docker logs -f mynginx
  • docker exec [OPTIONS] <container_id_or_name> <COMMAND> [ARG...]: 在运行中的容器内执行命令。

    • 示例: docker exec -it mynginx bash (在 mynginx 容器内启动一个交互式 bash 终端)

这些只是 Docker 命令的冰山一角,但足以让您开始使用 Docker。通过这些命令,您可以拉取镜像、创建和运行容器、管理容器的生命周期以及查看容器的输出。

第六部分:故障排除

在安装或使用 Docker 的过程中,可能会遇到一些问题。以下是一些常见的故障及其排查方向:

  • Docker 服务无法启动 (systemctl status docker 显示 inactive 或 failed):

    • 检查系统日志:使用 journalctl -xeu docker 查看 Docker Daemon 的详细启动日志。
    • 检查内核版本:确保您的 CentOS 内核版本满足 Docker 要求 (通常 CentOS 7 的 3.10+ 内核没问题)。
    • 检查依赖项:确认是否安装了 device-mapper-persistent-datalvm2 等必要的依赖包。
    • 检查存储驱动问题:有时候存储驱动配置错误或存储空间不足会导致启动失败。查看日志中是否有关于存储驱动的错误信息。
    • 检查端口冲突:如果 Docker 配置为监听 TCP 端口,检查该端口是否已被其他服务占用。
  • 运行 docker 命令提示权限错误 (Got permission denied while trying to connect to the Docker daemon...):

    • 这是因为当前用户没有访问 /var/run/docker.sock 的权限。
    • 确认您已经将当前用户添加到了 docker 用户组:groups <your_username>
    • 确认您已经完全退出并重新登录了终端会话,或者执行了 newgrp docker 命令。
  • 拉取镜像速度非常慢或失败:

    • 检查网络连接:确认服务器能够正常访问互联网。
    • 检查镜像加速器配置:确认 /etc/docker/daemon.json 文件中的 registry-mirrors 配置正确,并且镜像加速器地址是有效的且可访问的。配置后是否重启了 Docker 服务?
    • 尝试更换镜像加速器地址。
  • 容器无法访问外部网络:

    • 检查宿主机的防火墙设置。如果您使用了 firewalld 或 iptables,确保它们没有阻止 Docker 创建的虚拟网桥 (docker0) 的流量,或者没有阻止容器访问外部 IP 地址。
    • 检查 Docker 的网络配置:虽然不常见,但自定义网络配置可能导致问题。
    • 确保宿主机能够正常访问外部网络。
  • 容器启动后立即退出:

    • 查看容器的日志:使用 docker logs <container_id> 查看容器的启动日志和错误信息。容器退出通常是因为容器内的应用程序启动失败或运行完成后没有保持进程活跃。
    • 检查容器的启动命令 (CMDENTRYPOINT) 是否正确。

排查问题时,仔细阅读错误信息和日志输出是最关键的第一步。Docker 的官方文档和社区论坛也是获取帮助的好地方。

第七部分:总结与展望

恭喜您!您已经成功地在 CentOS 系统上安装并配置了 Docker Engine。现在,您的 CentOS 服务器已经具备了强大的容器化能力。

通过本文,您了解了 Docker 的基本概念、在 CentOS 上安装 Docker 的必要准备、使用官方仓库进行详细安装的步骤,包括卸载旧版本、配置仓库、安装软件包、启动服务和验证安装。此外,我们还详细讲解了安装后至关重要的配置,如将用户加入 docker 组以方便操作、配置镜像加速器以提升下载速度,并简要提及了防火墙的注意事项。最后,我们还提供了一些常用的 Docker 命令和基础的故障排除指南。

这只是您使用 Docker 的开始。接下来,您可以深入学习:

  • Docker Compose: 用于定义和运行多容器应用的工具。
  • Dockerfile: 用于自动化构建 Docker 镜像的脚本。
  • Docker 网络: 理解容器之间的通信和容器与外部世界的交互。
  • Docker 存储: 学习如何管理容器数据(卷和绑定挂载)。
  • Docker Hub/Registry: 了解如何使用公共或私有镜像仓库。
  • Docker Swarm 或 Kubernetes: 学习如何编排和管理大规模容器集群。

Docker 极大地简化了应用程序的部署和管理,掌握它将是您在现代 IT 领域的一项宝贵技能。希望这份详细指南能为您在 CentOS 上使用 Docker 打下坚实的基础!祝您容器化之旅顺利!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部