列出栈中的所有服务
在这一步中,你将学习如何列出 Docker 栈(stack)中运行的所有服务。在列出服务之前,我们需要有一个正在运行的栈。由于 Docker Compose 没有预先安装,我们将首先安装它,然后部署一个简单的栈。
首先,让我们安装 Docker Compose。我们将下载二进制文件并使其可执行。
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
现在 Docker Compose 已安装,让我们创建一个简单的 docker-compose.yml
文件来定义我们的栈。我们将在 ~/project
目录中创建一个名为 docker-compose.yml
的文件。
nano ~/project/docker-compose.yml
将以下内容添加到文件中:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
app:
image: alpine:latest
command: sleep 3600
此文件定义了一个包含两个服务的栈:使用 nginx
镜像的 web
服务和使用 alpine
镜像的 app
服务。web
服务将主机上的 80 端口映射到容器内的 80 端口。app
服务只是运行 sleep 3600
命令以保持容器运行。
保存文件并退出编辑器(在 nano 中按 Ctrl+X,Y,Enter)。
现在,让我们使用 docker stack deploy
部署栈。我们将把栈命名为 mystack
。
docker stack deploy -c ~/project/docker-compose.yml mystack
此命令读取 docker-compose.yml
文件,并将其中定义的服务创建为一个名为 mystack
的 Docker 栈。你应该会看到表明正在创建服务的输出。
栈部署完成后,你可以使用 docker stack services
命令并指定栈名来列出栈中的所有服务。
docker stack services mystack
此命令将显示一个表格,展示 mystack
栈中服务的相关信息,包括它们的 ID、名称、模式、副本数、镜像和端口。
你应该会看到类似于以下的输出:
ID NAME MODE REPLICAS IMAGE PORTS
xxxxxxxxxxxx mystack_app replicated 1/1 alpine:latest
xxxxxxxxxxxx mystack_web replicated 1/1 nginx:latest *:80->80/tcp
输出列出了 mystack_app
和 mystack_web
服务,确认它们作为 mystack
栈的一部分正在运行。