
經過了近6個月的磨砺,docker 1.13在2017年1月釋出,它标志着 docker 内置編排能力的進一步成熟。本文将介紹docker在編排方面的新進展。
docker compose v1/v2
docker 1.13
啟動服務
<code>docker-compose up -d</code>
<code>docker stack deploy --compose-file=docker-compose.yml </code>
伸縮服務
<code>docker-compose scale xxx=n</code>
<code>docker service scale xxx=n</code>
停止服務
<code>docker-compose down</code>
<code>docker stack rm</code>
跨主控端
否
是
首先你需要安裝 docker 1.13 或以上版本的docker for windows/mac/linux
然後執行<code>docker swarm init</code>指令開啟 docker swarm 模式
下面的 <code>wordpress.yml</code> 定義了包含兩個服務的wordpress應用
<code>web</code>服務:部署3個執行個體的<code>wordpress:4</code>容器
<code>mysql</code>服務:部署1個執行個體的<code>mysql:5.7</code>容器
使用如下指令進行操作
然後就可以通過浏覽器來通路 wordpress 應用了
下面的 <code>redis.yml</code> 定義了包含三個服務的redis叢集應用
<code>redis-master</code>服務:部署1個執行個體的<code>redis:3</code>容器作為初始的redis master
<code>redis-slave</code>服務:部署2個執行個體的<code>redis:3</code>容器作為redis slave
<code>sentinel</code>服務:部署3個執行個體的<code>redis-sentinel:5.7</code>容器作為叢集的sentinel
docker compose <code>v3</code> 和 <code>v2</code> 模闆檔案都采用yaml格式,但是文法上存在一定差距
首先,使用<code>version: "3"</code> 或 <code>version: "3.1"</code> (docker 1.13.1) 作為版本聲明
其次,由于 swarm mode 中網絡的特殊性,compose模闆中一些聲明比如 <code>expose</code> 和 <code>links</code> 會被忽略。注意:不能再使用 link 定義的網絡别名來進行容器互聯,可以使用服務名連接配接。
另外, <code>volumes_from</code> 不再支援,隻能使用命名資料卷來實作容器資料的持久化和共享;
v3 中引入了 <code>deploy</code> 指令,可對swarm mode中服務部署的進行細粒度控制,包括
<code>resources</code>:定義 <code>cpu_shares</code>, <code>cpu_quota</code>, <code>cpuset</code>, <code>mem_limit</code>, <code>memswap_limit</code> 等容器資源控制。(v1/v2中相應指令不再支援)
<code>mode</code>:支援 <code>global</code> 和 <code>replicated</code> (預設) 模式的服務;
<code>replicas</code>:定義 <code>replicated</code> 模式的服務的複本數量
<code>placement</code>:定義服務容器的部署放置限制條件
<code>update_config</code>:定義服務的更新方式
<code>restart_policy</code>:定義服務的重新開機條件 (v1/v2中<code>restart</code>指令不再支援)
<code>service</code>:定義服務的标簽
雖然 docker cli 已經提供了對docker compose v3模闆的支援。但是 docker compose 依然可以作為一個開發工具獨立使用,并同時繼續支援v1/v2/v2.1等版本已有編排模闆。但是當利用 <code>docker-compose up</code> 或 <code>docker-compose run</code> 來部署v3模闆時,模闆中的 <code>deploy</code> 指令将被忽略
docker cli隻支援v3模闆,但是不支援模闆中的 <code>build</code> 指令,隻允許建構好的鏡像來啟動服務的容器。
本文介紹了docker 1.13引入的docker compose v3 規範和操作方式,也對比了不同版本之間的差異,幫助使用者實作應用的遷移。
随着docker swarm mode的逐漸成熟,阿裡雲容器服務也在積極開發對其的全面支援和與阿裡雲産品的對接,相關功能将會在不久推出,為使用者在雲中提供服務化的容器應用架構。