Docker 进阶 - Docker Compose
Docker Compose 是 Docker 官方推出的一个工具,用于定义和运行多容器 Docker 应用程序。它通过一个 YAML 文件(默认为 docker-compose.yml
)来配置所有的服务,使得定义、部署和管理相关联的多个容器变得简单高效。下面是对 Docker Compose 的详细解析:
1. 安装 Docker Compose
Docker Compose 通常是随着 Docker Desktop 自动安装的,对于Linux系统,可以从Docker的官方网站下载或通过pip安装。安装完成后,你可以通过 docker-compose --version
命令来检查版本。
[root@bsfc-tech ~]# 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
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 9 100 9 0 0 9 0 0:00:01 --:--:-- 0:00:01 9
[root@bsfc-tech ~]# sudo chmod +x /usr/local/bin/docker-compose
[root@bsfc-tech ~]# docker-compose version
Docker Compose version v2.23.3
2. Docker Compose YAML 文件
Docker Compose 配置文件是使用 YAML 语法编写的,它定义了服务、网络和卷等组件。一个基本的 docker-compose.yml
文件可能如下所示:
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
mysql:
image: mysql:latest
这个例子中定义了两个服务:一个是使用最新 Nginx 镜像的 Web 服务器,另一个是使用最新 mysql 镜像的数据库。
3. 网络配置
Docker Compose 可以为服务自动创建网络,并让服务间的通信变得简单。默认情况下,每个服务都在一个独立的网络中,并且服务名可以作为主机名互相访问。
4. 环境变量
可以在 environment
部分定义环境变量,这些变量会被设置到容器的环境中。这对于配置数据库密码、API密钥等非常有用。
5. 卷挂载
通过 volumes
配置可以实现宿主机与容器间的数据共享或持久化存储。例如:
volumes:
- ./data:/var/lib/mysql/data
这会将主机的 ./data
目录挂载到容器的 /var/lib/mysql/data
,使得数据库的数据可以在容器之外被持久化。
6. 服务扩展与负载均衡
Docker Compose 支持服务的扩展,只需增加服务副本的数量即可实现水平扩展。例如:
services:
web:
deploy:
replicas: 3
这样,Web服务将会部署为3个副本,Docker会自动进行负载均衡。
7. 常用命令
- 启动服务:
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。
以上是本篇文章的全部内容,如对你有帮助帮忙点赞 + 转发 + 收藏。