
今天給大家介紹一下docker-compose的用法,大家可以互相交流!
1、簡介
docker-compose是Docker官方提供的用于定義和管理運行多個Docker容器的開源容器編排工具。
可以使用YML文件來配置應(yīng)用程序需要的所有服務(wù),然后使用docker-compose運行命令,就可以解析YML文件配置創(chuàng)建并啟動文件中配置的所有docker服務(wù)。
可以把docker-compose理解為一個自動化運維命令的打包腳本集合,只要腳本編寫的沒問題,就可以執(zhí)行一條命令啟動所關(guān)聯(lián)的所有服務(wù)。
GitHub:https://github.com/docker/compose。
2、docker-compose的好處
降低運維成本:部署效率高、可控制容器的啟動順序、項目快速遷移、開發(fā)生產(chǎn)環(huán)境保持一致等。
一般一個系統(tǒng)的部署可能涉及到tomcat、mysql、redis、nginx、mongodb等應(yīng)用,如果采用容器部署的話可能涉及十多個容器(中小項目),每個容器都單獨維護的話,會非常繁瑣,可能每個容器需要執(zhí)行幾十個命令,效率非常低。通過docker-compose可以提前編寫好腳本,等上線部署的時候幾分鐘就可以搞定了。比起傳統(tǒng)的項目部署方式效率大大提升了。還可以達到一次編寫腳本,達到多次部署的效果。
開源項目推廣:開源項目作者可以編寫docker-compose腳本,讓使用者可以快速搭建環(huán)境、也可以避免因為硬件環(huán)境造成項目各種報錯的情況。也方便了開源項目的推廣。
3、原理

docker-compose項目是由Python編寫的,其實就是調(diào)用了Docker服務(wù)提供的API來對容器進行管理,因此,只要所在的操作系統(tǒng)的平臺支持Docker API,就可以在其上利用Compose來進行編排管理。
流程:利用Dockerfile定義運行環(huán)境→使用docker-compose.yml定義組成應(yīng)用的各服務(wù)→運行docker-compose up啟動應(yīng)用。
4、安裝教程
(1)二進制方式安裝(推薦國內(nèi)鏡像)
這個是官方地址,可能比較慢,推薦使用國內(nèi)鏡像地址。
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
國內(nèi)鏡像地址
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
驗證方法
下載完之后可以看下 /usr/local/bin 這個目錄有沒有 docker-compose 這個文件。
# 查看一下version,顯示有版本號那就說明安裝成功了
docker-compose -version
卸載
sudo rm /usr/local/bin/docker-compose
(2)通過python的pip方式安裝
yum -y install epel-release
yum -y install python-pip
pip install --upgrade pip
pip -V
pip install docker-compose
docker-compose -version
卸載
sudo pip uninstall docker-compose
5、常用命令
下面給大家整理常用的docker-compose命令。
注意:大部分的compose命令都需要到docker-compose.yml文件所在的目錄下才能執(zhí)行。
docker-compose -h # 查看幫助
docker-compose up # 創(chuàng)建并運行所有容器
docker-compose up -d # 創(chuàng)建并后臺運行所有容器
docker-compose -f docker-compose.yml up -d # 指定模板
docker-compose down # 停止并刪除容器、網(wǎng)絡(luò)、卷、鏡像。
docker-compose logs # 查看容器輸出日志
docker-compose logs -f 容器名 查看容器實時日志
docker-compose pull # 拉取依賴鏡像
dokcer-compose config # 檢查配置
dokcer-compose config -q # 檢查配置,有問題才有輸出
docker-compose restart # 重啟服務(wù)
docker-compose start # 啟動服務(wù)
docker-compose stop # 停止服務(wù)
docker-compose up -d nginx 構(gòu)建建啟動nignx容器
docker-compose exec nginx bash 登錄到nginx容器中
docker-compose ps 顯示所有容器
docker-compose build nginx 構(gòu)建鏡像
docker-compose build --no-cache nginx 不帶緩存的構(gòu)建
docker-compose config -q 驗證(docker-compose.yml)文件配置,當配置正確時,不輸出任何內(nèi)容,當文件配置錯誤,輸出錯誤信息。
docker-compose events --json nginx 以json的形式輸出nginx的docker日志
docker-compose pause nginx 暫停nignx容器
docker-compose unpause nginx 恢復(fù)ningx容器
docker-compose rm nginx 刪除容器(刪除前必須關(guān)閉容器)
6、示例
新建docker-compose.yml文件,這里只是簡單舉例。更深入的案例大家可以自己研究一下。
version: '1'
services:
web1:
image: nginx
ports:
- "8081:80"
container_name: "test1"
networks:
- dev
web2:
image: nginx
ports:
- "8082:80"
container_name: "test2"
networks:
- dev
- pro
networks:
dev:
driver: bridge
pro:
driver: bridge
yaml語法檢查:??https://www.toyaml.com/index.html。??
創(chuàng)建webapp目錄,將docker-compose.yaml文件拷貝到webapp目錄下,使用docker-compose啟動應(yīng)用。
訪問測試:
http://127.0.0.1:8081http://127.0.0.1:8082。?
7、總結(jié)
docker-compose 適合中小項目的部署,如果要搭建分布式部署環(huán)境的話建議使用swam、k8s。如果只是針對單機環(huán)境部署用來學(xué)習(xí)研究的項目還是不錯的選擇。