使用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
- 測試