主题
Docker Compose
Docker Compose 是 Docker 官方推出的一个工具,用于定义和运行多容器 Docker 应用程序。它通过一个 YAML 文件(默认为 docker-compose.yml)来配置所有的服务,使得定义、部署和管理相关联的多个容器变得简单高效。
安装 Docker Compose
Docker Compose 通常是随着 Docker Desktop 自动安装的,对于Linux系统,可以从Docker的官方网站下载或通过pip安装。安装完成后,你可以通过 docker compose --version 命令来检查版本。
shell
sudo curl -L "https://github.com/docker/compose/releases/download/v2.22.20/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker compose versionDocker Compose YAML 文件
Docker Compose 配置文件是使用 YAML 语法编写的,它定义了服务、网络和卷等组件。一个基本的 docker-compose.yml 文件可能如下所示:
yaml
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
mysql:
image: mysql:latest这个例子中定义了两个服务:一个是使用最新 Nginx 镜像的 Web 服务器,另一个是使用最新 mysql 镜像的数据库。
网络配置
Docker Compose 可以为服务自动创建网络,并让服务间的通信变得简单。默认情况下,每个服务都在一个独立的网络中,并且服务名可以作为主机名互相访问。
环境变量
可以在 environment 部分定义环境变量,这些变量会被设置到容器的环境中。这对于配置数据库密码、API密钥等非常有用。
卷挂载
通过 volumes 配置可以实现宿主机与容器间的数据共享或持久化存储。例如:
yaml
volumes:
- ./data:/var/lib/mysql/data这会将主机的 ./data 目录挂载到容器的 /var/lib/mysql/data,使得数据库的数据可以在容器之外被持久化。
服务扩展与负载均衡
Docker Compose 支持服务的扩展,只需增加服务副本的数量即可实现水平扩展。例如:
yaml
services:
web:
deploy:
replicas: 3这样,Web服务将会部署为3个副本,Docker会自动进行负载均衡。
常用命令
- 启动服务:
docker compose up - 停止并删除服务:
docker compose down - 查看服务状态:
docker compose ps - 构建服务:如果服务使用的镜像是本地不存在的自定义镜像,可以使用
docker compose build命令构建。
Docker Compose 提供了一种声明式的、易于理解的方式,帮助开发者和运维人员更高效地管理多容器应用的生命周期,极大地简化了微服务架构的部署和管理流程。
目前 Docker 官方用 GO 语言重写了 Docker Compose,并将其作为了 docker cli 的子命令,称为 Compose V2。只要将熟悉的 docker-compose 命令替换为 docker compose,即可使用 Docker Compose。