docker三劍客之docker compose
- docker compose簡介
- docker compose安裝
- docker-compose的常用命令
- docker-compose.yml屬性
- 創建docker-compose.yml檔案(haproxy,nginx)
docker compose相關的一些介紹.
docker compose簡介
-
微服務架構的應用系統一般包括若干個微服務,每個微服務一般都會部署多個實體,如果每個微服務都要手動啟停,那么效率是極低的,而且作業量巨大
-
Docker Compose 是一種編排服務,基于python語言開發,是一個用于在Docker上定義并運行復雜應用的工具,可以讓用戶在集群中部署分布式應用
-
用戶可以很容易地用一個組態檔定義一個多容器的應用,然后使用一條指令安裝這個應用的所有依賴,完成構建
-
解決了容器間如何管理編排問題
-
Docker Compose 中有兩個重要的概念:
服務 (service):一個應用的容器,實際上可以包括若干運行相同鏡像的容器實體,
專案 (project):由一組關聯的應用容器組成的一個完整業務單元,在 docker-compose.yml 檔案中定義, -
可以類比之前的ansible及saltstack,都是為了更方便集群式的部署分布式應用

docker compose安裝
docker compose的github下載地址.
這種方式比較慢
curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
推薦使用阿里云的,下載速度快,下載地址.
把腳本放在/usr/local/bin/下.名字為docker-compose ,加執行權限 ,docker-compose命令就有了,

docker-compose的常用命令
docker-compose 命令 --help 獲得一個命令的幫助
docker-compose up -d nginx 構建啟動nignx容器
docker-compose exec nginx bash 登錄到nginx容器中
docker-compose down 此命令將會停止 up 命令所啟動的容器,并移除網路
docker-compose ps 列出專案中目前的所有容器
docker-compose restart nginx 重新啟動nginx容器
docker-compose build nginx 構建鏡像
docker-compose build --no-cache nginx 不帶快取的構建
docker-compose top 查看各個服務容器內運行的行程
docker-compose logs 查看服務的輸出
docker-compose logs -f nginx 查看nginx的實時日志
docker-compose images 列出 Compose 檔案包含的鏡像
docker-compose config 驗證檔案配置,當配置正確時,不輸出任何內容,當檔案配置錯誤,輸出錯誤資訊,
docker-compose events --json nginx 以json的形式輸出nginx的docker日志
docker-compose pause nginx 暫停nignx容器
docker-compose unpause nginx 恢復ningx容器
docker-compose rm nginx 洗掉容器(洗掉前必須關閉容器,執行stop)
docker-compose stop nginx 停止nignx容器
docker-compose start nginx 啟動nignx容器
docker-compose restart nginx 重啟專案中的nignx容器
docker-compose.yml屬性
docker-compose.yml屬性相關檔案查閱.
docker-compose.yml屬性
Image : 指定為鏡像名稱或鏡像 ID,如果鏡像在本地不存在,Compose 將會嘗試拉取這個鏡像,
Build : 指定 Dockerfile 所在檔案夾的路徑, Compose 將會利用它自動構建這個鏡像,然后使用這個鏡像,
Command : 覆寫容器啟動后默認執行的命令,
Links : 鏈接到其它服務中的容器,
Ports : 埠映射,
Expose : 暴露埠資訊
Volumes : 卷掛載路徑設定
創建docker-compose.yml檔案(haproxy,nginx)
檔案名默認是docker-compose.yml 如果名字不是默認,則加-f引數,指定檔案,

[root@server1 ~]# mkdir compose
[root@server1 ~]# cd compose/
[root@server1 compose]# ls
[root@server1 compose]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://nmcjqb9k.mirror.aliyuncs.com"]
}
[root@server1 compose]# docker pull nginx
[root@server1 compose]# docker pull haproxy
[root@server1 compose]# vim docker-compose.yml
[root@server1 compose]# mkdir web1
[root@server1 compose]# echo web1 > web1/index.html
[root@server1 compose]# mkdir web2
[root@server1 compose]# echo web2 > web2/index.html
[root@server1 ~]# docker inspect haproxy
/usr/local/etc/haproxy/haproxy.cfg
[root@server1 compose]# mkdir haproxy
[root@server1 compose]# cd haproxy/
[root@server1 haproxy]# vim haproxy.cfg
[root@server1 haproxy]# docker run -d --name demo -v "$(pwd)"/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg haproxy
[root@server1 haproxy]# docker logs demo
[root@server1 haproxy]# docker rm -f demo
demo
[root@server1 haproxy]# cd ..
[root@server1 compose]# docker-compose up
[root@server1 compose]# docker-compose start
[root@server1 compose]# docker-compose ps
docker network create mynet

version: "3.9"
services:
web1:
image: nginx
networks:
- mynet
volumes:
- ./web1:/usr/share/nginx/html ####/usr/share/nginx/html : nginx的測驗頁 ,
web2:
image: nginx
networks:
- mynet
volumes:
- ./web2:/usr/share/nginx/html
haproxy:
image: haproxy
networks:
- mynet
ports:
- "80:80"
volumes:
- ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
networks:
mynet:
[root@server1 haproxy]# vim haproxy.cfg





[root@server1 compose]# docker-compose stop web1
Stopping compose_web1_1 ... done
[root@server1 compose]# docker-compose logs web1


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/257415.html
標籤:其他
