在 CentOS 上轻松部署 Docker 和 Docker Compose


嘿,大家好!今天我们来聊聊如何在 CentOS 系统上安装 Docker 和 Docker Compose 这两个神器。无论你是经验丰富的开发者,还是刚刚入门的新手,这篇文章都会带你一步步轻松搞定安装和配置。咱们废话不多说,撸起袖子加油干!

为什么选择 Docker?

简单来说,Docker 就像一个“集装箱”,可以把你的应用程序和它所需要的所有环境(比如代码、运行时、库、环境变量等)都打包在一起。这样一来,你的应用就可以在任何安装了 Docker 的机器上无差别运行,彻底告别“在我电脑上明明是好的”这种经典难题。

而 Docker Compose 则是 Docker 的好搭档,它允许你通过一个简单的 YAML 文件来定义和管理多个 Docker 容器的应用。比如,一个网站可能需要一个 Web 服务器容器和一个数据库容器,用 Docker Compose 就能一键启动、关闭或管理它们,非常方便。

第一部分:安装 Docker Engine

在安装之前,请确保你使用的是 CentOS 7 或 CentOS Stream 的一个维护版本。

第 1 步:卸载旧版本(可选)

如果你的系统上之前装过旧版的 Docker,最好先清理一下。没装过的话,可以直接跳过这一步。

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

如果系统提示没有这些包,别担心,这说明你的系统很干净,可以继续下一步。

第 2 步:设置 Docker 的软件仓库

我们需要告诉 CentOS 的包管理器 yum(或 dnf)去哪里下载 Docker。官方推荐从 Docker 自己的仓库下载,这样能保证我们用上最新最稳定的版本。

首先,安装 yum-utils,它提供了一个配置管理工具。

sudo yum install -y yum-utils

然后,添加 Docker 的官方仓库地址。

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

这个命令会自动帮你创建一个仓库配置文件,让 yum 知道去哪里找 Docker Community Edition (CE) 的安装包。

第 3 步:安装 Docker Engine

现在万事俱备,只差临门一脚了。执行下面的命令来安装 Docker Engine、命令行工具 (CLI)、containerd 和 Docker Compose 插件。

sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

yum 会自动处理所有依赖关系,你只需要耐心等待安装完成。

第 4 步:启动并设置开机自启

安装完成后,Docker 服务并不会自动启动。我们需要手动启动它,并设置为开机自动运行,这样服务器重启后 Docker 也能正常工作。

# 启动 Docker 服务
sudo systemctl start docker

# 设置开机自启
sudo systemctl enable docker

第 5 步:验证安装是否成功

怎么知道 Docker 是不是真的装好了呢?跑一个经典的 hello-world 镜像试试就知道了。

sudo docker run hello-world

如果一切顺利,你会看到 Docker 自动下载 hello-world 镜像,并打印出一条欢迎信息,类似下面这样:

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

看到这个,就说明你的 Docker 已经成功安装并运行啦!

第二部分:安装 Docker Compose (独立版)

虽然在安装 Docker Engine 时我们已经安装了 docker-compose-plugin,可以通过 docker compose 命令使用。但在很多场景下,你可能还是习惯于使用独立的 docker-compose 命令。下面我们来介绍如何安装它。

第 1 步:下载 Docker Compose 二进制文件

Docker Compose 官方提供了一个可以直接运行的二进制文件。我们可以从 GitHub 上下载它。

注意: 下面的命令会下载一个特定版本,你可以去 Docker Compose 的 GitHub 发布页面 查看最新版本号,并替换命令中的版本号。

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

这个命令会把文件下载到 /usr/local/bin 目录下,这是一个通常存放用户自定义可执行文件的地方。

第 2 步:添加可执行权限

下载下来的文件还不能直接运行,我们需要给它加上执行权限。

sudo chmod +x /usr/local/bin/docker-compose

第 3 步:验证安装

最后,检查一下版本号,确认 docker-compose 命令是否可用。

docker-compose --version

如果输出了版本信息,比如 docker-compose version 1.29.2, build 5becea4c,那就大功告成了!

第三部分:实战案例 - 用 Docker Compose 部署 WordPress

理论说完了,我们来点实际的。下面我们用 Docker Compose 快速搭建一个 WordPress 网站,它将包含一个 WordPress 应用和一个 MySQL 数据库。

第 1 步:创建一个项目目录

首先,为你的项目创建一个目录,并进入该目录。

mkdir my-wordpress-site && cd my-wordpress-site

第 2 步:创建 docker-compose.yml 文件

在这个目录里,创建一个名为 docker-compose.yml 的文件。这是 Docker Compose 的核心配置文件。

nano docker-compose.yml

然后,把下面的内容复制粘贴进去。

version: '3.8'

services:
  db:
    image: mysql:5.7
    container_name: wordpress-db
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: your_strong_password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: your_strong_password

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    container_name: wordpress-app
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: your_strong_password
      WORDPRESS_DB_NAME: wordpress

volumes:
  db_data:

重要提示: 请务必将 your_strong_password 替换为你自己的复杂密码!

文件解析:

  • version: '3.8':指定了 docker-compose 文件的版本。
  • services: 定义了两个服务,一个是 db(数据库),一个是 wordpress(网站应用)。
  • db 服务:
    • image: mysql:5.7: 使用 MySQL 5.7 版本的官方镜像。
    • volumes: 创建一个名为 db_data 的数据卷,并挂载到容器的 /var/lib/mysql 目录,这样即使容器被删除,数据库文件也能持久化保存。
    • restart: always: 保证容器在退出后总是会自动重启。
    • environment: 设置了数据库需要的环境变量,如 root 密码和为 WordPress 创建的数据库及用户。
  • wordpress 服务:
    • depends_on: [db]: 指定 wordpress 服务依赖于 db 服务,这样可以确保数据库容器先于 WordPress 容器启动。
    • image: wordpress:latest: 使用最新的 WordPress 官方镜像。
    • ports: ["8000:80"]: 将主机的 8000 端口映射到容器的 80 端口。这样你就可以通过 http://你的服务器IP:8000 访问网站了。
    • environment: 告诉 WordPress 如何连接到数据库。注意 WORDPRESS_DB_HOST 的值是 db,也就是我们定义的数据库服务的名称。Docker Compose 会在内部网络中自动解析这个主机名。
  • volumes: db_data:: 在文件末尾声明了我们要使用的数据卷。

第 3 步:启动应用

保存并关闭文件后,在 docker-compose.yml 所在的目录下,执行以下命令:

sudo docker-compose up -d
  • up: 创建并启动容器。
  • -d: 表示在后台(detached mode)运行,这样你的终端就不会被日志占用了。

Docker Compose 会自动下载镜像并按你的配置启动容器。你可以用 docker ps 命令查看正在运行的容器。

现在,打开你的浏览器,访问 http://你的服务器IP:8000,你应该就能看到 WordPress 的安装界面了。接下来,按照页面提示完成安装即可。

总结

恭喜你!现在你已经掌握了在 CentOS 上安装和使用 Docker 及 Docker Compose 的技能。通过容器化,应用的部署和管理变得前所未有的简单和高效。希望这篇文章能帮你打开新世界的大门,快去探索 Docker 的更多强大功能吧!


  目录