今天給大家介紹一下Docker-compose的用法,大家可以互相交流!
1、簡介
docker-compose是Docker官方提供的用于定義和管理運行多個Docker容器的開源容器編排工具。
可以使用YML文件來配置應用程序需要的所有服務,然后使用docker-compose運行命令,就可以解析YML文件配置創建并啟動文件中配置的所有docker服務。
可以把docker-compose理解為一個自動化運維命令的打包腳本集合,只要腳本編寫的沒問題,就可以執行一條命令啟動所關聯的所有服務。
GitHub:https://github.com/docker/compose
2、docker-compose的好處
降低運維成本:部署效率高、可控制容器的啟動順序、項目快速遷移、開發生產環境保持一致等。
一般一個系統的部署可能涉及到Tomcat、MySQL、redis、Nginx、mongodb等應用,如果采用容器部署的話可能涉及十多個容器(中小項目),每個容器都單獨維護的話,會非常繁瑣,可能每個容器需要執行幾十個命令,效率非常低。通過docker-compose可以提前編寫好腳本,等上線部署的時候幾分鐘就可以搞定了。比起傳統的項目部署方式效率大大提升了。還可以達到一次編寫腳本,達到多次部署的效果。
開源項目推廣:開源項目作者可以編寫docker-compose腳本,讓使用者可以快速搭建環境、也可以避免因為硬件環境造成項目各種報錯的情況。也方便了開源項目的推廣。
3、原理
docker-compose項目是由Python/ target=_blank class=infotextkey>Python編寫的,其實就是調用了Docker服務提供的API來對容器進行管理,因此,只要所在的操作系統的平臺支持Docker API,就可以在其上利用Compose來進行編排管理。
流程:利用Dockerfile定義運行環境→使用docker-compose.yml定義組成應用的各服務→運行docker-compose up啟動應用
4、安裝教程
4.1 二進制方式安裝(推薦國內鏡像)
這個是官方地址,可能比較慢,推薦使用國內鏡像地址
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
國內鏡像地址
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
4.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文件所在的目錄下才能執行
docker-compose -h # 查看幫助
docker-compose up # 創建并運行所有容器
docker-compose up -d # 創建并后臺運行所有容器
docker-compose -f docker-compose.yml up -d # 指定模板
docker-compose down # 停止并刪除容器、網絡、卷、鏡像。
docker-compose logs # 查看容器輸出日志
docker-compose logs -f 容器名 查看容器實時日志
docker-compose pull # 拉取依賴鏡像
dokcer-compose config # 檢查配置
dokcer-compose config -q # 檢查配置,有問題才有輸出
docker-compose restart # 重啟服務
docker-compose start # 啟動服務
docker-compose stop # 停止服務
docker-compose up -d nginx 構建建啟動nignx容器
docker-compose exec nginx bash 登錄到nginx容器中
docker-compose ps 顯示所有容器
docker-compose build nginx 構建鏡像
docker-compose build --no-cache nginx 不帶緩存的構建
docker-compose config -q 驗證(docker-compose.yml)文件配置,當配置正確時,不輸出任何內容,當文件配置錯誤,輸出錯誤信息。
docker-compose events --json nginx 以json的形式輸出nginx的docker日志
docker-compose pause nginx 暫停nignx容器
docker-compose unpause nginx 恢復ningx容器
docker-compose rm nginx 刪除容器(刪除前必須關閉容器)
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
創建webApp目錄,將docker-compose.yaml文件拷貝到webapp目錄下,使用docker-compose啟動應用。
docker-compose up -d
訪問測試
http://127.0.0.1:8081http://127.0.0.1:8082
7、總結
docker-compose 適合中小項目的部署,如果要搭建分布式部署環境的話建議使用swam、k8s。如果只是針對單機環境部署用來學習研究的項目還是不錯的選擇。