部署示例栈
在这一步中,你将学习如何使用 Docker Compose 部署一个示例栈。Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 Compose 时,你可以使用 YAML 文件来配置应用程序的服务。然后,只需一个命令,你就可以根据配置创建并启动所有服务。
由于 Docker Compose 并未预先安装在 LabEx 环境中,你需要先进行安装。我们将安装 1.29.2 版本的 Docker Compose,该版本与已安装的 Docker 版本兼容。
首先,下载 Docker Compose 二进制文件:
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
此命令从官方 GitHub 仓库下载 Docker Compose 二进制文件,并将其保存到 /usr/local/bin/docker-compose
。$(uname -s)
和 $(uname -m)
部分会自动检测你的操作系统和架构。
接下来,为二进制文件添加可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
此命令使下载的文件具有可执行权限。
现在,通过检查 Docker Compose 版本来验证安装情况:
docker-compose --version
你应该会看到类似于 docker-compose version 1.29.2, build 5becea4c
的输出。
既然已经安装了 Docker Compose,让我们创建一个简单的 Docker Compose 文件来定义我们的栈。我们将在 ~/project
目录下创建一个名为 docker-compose.yml
的文件。
使用 nano
编辑器创建并编辑该文件:
nano ~/project/docker-compose.yml
将以下内容粘贴到 docker-compose.yml
文件中:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
app:
image: alpine:latest
command: echo "Hello from Alpine"
这个 docker-compose.yml
文件定义了两个服务:
web
:使用 nginx:latest
镜像,并将主机的 80 端口映射到容器的 80 端口。
app
:使用 alpine:latest
镜像,并运行一个简单的 echo
命令。
按 Ctrl + S
保存文件,按 Ctrl + X
退出编辑器。
在部署栈之前,让我们拉取必要的镜像。虽然 Docker Compose 可以在部署期间自动拉取镜像,但提前显式拉取有时会很有帮助。
拉取 nginx:latest
镜像:
docker pull nginx:latest
拉取 alpine:latest
镜像:
docker pull alpine:latest
现在,使用 docker-compose up
命令部署栈。-d
标志表示以分离模式(在后台)运行容器。
导航到你创建 docker-compose.yml
文件的 ~/project
目录:
cd ~/project
然后,运行命令:
docker-compose up -d
此命令会读取 docker-compose.yml
文件,并创建和启动定义的服务。你应该会看到指示 web
和 app
服务已创建并启动的输出。
要验证服务是否正在运行,你可以列出正在运行的容器:
docker ps
你应该会看到两个正在运行的容器,一个是 web
服务(基于 nginx
)的,另一个是 app
服务(基于 alpine
)的。