日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从零开始学习docker(二十一)service管理

發(fā)布時間:2024/9/16 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从零开始学习docker(二十一)service管理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本節(jié)我們介紹如何以方便的方式管理service。

我們之前提到docker-compose,適用于本地開發(fā),可以在本機部署,提供了很大的便利。而swarm是一個cluster,可不可以通過docker-compose來實現(xiàn)定義的application?答案是可以,但是不推薦。僅僅使用docker命令行就可以。我們依然可以使用docker-compose.yml文件去定義一個應(yīng)用,但是我們一般不用docker-compose去部署,而是直接使用docker命令,而且我們這個部署只能用于swarm cluster。

deploy

version "3.3"services:wordpress:image: wordpressports:- 8080:80networks:- overlaydeploy:mode: replicatedreplicas: 2endpoint_mode: vipplacement:constraints:- node.role == manager- engine.labels.operatingsystem == ubuntu 16.04preferences:- spread: node.labels.zoneresources:limites:cpus: '0.50'memory: 50M

上面是一個例子:

endpoint_mode有兩種取值方式

第一種是vip,就是之前介紹的虛擬ip,用戶service之間互相訪問時暴露的VIP,通過虛擬IP訪問時,底層通過LVS將虛擬IP負(fù)載均衡成具體的某一個service的ip地址。

第二種是dnsrr ,DNS round-robin。這種方式不使用虛擬ip,而是直接使用service的ip地址,我們知道service的ip地址有很多個,特別是我們做了橫向擴展之后,每個service都有自己的ip地址,如果使用dnsrr的時候,我們不使用IP地址,而是使用dns。

默認(rèn)使用的是vip。

mode也有兩種取值方式

第一種是global,表示這個service在全局cluster中只有一個。不能做橫向擴展。

第二種是replicated,默認(rèn)值??梢宰鰴M向擴展。

placement

用于設(shè)置service的一些限制條件。

例如上面的wordpress service一定會部署到manager節(jié)點上

replicas

如果這個service的mode設(shè)置成replicated的時候就可以在初始化的時候定義,需要幾個replicas。

resources

limit表示CPU和memory最多可以用多少

restart_policy

如果service因為某種原因停止了,那么是否需要重啟,以及重啟的一些條件

update_config

要去做一些配置,比如對service做一些更新的時候,要遵循的一些原則。比如設(shè)置parallelism:2表示同時最多更新2個replicas,delay每次更新后的延遲時間。

實驗

我們這個實驗環(huán)境依舊是使用wordpress。

我們的docker-compose.yml文件內(nèi)容如下:

version: '3'services:web:image: wordpressports:- 8080:80environment:WORDPRESS_DB_HOST: mysqlWORDPRESS_DB_PASSWORD: 123456networks:- my-networkdepends_on:- mysqldeploy:mode: replicatedreplicas: 3restart_policy:condition: on-failuredelay: 5smax_attempts: 3update_config:parallelism: 1delay: 10smysql:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: 123456MYSQL_DATABASE: wordpressvolumes:- mysql-data:/var/lib/mysqlnetworks:- my-networkdeploy:mode: globalplacement:constraints:- node.role == managervolumes:mysql-data:networks:my-network:driver: overlay

這個yml文件適用于使用docker-compose工具在本地部署。那如果要部署到swarm cluster中,用docker-compose是不合適的,原因一:networks,我們在本地docker-compose時,我們的network是bridge,而我們在swarm中部署時,service是會分布到不同的機器上,所以說networks是不能采用bridge,需要改成overlay。

上面的配置中,mysql service設(shè)置為:mode:global表示這個mysql服務(wù)不允許做replicas。并且限制mysql只能部署到manager節(jié)點。

wordpress:運行在replicas模式下,并且初始化replicas=3

我們要將docker-compose.yml部署到swarm cluster中使用的命令是docker stack?

我們上面的docker-compose定義了一個stack,這個stack就叫wordpress。我們在wordpress 這個stack中定義了兩個service,一個是wordpress一個是mysql。

執(zhí)行命令:

iie4bu@swarm-manager:~/ddy/docker-compose-swarm$ vim docker-compose.yml iie4bu@swarm-manager:~/ddy/docker-compose-swarm$ ls docker-compose.yml iie4bu@swarm-manager:~/ddy/docker-compose-swarm$ docker stack deploy wordpress --compose-file=docker-compose.yml Creating network wordpress_my-network Creating service wordpress_web Creating service wordpress_mysql

查看現(xiàn)在stack的情況:

iie4bu@swarm-manager:~/ddy/docker-compose-swarm$ docker stack ls NAME SERVICES wordpress 2

可以看到有一個wordpress stack

查看wordpress stack的詳細(xì)信息:

iie4bu@swarm-manager:~/ddy/docker-compose-swarm$ docker stack ps wordpress ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS qzpzs6kj1ec5 wordpress_mysql.yd42nx646854nrzyqohwmpgwi mysql:5.7 swarm-manager Running Running about a minute ago se9rn27p694f wordpress_web.1 wordpress:latest swarm-worker2 Running Running 2 minutes ago lz10x51q2on8 wordpress_web.2 wordpress:latest swarm-worker1 Shutdown Failed about a minute ago "starting container failed: fa…" z8tsp0b08uzs \_ wordpress_web.2 wordpress:latest swarm-worker1 Shutdown Failed about a minute ago "starting container failed: fa…" f1dh5i8xqlrf \_ wordpress_web.2 wordpress:latest swarm-worker1 Shutdown Failed about a minute ago "starting container failed: fa…" n3la11ttg30v \_ wordpress_web.2 wordpress:latest swarm-worker1 Shutdown Failed 2 minutes ago "starting container failed: fa…" 8n4gcxt3b1kv wordpress_web.3 wordpress:latest swarm-manager Running Running 2 minutes ago

發(fā)現(xiàn)有一個web service沒有啟動成功,原因未查明。

可以通過瀏覽器訪問。

總結(jié)

以上是生活随笔為你收集整理的从零开始学习docker(二十一)service管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。