Docker Swarm 服務編排之命令詳解
Docker有個編排工具docker-compose,可以將組成某個應該的多個docker容器編排在一起,同時管理。同樣在Swarm集群中,可以使用docker stack 將一組相關聯(lián)的服務進行編排管理。
Docker stack 也是一個yaml文件,和一份docker-compose.yml文件差不多,指令也基本一致。但是與compose相比其不支持build、links和network_mode。Docker stack有一個新的指令deploy。
注:stack不支持的指令
Deploy是用來指定swarm服務部署和運行時的相關配置,并且只有使用docker stack deploy 部署swarm集群時才會生效。如果使用docker-compose up 或者docker-compose run時,該選項會被忽略。要使用deploy選項,compose-file中version版本要在3或3+。
version: ’3’services: redis: image: redis:alpine deploy: replicas: 6 update_config:parallelism: 2delay: 10s restart_policy:condition: on-failure
(1)ENDPOINT_MODE
指定swarm服務發(fā)現(xiàn)的模式
endpoint_mode: vip - Docker為swarm集群服務分配一個虛擬IP(VIP),作為客戶端到達集群服務的“前端”。Docker 在客戶端和可用工作節(jié)點之間對服務的請求進行路由。而客戶端不用知道有多少節(jié)點參與服務或者是這些節(jié)點的IP/端口。(這是默認模式) endpoint_mode: dnsrr -DNS輪詢(DNSRR)服務發(fā)現(xiàn)不使用單個虛擬IP。 Docker為服務設置DNS條目,使得服務名稱的DNS查詢返回一個IP地址列表,并且客戶端直接連接到其中的一個。如果您想使用自己的負載平衡器,或者混合Windows和Linux應用程序,則DNS輪詢功能非常有用。
注:version 3.3+
version: '3.3' services: wordpress: image: wordpress ports: - 8080:80 networks: - overlay deploy: mode: replicated replicas: 2 endpoint_mode: vip mysql: image: mysql volumes: - db-data:/var/lib/mysql/data networks: - overlay deploy: mode: replicated replicas: 2 endpoint_mode: dnsrr volumes: db-data: networks: overlay:
(2)LABELS
指定服務的標簽。這些標簽僅在服務上設置,而不在服務的任何容器上設置
version: '3'services: web: image: web deploy: labels:com.example.description: 'This label will appear on the web service'
要改為在容器上設置標簽,請在deploy之外使用標簽鍵
version: '3'services: web: image: web labels: com.example.description: 'This label will appear on all containers for the web service'
(3)MODE
全局(每個群集節(jié)點只有一個容器)或副本(指定容器的數(shù)量)。默認值被副本。
version: ’3’services: worker: image: dockersamples/examplevotingapp_worker deploy: mode: global
(4)PLACEMENT
指定約束和偏好設置
version: ’3’services: db: image: postgres deploy: placement:constraints: - node.role == manager - engine.labels.operatingsystem == ubuntu 14.04preferences: - spread: node.labels.zone
(5)REPLICAS
如果服務是副本模式(默認模式),可以指定該服務運行的容器數(shù)量。
version: ’3’services: worker: image: dockersamples/examplevotingapp_worker networks: - frontend - backend deploy: mode: replicated replicas: 6
(6)RESOURCES
資源限制配置
version: ’3’services: redis: image: redis:alpine deploy: resources:limits: cpus: ’0.50’ memory: 50Mreservations: cpus: ’0.25’ memory: 20M
在下例中,redis服務限制使用不超過50M的內存和0.50(50%)的可用處理時間(CPU),并且擁有20M的內存和0.25個CPU時間(總是可用)。
(7)RESTART_POLICY
配置在容器退出時是否并如何重啟容器。取代restart指令。
condition :none、on-failure和any(默認any) delay :在重啟嘗試之間等待多久(默認0) max_attempts :嘗試重啟的次數(shù)(默認一直重啟,直到成功) window : 在確實一個重啟是否成功前需要等待的窗口時間version: '3'services: redis: image: redis:alpine deploy: restart_policy:condition: on-failuredelay: 5smax_attempts: 3window: 120s
(8)UPDATE_CONFIG
配置服務如何升級
parallelism:同一時間升級的容器數(shù)量 delay:容器升級間隔時間 failure_action:升級失敗后的動作(continue、rollback和pause。默認pause)。 monitor:更新完成后確實成功的時間(ns|us|ms|s|m|h)。 (默認0s)max_failure_ratio:更新期間允許的失敗率o rder:更新期間的操作順序。停止優(yōu)先(舊任務在開始新任務之前停止)或者先啟動(首先啟動新任務,并且正在運行的任務短暫重疊)(默認停止優(yōu)先)注意:只支持v3.4及更高版本。version: ’3.4’services: vote: image: dockersamples/examplevotingapp_vote:before depends_on: - redis deploy: replicas: 2 update_config:parallelism: 2delay: 10sorder: stop-first
(9)depends_on
表示服務之間的依賴關系
version: ’3’services: web: build: . depends_on: - db - redis redis: image: redis db: image: postgres
(10)dns
自定義DNS服務器。可以是單個值或列表。
dns: 8.8.8.8dns: - 8.8.8.8 - 9.9.9.9
(11)dns_search
dns_search: example.comdns_search: - dc1.example.com - dc2.example.com
(12)environment
添加環(huán)境變量。您可以使用數(shù)組或字典。任何布爾值;真/假,是/否,需要用引號括起來以確保它們不被YML解析器轉換為True或False。
environment: RACK_ENV: development SHOW: ’true’ SESSION_SECRET: environment: - RACK_ENV=development - SHOW=true - SESSION_SECRET
(13)expose
開放容器的端口而不用在主機上暴露端口,它們只能被相關聯(lián)的服務獲取。只能指定內部端口。
expose: - '3000' - '8000'
以上就是Docker Swarm 服務編排之命令的詳細內容,更多關于Docker Swarm 服務編排的資料請關注好吧啦網其它相關文章!
相關文章:
1. css代碼優(yōu)化的12個技巧2. 告別AJAX實現(xiàn)無刷新提交表單3. ASP中格式化時間短日期補0變兩位長日期的方法4. 讀大數(shù)據(jù)量的XML文件的讀取問題5. CSS Hack大全-教你如何區(qū)分出IE6-IE10、FireFox、Chrome、Opera6. ASP刪除img標簽的style屬性只保留src的正則函數(shù)7. ASP中if語句、select 、while循環(huán)的使用方法8. HTML DOM setInterval和clearInterval方法案例詳解9. XHTML 1.0:標記新的開端10. asp批量添加修改刪除操作示例代碼
