准备包含服务和网络的简单 Compose 文件
在本步骤中,我们将准备一个简单的 Compose 文件来定义两个服务和一个网络。开始之前,我们需要先安装 Docker Compose,因为当前环境中并未预装该工具。
首先下载 Docker Compose 二进制文件。我们将下载兼容当前预装 Docker 版本的 1.29.2 版本:
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 --version
你应该能在控制台看到版本信息,确认 Docker Compose 已正确安装。
安装完成后,让我们为项目创建目录并进入。我们将在 ~/project 目录下创建名为 my-compose-app 的文件夹:
mkdir ~/project/my-compose-app
cd ~/project/my-compose-app
在该目录中,我们将创建名为 docker-compose.yml 的文件,用于定义服务和网络。使用 nano 编辑器创建并编辑该文件:
nano docker-compose.yml
将以下内容粘贴到 docker-compose.yml 文件中。该文件定义了两个服务:web 和 redis,以及一个名为 app-network 的网络:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
networks:
- app-network
redis:
image: redis:latest
networks:
- app-network
networks:
app-network:
driver: bridge
让我们解析这个 docker-compose.yml 文件:
version: '3.8' 指定 Docker Compose 文件格式版本
services: 定义组成应用的各个服务
web: 定义名为 web 的服务
image: nginx:latest 指定该服务使用最新的 nginx 镜像(稍后我们将拉取该镜像)
ports: - "80:80" 将主机的 80 端口映射到 web 容器的 80 端口
networks: - app-network 将 web 服务连接到 app-network
redis: 定义名为 redis 的服务
image: redis:latest 指定该服务使用最新的 redis 镜像(稍后我们将拉取该镜像)
networks: - app-network 将 redis 服务连接到 app-network
networks: 定义服务使用的网络
app-network: 定义名为 app-network 的网络
driver: bridge 指定该网络使用默认的 bridge 驱动
按 Ctrl + X,然后按 Y,最后按 Enter 保存文件。
在启动服务前,我们需要拉取必要的 Docker 镜像:
docker pull nginx:latest
docker pull redis:latest
这些命令会从 Docker Hub 下载指定镜像到你的本地机器。