Docker Swarm集群部署

之前在生產(chǎn)练俐,測(cè)試環(huán)境都接觸過(guò)docker swarm注暗,但沒(méi)實(shí)際部署過(guò),趁著部署自己做的django應(yīng)用猫牡,練一練手。

1.創(chuàng)建虛擬主機(jī):

λ brick [~] → docker-machine create --driver virtualbox Manager1   #命令會(huì)默認(rèn)使用boot2docker.iso鏡像創(chuàng)建

λ brick [~] → docker-machine create --driver virtualbox Worker1
Running pre-create checks...
Creating machine...
(Worker1) Copying /Users/brick/.docker/machine/cache/boot2docker.iso to /Users/brick/.docker/machine/machines/Worker1/boot2docker.iso...
(Worker1) Creating VirtualBox VM...
(Worker1) Creating SSH key...
(Worker1) Starting the VM...
(Worker1) Check network to re-create if needed...
(Worker1) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env Worker1\.  
  • 創(chuàng)建完畢可以使用docker-machine env查看環(huán)境變量邓线,使用 docker-machine ls 命令查看當(dāng)前狀態(tài)
λ brick [~] → docker-machine env Worker1

export DOCKER_TLS_VERIFY="1"

export DOCKER_HOST="[tcp://192.168.99.101:2376](tcp://192.168.99.101:2376)"

export DOCKER_CERT_PATH="/Users/brick/.docker/machine/machines/Worker1"

export DOCKER_MACHINE_NAME="Worker1"

# Run this command to configure your shell:

# eval $(docker-machine env Worker1)

λ brick [~] → docker-machine ls

NAME       ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS

Manager1   -        virtualbox   Running   [tcp://192.168.99.100:2376](tcp://192.168.99.100:2376)           v18.06.1-ce

Worker1    -        virtualbox   Running   [tcp://192.168.99.101:2376](tcp://192.168.99.101:2376)           v18.06.1-ce
  • 目前虛擬主機(jī)創(chuàng)建完成淌友,主機(jī)之間沒(méi)有關(guān)系,下面來(lái)建立Swarm集群關(guān)系

2. 建立Swarm集群關(guān)系:

  • 首先介紹下進(jìn)入虛擬機(jī)的方法:
λ brick [~] → docker-machine ssh Manager1

                        ##         .

                  ## ## ##        ==

               ## ## ## ## ##    ===

           /"""""""""""""""""\___/ ===

      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~

           \______ o           __/

             \    \         __/

              \____\_______/

_                 _   ____     _            _

| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __

| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|

| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |

|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|

Boot2Docker version 18.06.1-ce, build HEAD : c7e5c3e - Wed Aug 22 16:27:42 UTC 2018

Docker version 18.06.1-ce, build e68fc7a

接下來(lái)開始建立集群關(guān)系

  • 首先初始化Manager1
λ brick [~] → docker-machine ssh Manager1 docker swarm init --listen-addr 192.168.99.100:2377 --advertise-addr 192.168.99.100

Swarm initialized: current node (rqpfrj4275wmprkolyn5xc4lv) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-4g5n38ltezp4kcr4475hbiyuuvmboptdd40cw6ornwloua36fx-abu5norpke47qkaj5fq3p0961 192.168.99.100:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

#第一段 docker-machine ssh Manager1 就是進(jìn)入虛擬機(jī)骇陈,如果是在實(shí)體機(jī)上則不需要震庭,可以直接docker swarm init,第二段就是初始化swarm你雌。
  • 如果需要多個(gè)Manager器联,則需要獲取集群加入Manager的Token:
λ brick [~] → docker-machine ssh Manager1 docker swarm join-token manager

To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-4g5n38ltezp4kcr4475hbiyuuvmboptdd40cw6ornwloua36fx-9k2ik00lho3opuvuqbgutezyc 192.168.99.100:2377
  • 接下來(lái)獲取Worker加入的Token
λ brick [~] → docker-machine ssh Manager1 docker swarm join-token worker

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-4g5n38ltezp4kcr4475hbiyuuvmboptdd40cw6ornwloua36fx-abu5norpke47qkaj5fq3p0961 192.168.99.100:2377
  • 其他主機(jī)加入集群二汛,接下來(lái)加入worker,加入Manager則需要替換Token為Manager Token:
λ brick [~] → docker-machine ssh worker1 docker swarm join --token SWMTKN-1-4g5n38ltezp4kcr4475hbiyuuvmboptdd40cw6ornwloua36fx-abu5norpke47qkaj5fq3p0961 192.168.99.100:2377

This node joined a swarm as a worker.
  • 到這里集群就初始化完成了拨拓,查看集群狀態(tài):
λ brick [~] → docker-machine ssh Manager1 docker node ls

ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION

rqpfrj4275wmprkolyn5xc4lv *   Manager1            Ready               Active              Leader              18.06.1-ce

l2snsykhcb0aamcybudadd5j2     Worker1             Ready               Active                                  18.06.1-ce

3. 網(wǎng)絡(luò)與部署服務(wù)

  • 查看集群網(wǎng)絡(luò)狀態(tài):
λ brick [~] → docker-machine ssh Manager1 docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

0dde92fc25d0        bridge              bridge              local

2e636adb3dc7        docker_gwbridge     bridge              local

928cd824a8a6        host                host                local

lske5xp48ozu        ingress             overlay             swarm

170c25ea6308        none                null                local
  • 創(chuàng)建一個(gè)跨主機(jī)網(wǎng)絡(luò):
λ brick [~] → docker-machine ssh Manager1 docker network create -d overlay --attachable --subnet=192.168.0.0/16 --gateway=192.168.0.100 test_network

mik7b8hen2p09swm16a4k683v

#參數(shù)說(shuō)明:

#overlay 虛擬網(wǎng)絡(luò)驅(qū)動(dòng)類型

#--attachable 允許其他主機(jī)加入網(wǎng)絡(luò)

#--subnet 子網(wǎng)網(wǎng)段

#--gateway 網(wǎng)關(guān)地址
  • 拉取nginx鏡像用于測(cè)試:
λ brick [~] → docker-machine ssh Manager1 docker pull[registry.docker-cn.com/library/nginx](http://registry.docker-cn.com/library/nginx)

Using default tag: latest

latest: Pulling from library/nginx

802b00ed6f79: Pulling fs layer

e9d0e0ea682b: Pulling fs layer

d8b7092b9221: Pulling fs layer

d8b7092b9221: Verifying Checksum

d8b7092b9221: Download complete

e9d0e0ea682b: Verifying Checksum

e9d0e0ea682b: Download complete

802b00ed6f79: Verifying Checksum

802b00ed6f79: Download complete

802b00ed6f79: Pull complete

e9d0e0ea682b: Pull complete

d8b7092b9221: Pull complete

Digest: sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d3

Status: Downloaded newer image for[registry.docker-cn.com/library/nginx:latest](http://registry.docker-cn.com/library/nginx:latest)
  • 接下來(lái)部署服務(wù):
λ brick → docker-machine ssh Manager1 docker service create--publish published=80,target=80 --replicas 2 --name helloworld --network=test_network nginx

kx5ptsjersb5m7pr5e47hi4f4

overall progress: 0 out of 2 tasks

1/2:

2/2:

overall progress: 0 out of 2 tasks

overall progress: 1 out of 2 tasks

overall progress: 2 out of 2 tasks

verify: Waiting 5 seconds to verify that tasks are stable...

verify: Waiting 4 seconds to verify that tasks are stable...

verify: Waiting 3 seconds to verify that tasks are stable...

verify: Waiting 2 seconds to verify that tasks are stable...

verify: Waiting 1 seconds to verify that tasks are stable...

verify: Service converged

#--publish published=80,target=80 映射端口肴颊,對(duì)外端口80,映射到容器80渣磷。 映射完成后所有節(jié)點(diǎn)都能訪問(wèn)80端口
#--replicas 指定實(shí)例數(shù)量

λ brick [~] → docker-machine ssh Manager1 docker service ls   #查看服務(wù)狀態(tài)

ID                  NAME                MODE                REPLICAS            IMAGE               PORTS

kx5ptsjersb5        helloworld          replicated2/2nginx:latest

λ brick_tezign [~] → docker-machine ssh Manager1 docker service ps helloworld.#查看服務(wù)狀態(tài), 可以看到具體運(yùn)行在哪個(gè)node

ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE             ERROR                              PORTS

9dj38dzmhgjp        helloworld.1        nginx:latest        Worker1             Running             Running 20 minutes ago

vzr9dunuj3e0        helloworld.2        nginx:latest        Manager1            Running             Running 20 minutes ago

l5xlqc6pwusk         \_ helloworld.2    nginx:latest        Manager1            Shutdown            Rejected 21 minutes ago   "No such image: nginx:latest@s…"

i43egfl03bgm         \_ helloworld.2    nginx:latest        Manager1            Shutdown            Rejected 21 minutes ago   "No such image: nginx:latest@s…"
  • 進(jìn)入容器:
docker-machine ssh Manager1 #進(jìn)入虛擬機(jī)Manager1

docker@Manager1:~$ docker ps -a #查看Manager1上運(yùn)行的容器

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES

501e6609af46        nginx:latest        "nginx -g 'daemon of…"   42 minutes ago      Up 42 minutes       80/tcp              helloworld.2.vzr9dunuj3e0vcv2xl2xso84j

docker@Manager1:~$ docker exec -it 501e6609af46 /bin/bash  #以bash進(jìn)入容器

root@501e6609af46:/#
  • 服務(wù)部署完畢

更多swarm相關(guān)操作請(qǐng)自行g(shù)oogle婿着,這里不再贅述

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市醋界,隨后出現(xiàn)的幾起案子竟宋,更是在濱河造成了極大的恐慌,老刑警劉巖形纺,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丘侠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡逐样,警方通過(guò)查閱死者的電腦和手機(jī)蜗字,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)官研,“玉大人秽澳,你說(shuō)我怎么就攤上這事∠酚穑” “怎么了担神?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)始花。 經(jīng)常有香客問(wèn)我妄讯,道長(zhǎng),這世上最難降的妖魔是什么酷宵? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任亥贸,我火速辦了婚禮,結(jié)果婚禮上浇垦,老公的妹妹穿的比我還像新娘炕置。我一直安慰自己,他們只是感情好男韧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布朴摊。 她就那樣靜靜地躺著,像睡著了一般此虑。 火紅的嫁衣襯著肌膚如雪甚纲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天朦前,我揣著相機(jī)與錄音介杆,去河邊找鬼鹃操。 笑死,一個(gè)胖子當(dāng)著我的面吹牛春哨,可吹牛的內(nèi)容都是我干的荆隘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼悲靴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼臭胜!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起癞尚,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤耸三,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后浇揩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仪壮,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年胳徽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了积锅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡养盗,死狀恐怖缚陷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情往核,我是刑警寧澤箫爷,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站聂儒,受9級(jí)特大地震影響虎锚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜衩婚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一窜护、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧非春,春花似錦柱徙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至敬矩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蠢挡,已是汗流浹背弧岳。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工凳忙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人禽炬。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓涧卵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親腹尖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子柳恐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 本文為轉(zhuǎn)載,原文:Docker Swarm集群部署實(shí)踐 1. 介紹 Swarm 在 Docker 1.12 版本之...
    ChainZhang閱讀 8,825評(píng)論 2 3
  • 介紹 Swarm 在 Docker 1.12 版本之前屬于一個(gè)獨(dú)立的項(xiàng)目热幔,在 Docker 1.12 版本發(fā)布之后...
    vcancy閱讀 2,214評(píng)論 0 3
  • 傳銷是什么乐设?在我的觀念里,是書本上的名詞绎巨,老師家長(zhǎng)嘴里的毒瘤近尚,是一個(gè)個(gè)故事,是離我很遠(yuǎn)的一件事场勤。 朋友是什么戈锻?在我...
    踏雨安然閱讀 367評(píng)論 0 0
  • 文/曹懷寧,國(guó)家二級(jí)心理咨詢師 前段時(shí)間和媳,我的咨詢室走進(jìn)了一位剛剛大學(xué)畢業(yè)的女孩Z格遭。她從小很優(yōu)秀,父母也是寵愛(ài)和包...
    心理咨詢師曹懷寧閱讀 294評(píng)論 0 2
  • 今天的喜鵲全力以赴 愛(ài)情的眼神變得空前肅穆 為什么牛郎織女的愛(ài)能打動(dòng)喜鵲 不能撼動(dòng)王母娘娘的鐵石心腸 幸虧喜鵲不是...
    能不要昵稱嗎閱讀 591評(píng)論 8 22