准备包含服务和网络的简单 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 下载指定镜像到你的本地机器。