Skip to main content

Docker Compose

简介

Dockerfile 可以让程序在任何地方运行,例如 Web 服务、Redis、MySQL、Nginx。但如果需要启动多个容器,都需要使用 run 命令启动,这样就很麻烦。而通过 Docker Compose,可以将多个容器融合在一起,实现自动化部署。

简而言之:通过 Docker Compose 将多个容器自动化部署。

安装

前提需要安装 docker

1、下载

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

# 上为官方的地址 可能有些慢 下为daocloud
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

2、授权文件权限

sudo chmod +x /usr/local/bin/docker-compose

3、测试安装结果

docker-compose --version

使用

docker-compose up

YAML 规则

Compose file version 3 reference | Docker Documentation

Compose 中有两个重要的概念:

  • 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

下面是一个简单的 YAML 配置文件示例:

version: '3' # Compose 版本,根据 Docker 版本来匹配

services: # 服务
服务1:
# 服务配置
images:
build:
ports:
network:
environment:
depends_on:
服务2:
networks:
volumes:

在上面的示例中,我们可以看到:

  • version:Compose 版本,要根据 Docker 版本来匹配。
  • services:服务,定义了多个应用容器。
  • networks:网络,可以为服务定义自己的网络。
  • volumes:数据卷,可以为每个服务挂载数据卷。

在每个服务定义中,我们可以配置以下内容:

  • image:使用的镜像名称。
  • build:使用 Dockerfile 构建镜像。
  • ports:对外暴露的端口。
  • network:连接到的网络。
  • environment:设置的环境变量。
  • depends_on:定义服务之间的依赖关系。

更详细的 Compose 文件规则可以参考官方文档:Compose file version 3 reference | Docker Documentation