devops基礎--- 說解Docker三劍客之Compose

前言

Docker Compose 是 Docker 容器進行編排的工具,定義和運行多容器的應用,可以一條命令啟動多個容器。

devops基礎--- 說解Docker三劍客之Compose

1.Compose簡介

Compose項目是Docker官方的開源項目,負責實現對Docker容器集群的快速編排。它是一個定義和運行多容器的docker應用工具。使用compose,你能通過YMAL文件配置你自己的服務,然後通過一個命令,你能使用配置文件創建和運行所有的服務。

Compose是一個定位“定義和運行多個Docker容器應用的工具”,其前身是Fig,目前使用的Compose仍然兼容Fig格式的模板文件。

我們使用Compose 基本上分為三步:

  • Dockerfile 定義應用的運行環境
  • docker-compose.yml 定義組成應用的各服務
  • docker-compose使用
devops基礎--- 說解Docker三劍客之Compose

2. 安裝 docker-compose(centos環境)

網址:https://github.com/docker/compose/releases
devops基礎--- 說解Docker三劍客之Compose

參照網站提示,只需要2步,就可以安裝好docker-compose,即是二進制包安裝。從 官方 GitHub Release 處直接下載編譯好的二進制文件即可。

安裝方法:
1. curl -L https://github.com/docker/compose/releases/download/1.25.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
2. chmod +x /usr/local/bin/docker-compose

安裝後確認

$ docker-compose --version
docker-compose version 1.25.0, build 6d101fb
 
devops基礎--- 說解Docker三劍客之Compose

3. docker-compose.yml 定義

關於如何編寫合適自己的docker-compose文件呢。我們可以參考一下之前安裝vmware harbor的compose文件,有參考就是好的老師了,大家可以查看之前寫的文章,關於harbor的介紹。這裡就不再一一分析了配置文件了。可以看到compose是按照yaml的規範來寫的。

[root@localhost harbor]# cat docker-compose.yml 
version: '2'
services:
 log:
 image: vmware/harbor-log:v1.1.2
 container_name: harbor-log 
 restart: always
 volumes:
 - /var/log/harbor/:/var/log/docker/:z
 ports:
 - 127.0.0.1:1514:514
 networks:
 - harbor
 registry:
 image: vmware/registry:2.6.1-photon
 container_name: registry
 restart: always
 volumes:
 - /data/registry:/storage:z
 - ./common/config/registry/:/etc/registry/:z
 networks:
 - harbor
 environment:
 - GODEBUG=netdns=cgo
 command:
 ["serve", "/etc/registry/config.yml"]
 depends_on:
 - log
 logging:
 driver: "syslog"
 options: 
 syslog-address: "tcp://127.0.0.1:1514"
 tag: "registry"
 mysql:
 image: vmware/harbor-db:v1.1.2
 container_name: harbor-db
 restart: always
 volumes:
 - /data/database:/var/lib/mysql:z
 networks:
 - harbor
 env_file:
 - ./common/config/db/env
 depends_on:
 - log
 logging:
 driver: "syslog"
 options: 
 syslog-address: "tcp://127.0.0.1:1514"
 tag: "mysql"
 adminserver:
 image: vmware/harbor-adminserver:v1.1.2
 container_name: harbor-adminserver
 env_file:
 - ./common/config/adminserver/env
 restart: always
 volumes:
 - /data/config/:/etc/adminserver/config/:z
 - /data/secretkey:/etc/adminserver/key:z
 - /data/:/data/:z
 networks:
 - harbor
 depends_on:
 - log
 logging:
 driver: "syslog"
 options: 
 syslog-address: "tcp://127.0.0.1:1514"
 tag: "adminserver"
 ui:
 image: vmware/harbor-ui:v1.1.2
 container_name: harbor-ui
 env_file:
 - ./common/config/ui/env
 restart: always
 volumes:
 - ./common/config/ui/app.conf:/etc/ui/app.conf:z
 - ./common/config/ui/private_key.pem:/etc/ui/private_key.pem:z
 - /data/secretkey:/etc/ui/key:z
 - /data/ca_download/:/etc/ui/ca/:z
 networks:
 - harbor
 depends_on:
 - log
 - adminserver
 - registry
 logging:
 driver: "syslog"
 options: 
 syslog-address: "tcp://127.0.0.1:1514"
 tag: "ui"
 jobservice:
 image: vmware/harbor-jobservice:v1.1.2
 container_name: harbor-jobservice
 env_file:
 - ./common/config/jobservice/env
 restart: always
 volumes:
 - /data/job_logs:/var/log/jobs:z
 - ./common/config/jobservice/app.conf:/etc/jobservice/app.conf:z
 - /data/secretkey:/etc/jobservice/key:z
 networks:
 - harbor
 depends_on:
 - ui
 - adminserver
 logging:
 driver: "syslog"
 options: 
 syslog-address: "tcp://127.0.0.1:1514"
 tag: "jobservice"
 proxy:
 image: vmware/nginx:1.11.5-patched
 container_name: nginx
 restart: always
 volumes:
 - ./common/config/nginx:/etc/nginx:z
 networks:
 - harbor
 ports:
 - 80:80
 - 443:443
 - 4443:4443
 depends_on:
 - mysql
 - registry
 - ui
 - log
 logging:
 driver: "syslog"
 options: 
 syslog-address: "tcp://127.0.0.1:1514"
 tag: "proxy"
networks:
 harbor:
 external: false

4. docker-compose 使用

對於 Compose 來說,大部分命令的對象既可以是項目本身,也可以指定為項目中的服務或者容器。如果沒有特別的說明,命令對象將是項目,這意味著項目中所有的服務都會受到命令影響。

執行docker-compose [COMMAND] --help或者docker-compose help [COMMAND]可以查看具體某個命令的使用格式。

devops基礎--- 說解Docker三劍客之Compose

docker-compose 命令的基本的使用格式是:

docker-compose [-f=...] [options] [COMMAND] [ARGS...]

命令選項:

  • -f, --file FILE 指定使用的 Compose 模板文件,默認為 docker-compose.yml,可以多次指定。
  • -p, --project-name NAME 指定項目名稱,默認將使用所在目錄名稱作為項目名。
  • --x-networking 使用 Docker 的可拔插網絡後端特性
  • --x-network-driver DRIVER 指定網絡後端的驅動,默認為 bridge
  • --verbose 輸出更多調試信息。
  • -v, --version 打印版本並退出。

Docker Compose常用命令如下:

命令	 說明
build	 構建項目中的服務容器
help	 獲得一個命令的幫助
kill	 通過發送SIGKILL信號來強制停止服務容器
config	 驗證和查看compose文件配置
create	 為服務創建容器。只是單純的create,還需要使用start啟動compose
down	 停止並刪除容器,網絡,鏡像和數據卷
exec	 在運行的容器中執行一個命令
logs	 查看服務容器的輸出
pause	 暫停一個服務容器
port 打印某個容器端口所映射的公共端口
ps	 列出項目中目前的所有容器
pull	 拉取服務依賴的鏡像
push	 推送服務鏡像
restart	 重啟項目中的服務
rm	 刪除所有(停止狀態的)服務容器
run	 在指定服務上執行一個命令
scale	設置指定服務運行的容器個數
start	 啟動已經存在的服務容器
stop	 停止已經處於運行狀態的容器,但不刪除它
top	 顯示運行的進程
unpause	 恢復處於暫停狀態中的服務
up	自動完成包括構建鏡像、創建服務、啟動服務並關閉關聯服務相關容器的一些列操作
version	打印版本信息
 


分享到:


相關文章: