1. 程式人生 > >Docker-Compose服務編排

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:用於連線另一個容器服務,同

dockerrun –line,主要影響到容器中的網路

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的版本號。