准备一个简单的 Docker Compose 项目
在这一步中,我们将准备一个简单的 Docker Compose 项目。Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,你可以使用 YAML 文件来配置应用程序的服务,然后只需一条命令就能根据配置创建并启动所有服务。
由于 LabEx 环境中没有预装 Docker Compose,我们需要先安装它。我们将下载 Docker Compose 二进制文件并赋予可执行权限。
首先,让我们下载 Docker Compose 二进制文件。我们将使用 curl
下载最新稳定版本:
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
该命令会下载适用于你系统架构的 Docker Compose 二进制文件,并保存到 /usr/local/bin/docker-compose
。
接下来,我们需要使下载的二进制文件可执行:
sudo chmod +x /usr/local/bin/docker-compose
该命令为 Docker Compose 二进制文件添加执行权限。
现在,让我们通过检查 Docker Compose 版本来验证安装:
docker-compose --version
你应该能在输出中看到已安装的 Docker Compose 版本,确认安装成功。
现在 Docker Compose 已安装完成,让我们创建一个简单的 Docker Compose 项目。我们将为项目创建一个目录,然后在其中创建 docker-compose.yml
文件。
首先,在你的主目录下创建一个名为 my-compose-app
的目录:
mkdir ~/project/my-compose-app
进入新创建的目录:
cd ~/project/my-compose-app
现在,我们将创建 docker-compose.yml
文件。这个文件将定义我们应用程序的服务。我们将使用 nano
来创建和编辑文件:
nano docker-compose.yml
在 nano
编辑器中,粘贴以下内容:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
app:
image: ubuntu:latest
command: tail -f /dev/null
让我们解析这个 docker-compose.yml
文件:
version: '3.8'
指定 Docker Compose 文件格式版本
services:
定义组成你应用程序的服务
web:
定义一个名为 web
的服务
image: nginx:latest
指定该服务将使用 nginx:latest
Docker 镜像。如果本地没有该镜像,Docker Compose 会从 Docker Hub 拉取
ports:
将主机的 80 端口映射到 web
容器的 80 端口
app:
定义一个名为 app
的服务
image: ubuntu:latest
指定该服务将使用 ubuntu:latest
Docker 镜像
command: tail -f /dev/null
指定 app
容器启动时运行的命令。该命令使容器保持运行状态而不会退出
按 Ctrl + X
,然后按 Y
,最后按 Enter
保存文件。
在启动服务之前,我们需要确保所需的 Docker 镜像可用。虽然 Docker Compose 会在镜像不存在时自动拉取,但提前显式拉取镜像是个好习惯,特别是在网络受限的环境中或为了更快的启动速度。
让我们拉取 nginx:latest
镜像:
docker pull nginx:latest
该命令会从 Docker Hub 下载 nginx:latest
镜像。
接着,拉取 ubuntu:latest
镜像:
docker pull ubuntu:latest
该命令会从 Docker Hub 下载 ubuntu:latest
镜像。
现在,你已经成功准备了一个简单的 Docker Compose 项目,包含 web
和 app
两个服务,并拉取了所需的 Docker 镜像。