前言
Docker Compose 是 Docker 容器進行編排的工具,定義和運行多容器的應用,可以一條命令啟動多個容器。
1.Compose簡介
Compose項目是Docker官方的開源項目,負責實現對Docker容器集群的快速編排。它是一個定義和運行多容器的docker應用工具。使用compose,你能通過YMAL文件配置你自己的服務,然後通過一個命令,你能使用配置文件創建和運行所有的服務。
Compose是一個定位“定義和運行多個Docker容器應用的工具”,其前身是Fig,目前使用的Compose仍然兼容Fig格式的模板文件。
我們使用Compose 基本上分為三步:
- Dockerfile 定義應用的運行環境
- docker-compose.yml 定義組成應用的各服務
- docker-compose使用
2. 安裝 docker-compose(centos環境)
網址:https://github.com/docker/compose/releases
參照網站提示,只需要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
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]可以查看具體某個命令的使用格式。
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 打印版本信息