dockerservice管理是怎樣的

本篇文章為大家展示了docker service管理是怎樣的,內(nèi)容簡明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)專注于企業(yè)網(wǎng)絡(luò)營銷推廣、網(wǎng)站重做改版、五指山網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為五指山等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

如何以方便的方式管理service。

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

deploy

version "3.3"

services:
	wordpress:
		image: wordpress
		ports:
			- 8080:80
		networks:
			- overlay
		deploy:
			mode: replicated
			replicas: 2
			endpoint_mode: vip
			placement:
				constraints:
					- node.role == manager
					- engine.labels.operatingsystem == ubuntu 16.04
				preferences:
					- spread: node.labels.zone
			resources:
				limites:
					cpus: '0.50'
					memory: 50M

上面是一個(gè)例子:

endpoint_mode有兩種取值方式

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

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

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

mode也有兩種取值方式

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

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

placement

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

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

replicas

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

resources

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

restart_policy

如果service因?yàn)槟撤N原因停止了,那么是否需要重啟,以及重啟的一些條件

update_config

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

實(shí)驗(yàn)

我們這個(gè)實(shí)驗(yàn)環(huán)境依舊是使用wordpress。

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

version: '3'

services:

  web:
    image: wordpress
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: MySQL
      WORDPRESS_DB_PASSWORD: 123456
    networks:
      - my-network
    depends_on:
      - mysql
    deploy:
      mode: replicated
      replicas: 3
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
      update_config:
        parallelism: 1
        delay: 10s

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: wordpress
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - my-network
    deploy:
      mode: global
      placement:
        constraints:
          - node.role == manager

volumes:
  mysql-data:

networks:
  my-network:
    driver: overlay

這個(gè)yml文件適用于使用docker-compose工具在本地部署。那如果要部署到swarm cluster中,用docker-compose是不合適的,原因一:networks,我們?cè)诒镜豥ocker-compose時(shí),我們的network是bridge,而我們?cè)趕warm中部署時(shí),service是會(huì)分布到不同的機(jī)器上,所以說networks是不能采用bridge,需要改成overlay。

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

wordpress:運(yùn)行在replicas模式下,并且初始化replicas=3

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

我們上面的docker-compose定義了一個(gè)stack,這個(gè)stack就叫wordpress。我們?cè)趙ordpress 這個(gè)stack中定義了兩個(gè)service,一個(gè)是wordpress一個(gè)是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

可以看到有一個(gè)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…"   
f1dh6i8xqlrf         \_ 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)有一個(gè)web service沒有啟動(dòng)成功,原因未查明。

可以通過瀏覽器訪問。

上述內(nèi)容就是docker service管理是怎樣的,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文題目:dockerservice管理是怎樣的
分享鏈接:http://muchs.cn/article38/ijcepp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)關(guān)鍵詞優(yōu)化、外貿(mào)建站、品牌網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作