如何在Rocky Linux 9上安装和使用Docker Compose
简介
Docker简化了在容器中管理应用程序流程的过程。虽然容器在某些方面类似于虚拟机,但它们更加轻量级和资源友好。这使得开发人员能够将应用程序环境拆分为多个独立的服务。
对于依赖于多个服务的应用程序而言,协调所有容器一起启动、通信和关闭很快变得难以控制。Docker Compose 是一个工具,它允许您根据 YAML 文件中设置的定义来运行基于多容器的应用环境。它使用服务定义来构建完全可定制的环境,具有可以共享网络和数据卷的多个容器。
在本指南中,您将学习如何在Rocky Linux 9服务器上安装Docker Compose以及如何开始使用这个工具。
前提条件
阅读本文,您需要:
- Access to a Rocky Linux 9 local machine or development server as a non-root user with sudo privileges. If you’re using a remote server, it’s advisable to have an active firewall installed. To set these up, please refer to our Initial Server Setup Guide for Rocky Linux 9.
- Docker installed on your server or local machine, following Steps 1 and 2 of How To Install and Use Docker on Rocky Linux 9.
第一步 – 安装 Docker Compose
为了确保您获取到最新稳定版的Docker Compose,您将从官方Docker仓库下载该软件。
首先,让我们更新软件包数据库。
- sudo dnf check-update
接下来,在你安装 Docker 期间如果你还没有这样做的话,添加官方的 Docker 仓库。
- sudo dnf config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
尽管没有Rocky Linux专用的Docker仓库,但Rocky Linux是基于CentOS的,可以使用相同的仓库。现在你可以安装Docker Compose,它是Docker的插件。
- sudo dnf install docker-compose-plugin
若要验证安装成功,请运行以下指令:
- docker compose version
你会看到类似这样的输出:
Docker Compose version v2.10.2
Docker Compose 现已成功安装在您的系统上。在接下来的部分中,您将看到如何设置一个 docker-compose.yml 文件,并使用此工具快速启动一个容器化环境。
第二步 – 设置一个 docker-compose.yml 文件
为了演示如何设置docker-compose.yml文件并使用Docker Compose工作,您将使用来自Docker Hub的官方Nginx镜像,即公共Docker注册表,创建一个Web服务器环境。这个容器化的环境将提供一个静态的HTML文件。
首先,在你的主文件夹创建一个新的目录,然后进入这个目录。
- mkdir ~/compose-demo
- cd ~/compose-demo
在这个目录中,设置一个应用文件夹作为您的Nginx环境的文档根目录。
- mkdir app
使用您喜欢的文本编辑器,在应用文件夹中创建一个新的index.html文件。
- nano app/index.html
请将以下内容放入此文件中。
~/compose-demo/app/index.html 件可以用中文简单地表示为:
~/compose-demo/app/index.html 可以用中文表述为:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Docker Compose Demo</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/water.css@latest/dist/dark.min.css">
</head>
<body>
<h1>This is a Docker Compose Demo Page.</h1>
<p>This content is being served by an Nginx container.</p>
</body>
</html>
完成操作后,请保存并关闭文件。如果您正在使用nano编辑器,可以通过键入CTRL+X,然后按Y再按ENTER来保存并确认关闭。
接下来,创建 docker-compose.yml 文件。
- nano docker-compose.yml
在你的docker-compose.yml文件中插入以下内容。
docker-compose.yml可以是以下方式的一个选项:
– Docker组合说明
– Docker组合文件
– Docker组合配置
– Docker组合清单
version: '3.7'
services:
web:
image: nginx:alpine
ports:
- "8000:80"
volumes:
- ./app:/usr/share/nginx/html
在通常情况下,docker-compose.yml文件以版本定义开头。这将告诉Docker Compose您正在使用的配置版本。
然后你会有一个服务块,用于设置属于这个环境的服务。在你的情况下,你有一个名为web的单一服务。这个服务使用了nginx:alpine镜像,并通过ports指令设置了一个端口重定向。所有在主机机器(运行Docker Compose的系统)上的8000端口的请求都会被重定向到在80端口上运行Nginx的web容器中。
卷指令将在主机和容器之间创建一个共享的卷。这将与容器共享本地应用程序文件夹,并且该卷将位于容器内的 /usr/share/nginx/html 目录下,这将覆盖Nginx的默认文档根目录。
保存并关闭文件。
您已经设置了一个演示页面和一个docker-compose.yml文件,以创建一个容器化的Web服务器环境来进行服务。下一步,您将使用Docker Compose启动这个环境。
步骤三 — 运行 Docker Compose
有了docker-compose.yml文件,现在可以执行Docker Compose来启动你的环境。以下命令将下载所需的Docker镜像,为web服务创建一个容器,并在后台模式下运行容器化环境。
- docker compose up -d
Docker Compose首先会在本地系统上查找定义的镜像,如果找不到镜像,它将从Docker Hub下载镜像。您将看到以下类似的输出:
Creating network “compose-demo_default” with the default driver Pulling web (nginx:alpine)… alpine: Pulling from library/nginx cbdbe7a5bc2a: Pull complete 10c113fb0c77: Pull complete 9ba64393807b: Pull complete c829a9c40ab2: Pull complete 61d685417b2f: Pull complete Digest: sha256:57254039c6313fe8c53f1acbf15657ec9616a813397b74b063e32443427c5502 Status: Downloaded newer image for nginx:alpine Creating compose-demo_web_1 … done
Note
您的环境现在已在后台启动。要验证容器是否处于活动状态,可以运行:
- docker compose ps
这个命令会显示关于正在运行的容器及其状态的信息,同时还会展示当前已设置的端口重定向。
Name Command State Ports ———————————————————————————- compose-demo_web_1 /docker-entrypoint.sh ngin … Up 0.0.0.0:8000->80/tcp
您现在可以通过将浏览器指向localhost:8000(如果您在本地机器上运行此演示)或your_server_domain_or_IP:8000(如果您在远程服务器上运行此演示)来访问演示应用程序。
你会看到一个像这样的页面。

在docker-compose.yml文件中设置的共享卷将您的应用程序文件与容器的文档根目录保持同步。如果您对index.html文件进行任何更改,容器将自动捕获这些更改,从而在您重新加载页面时在浏览器上反映出来。
在接下来的步骤中,您将看到如何使用Docker Compose命令管理您的容器化环境。
第四步 – 熟悉Docker Compose命令
你已经看到了如何设置一个docker-compose.yml文件,并使用docker compose up命令将您的环境启动起来。现在您将会学习如何使用Docker Compose命令来管理和与您的容器化环境进行交互。
要检查由您的Nginx容器产生的日志,您可以使用日志命令。
- docker compose logs
您将看到类似于这样的输出:
Attaching to compose-demo_web_1 web_1 | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration web_1 | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh web_1 | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf web_1 | 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf web_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh web_1 | /docker-entrypoint.sh: Configuration complete; ready for start up web_1 | 172.22.0.1 – – [02/Jun/2020:10:47:13 +0000] “GET / HTTP/1.1” 200 353 “-” “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36” “-”
如果你想暂停环境执行而不改变容器的当前状态,你可以使用:
- docker compose pause
Pausing compose-demo_web_1 … done
在暂停后恢复执行。
- docker compose unpause
Unpausing compose-demo_web_1 … done
停止命令将终止容器的执行,但不会销毁与容器相关联的任何数据。
- docker compose stop
Stopping compose-demo_web_1 … done
如果您想移除与此容器环境相关联的容器、网络和卷,请使用down命令。
- docker compose down
Removing compose-demo_web_1 … done Removing network compose-demo_default
请注意,这不会删除Docker Compose用于启动您的环境的基础映像(在您的情况下,是nginx:alpine)。这样一来,每当您使用docker-compose up重新启动环境时,由于映像已经存在于您的系统中,该过程将更加快速。
如果您想从您的系统中删除基本图像,您可以使用以下方法:
- docker image rm nginx:alpine
Untagged: nginx:alpine Untagged: nginx@sha256:b89a6ccbda39576ad23fd079978c967cecc6b170db6e7ff8a769bf2259a71912 Deleted: sha256:7d0cdcc60a96a5124763fddf5d534d058ad7d0d8d4c3b8be2aefedf4267d0270 Deleted: sha256:05a0eaca15d731e0029a7604ef54f0dda3b736d4e987e6ac87b91ac7aac03ab1 Deleted: sha256:c6bbc4bdac396583641cb44cd35126b2c195be8fe1ac5e6c577c14752bbe9157 Deleted: sha256:35789b1e1a362b0da8392ca7d5759ef08b9a6b7141cc1521570f984dc7905eb6 Deleted: sha256:a3efaa65ec344c882fe5d543a392a54c4ceacd1efd91662d06964211b1be4c08 Deleted: sha256:3e207b409db364b595ba862cdc12be96dcdad8e36c59a03b7b3b61c946a5741a
Note
结论
在本指南中,您已经学习了如何安装Docker Compose并基于Nginx Web服务器镜像设置容器化环境。您还了解了如何使用Compose命令来管理这个环境。
要获取所有可用的Docker Compose命令的完整参考,请查阅官方文档。