使用Compose部署多容器应用
多容器应用:例如要部署一个wordpress,需要使用wordpress的镜像创建一个容器,还需要使用mysql的镜像创建另一个容器用来存储wordpress的数据。
一、多容器应用的管理痛点
- 要从Dockerfile文件build多个image或者从DockerHub拉取多个image。
- 要分别创建多个容器,且创建的时候使用不同的参数。
- 要分别管理这些容器,启动、停止、删除。
二、Docker Compose
1.docker compose解决了多容器应用管理的痛点
在一个文件中定义了多容器的信息,docker compose通过这个文件,对这一组容器进行统一的管理,启动、停止、删除。
2.基本介绍
- Docker Compose是一个工具
- 这个工具可以通过一个yml文件,来定义多容器应用的信息
- 通过一条命令,就可以根据yml文件中定义的信息,去创建、管理这多个容器。
- 这个文件默认的名字是:docker-compose.yml
三、Docker Compose中三大概念
1.Services
- 一个service定义(代表)一个容器:
在定义这个容器的时候,可以指定它从某个路径下的dockerfile中build出一个镜像从而创建;也可以指定从dockerhub的image创建。 - 可以给service指定network和volume:
就如同docker run是指定-v参数一样。但是这里指定network和volume并不是直接指定具体的值,而是指定他们的名称,具体的值由下面的其他两大概念指定。 - 示例:
docker run -d --network=tier-b -v=mysql_data:/var/lib/mysql mysql:latest
2.Volumes
services:
...
volumes:
mysql_data: /docker_data/mysql # 指定这个volume的名称和路径
3.Networks
services:
...
volumes:
...
networks:
tier-b: # 指定这个network的名称,services中用的就是这个名称
driver: bridge
四、Linux下安装Docker Compose
- 下载docker compose的可执行文件
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 给文件夹可执行权限
sudo chmod +x /usr/local/bin/docker-compose
- 测试