Docker-Compose服務編排
雖然我們上一篇通過Dockerfile可以很很方便的建立一個屬於自己的映象,但是我們不難發現通過docker run命令的方式啟動多個容器的時候還是比較繁瑣的,幾十上百個微服務節點要通過docker run方式來啟動的話,估計再好的運維人員也有敲錯命令的時候。
這裡我們再來研究一個容器編排方式DockerCompose。
安裝:
yum -y install epel-release
yum -y install python-pip
pip install docker-compose
docker-compose version
解除安裝:
rm /usr/local/bin/docker-compose
pip uninstall docker-compose
DockerCompose編排命令:
image:指定映象tag或者ID
image: redis
image: 19ce95cb7258
image: name/version
build:用來指定一個包含Dockerfile檔案的路徑,從這個命令可以看出DockerCompose也可以自動先建立映象後建立容器。
build: ./dir
build:
context:./dir
dockerfile:dockerfileName
args:
-key=value //這個對應dockerfile裡的arg
links:用於連線另一個容器服務,同
links:
-db
-db:mysql
-web
自動在容器/etc/hosts檔案裡新增
192.168.226.133 db
192.168.226.133 mysql
192.168.226.134 web
ports:用於暴露埠,同docker run –p
ports:
-“1111”
-“1112:1113”
volumes:mysql等帶儲存而且重啟後儲存不能刪除的這種需要使用,宿主機目錄掛載到容器中。
volumes:
-srcDir tagDir
environment:新增環境變數,同docker
run –e
environment:
-key=value
-key=value
depends_on:指定容器間的依賴,控制容器的啟動順序。
extra_hosts:新增主機名對映,在容器/etc/hosts中新增內容
extra_hosts:
-“hostname:192.168.226.135”
extends: docker-compose之間的整合,子檔案可以覆蓋父檔案中的具體引數
extends:
file:parent.yml
service:subName
其它引數:
Net設定網路,Dns設定域名解析,CPU等
DockerCompose啟動命令:
啟動: docker-compose up
停止: docker-compose stop
重啟: docker-compose restart
實戰:
新建一個空白目錄/eureka,在其中新建一個docker-compose.yml檔案,開始書寫前面eureka的容器管理檔案。
version: '2'
services:
eureka1:
image: eureka:v1
ports:
- '1111:1111'
environment:
- spring.profiles.active=peer1
eureka2:
image: eureka:v1
ports:
- '1112:1112'
environment:
- spring.profiles.active=peer2
在/eureka下執行啟動命令:docker-compose up
然後chrome瀏覽器測試下,成功了。
注意docker-compose.yml第一個屬性version不能亂定義,我開始理解錯了以為是我自定義的,報瞭如下錯誤,後來搞明白是docker-compose的版本號。