最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker使用Swarm組建集群的方法

 更新時(shí)間:2017年11月16日 14:19:26   作者:kongxx  
Docker 使用 Swarm 可以很方便的在多個(gè)主機(jī)上創(chuàng)建容器集群,并且容器之間可以跨主機(jī)網(wǎng)絡(luò)通信。這篇文章主要介紹了Docker使用Swarm組建集群,需要的朋友可以參考下

Swarm 在 Docker 1.12 版本之前屬于一個(gè)獨(dú)立的項(xiàng)目,在 Docker 1.12 版本發(fā)布之后,該項(xiàng)目合并到了 Docker 中,成為 Docker 的一個(gè)子命令。目前,Swarm 是 Docker 社區(qū)提供的唯一一個(gè)原生支持 Docker 集群管理的工具。它可以把多個(gè) Docker 主機(jī)組成的系統(tǒng)轉(zhuǎn)換為單一的虛擬 Docker 主機(jī),使得容器可以組成跨主機(jī)的子網(wǎng)網(wǎng)絡(luò)。

Docker 使用 Swarm 可以很方便的在多個(gè)主機(jī)上創(chuàng)建容器集群,并且容器之間可以跨主機(jī)網(wǎng)絡(luò)通信。

Swarm 的集群分為 Manager 節(jié)點(diǎn)和 Worker 節(jié)點(diǎn)。

Swarm 中使用 Service 來創(chuàng)建/管理使用相同鏡像的多個(gè)容器,多個(gè)容器同時(shí)對(duì)外提供服務(wù),多個(gè)容器之間負(fù)載均衡。每個(gè) Service 有一個(gè)浮動(dòng)IP(VIP),各個(gè)容器還有自己的物理IP。創(chuàng)建基于 Swarm 的 Overlay 網(wǎng)絡(luò),將 Service 掛載到此網(wǎng)絡(luò)上。然后 Service 中的各個(gè)容器便可以通過 Service 名稱和 IP 地址實(shí)現(xiàn)網(wǎng)絡(luò)互通。

下面使用了三個(gè)機(jī)器來組建一個(gè)Swarm集群

bd0    192.168.0.109
bd1    192.168.0.192
bd2    192.168.0.193

Docker 開啟遠(yuǎn)程管理

默認(rèn)情況下,Docker守護(hù)進(jìn)程會(huì)生成一個(gè) /var/run/docker.sock 文件來進(jìn)行本地進(jìn)程通信,而不會(huì)監(jiān)聽任何端口,所以默認(rèn)情況下 Docker 只能在本地使用命令行操作。 如果要在其它機(jī)器上遠(yuǎn)程操作 Docker 主機(jī),就需要讓 Docker 監(jiān)聽一個(gè)端口,這樣才能實(shí)現(xiàn)遠(yuǎn)程通信。

在我的 CentOS 7X 上,首先修改 Docker 配置文件 /etc/sysconfig/docker 中的 OPTIONS 參數(shù),添加

-H unix:///var/run/docker.sock -H 0.0.0.0:5555

修改后參數(shù)類似

OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false -H unix:///var/run/docker.sock -H 0.0.0.0:5555'

然后重新啟動(dòng) Docker 服務(wù)

$ sudo systemctl restart docker.service

測(cè)試一下

sudo docker -H <HOST>:5555 images

創(chuàng)建 Swarm 集群

獲取 Swarm 鏡像

分別在三個(gè)節(jié)點(diǎn)上下載swarm鏡像

$ sudo docker pull swarm

初始化Swarm集群

首先在 bd0 節(jié)點(diǎn)上初始化 Swarm 集群

$ sudo docker swarm init
Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on different interfaces (192.168.0.109 on eth0 and 192.168.122.1 on virbr0) - specify one with --advertise-addr

第一次創(chuàng)建失敗了,原因是我的機(jī)器有兩塊網(wǎng)卡,Swarm不知道要用那塊網(wǎng)卡組建集群,所以需要使用 --advertise-addr 來指定使用那塊網(wǎng)卡。

$ sudo docker swarm init --advertise-addr 192.168.0.109
Swarm initialized: current node (1egy2ark49q6xokudps5wykhn) is now a manager.
To add a worker to this swarm, run the following command:
  docker swarm join \
  --token SWMTKN-1-0x11m2uk7ps9bh7nflkxwirgv0syvacl18rut3hilz4i9lgis3-d9m22hixt0b57hjj81im8bqdl \
  192.168.0.109:2377

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

然后分別在 bd1 和 bd2 節(jié)點(diǎn)上運(yùn)行下面命令將機(jī)器加入集群

$ sudo docker swarm join \
 --token SWMTKN-1-0x11m2uk7ps9bh7nflkxwirgv0syvacl18rut3hilz4i9lgis3-d9m22hixt0b57hjj81im8bqdl \
 192.168.0.109:2377

This node joined a swarm as a worker.

下面查看一下集群節(jié)點(diǎn)信息

$ sudo docker node ls
ID              HOSTNAME STATUS AVAILABILITY MANAGER STATUS
11ochjq4o1s2m6w4u8jxb37w6  bd1    Ready  Active
1egy2ark49q6xokudps5wykhn * bd0    Ready  Active    Leader
b4e2ywnhhd6fhgfxtr1qh4gew  bd2    Ready  Active

創(chuàng)建集群跨主機(jī)網(wǎng)絡(luò)

首先查看一下集群網(wǎng)絡(luò)

$ sudo docker network ls
NETWORK ID     NAME        DRIVER       SCOPE
36679de6466b    bridge       bridge       local
72e853673d8b    docker_gwbridge   bridge       local
b45cef05e017    host        host        local
1zzlk9hpwyqy    ingress       overlay       swarm

添加一個(gè)Swarm網(wǎng)絡(luò)

$ sudo docker network create --driver overlay myswarm
a04evrfrr4cvnbvrummzvg0mn

創(chuàng)建后,查看一下集群網(wǎng)絡(luò)

$ sudo docker network ls
NETWORK ID     NAME        DRIVER       SCOPE
36679de6466b    bridge       bridge       local
72e853673d8b    docker_gwbridge   bridge       local
b45cef05e017    host        host        local
1zzlk9hpwyqy    ingress       overlay       swarm
a04evrfrr4cv    myswarm       overlay       swarm

部署服務(wù)

這里使用 nginx 服務(wù)來演示一下怎樣創(chuàng)建一個(gè)服務(wù)集群。

下載nginx鏡像

$ sudo docker pull nginx

創(chuàng)建服務(wù)

$ sudo docker service create --replicas 2 --name mynginx -p 8000:80 --network=myswarm nginx
5xrm96xveqw5gq63srts1rbhw

這里創(chuàng)建了需要兩個(gè) nginx 實(shí)例的 nginx 服務(wù)。同時(shí),為了能被外網(wǎng)地址訪問,我們做了一下端口映射,映射到物理主機(jī)的8000端口。

查看服務(wù)

$ sudo docker service ls
ID      NAME   REPLICAS IMAGE COMMAND
5xrm96xveqw5 mynginx 2/2    nginx
$ sudo docker service ps mynginx
ID             NAME    IMAGE NODE   DESIRED STATE CURRENT STATE      ERROR
1crmc5ecsjoci8xavxzbnbks3 mynginx.1 nginx bd0   Running    Running 23 seconds ago
divhrq89xhxka8bvb8r9zqqhz mynginx.2 nginx bd2   Running    Running 20 seconds ago
$ sudo docker service inspect mynginx
...
"VirtualIPs": [
  {
    "NetworkID": "1zzlk9hpwyqyocloxy9j9vct7",
    "Addr": "10.255.0.6/16"
  },
  {
    "NetworkID": "a04evrfrr4cvnbvrummzvg0mn",
    "Addr": "10.0.0.2/24"
  }
]
...

在bd0上查看

$ sudo docker ps
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS        NAMES
e480d427fd51    nginx:latest    "nginx -g 'daemon off"  41 seconds ago   Up 40 seconds    80/tcp       mynginx.1.1crmc5ecsjoci8xavxzbnbks3

在bd2上查看

$ sudo docker ps
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS        NAMES
c12d4f9eb457    nginx:latest    "nginx -g 'daemon off"  56 seconds ago   Up 52 seconds    80/tcp       mynginx.2.divhrq89xhxka8bvb8r9zqqhz

服務(wù)已經(jīng)創(chuàng)建并啟動(dòng)了,下面我們?cè)跒g覽器訪問 http://bd0:8000 來驗(yàn)證一下 nginx 服務(wù)的狀態(tài)。

服務(wù)的Failover

首先我們查看一下當(dāng)前服務(wù)的狀態(tài)

$ sudo docker service ps mynginx
ID             NAME    IMAGE NODE   DESIRED STATE CURRENT STATE      ERROR
1crmc5ecsjoci8xavxzbnbks3 mynginx.1 nginx bd0   Running    Running 23 seconds ago
divhrq89xhxka8bvb8r9zqqhz mynginx.2 nginx bd2   Running    Running 20 seconds ago

然后在 bd2 上將其上的服務(wù)停止

$ sudo docker kill mynginx.2.divhrq89xhxka8bvb8r9zqqhz
mynginx.2.divhrq89xhxka8bvb8r9zqqhz

再次觀察服務(wù)狀態(tài),如下:

$ sudo docker service ps mynginx
ID             NAME      IMAGE NODE   DESIRED STATE CURRENT STATE      ERROR
1crmc5ecsjoci8xavxzbnbks3 mynginx.1   nginx bd0   Running    Running 6 minutes ago
br5iyie0dr945ixnq7s77kunr mynginx.2   nginx bd1   Running    Running 4 seconds ago
divhrq89xhxka8bvb8r9zqqhz  \_ mynginx.2 nginx bd2   Shutdown    Failed 5 seconds ago   "task: non-zero exit (137)"

可以看到在 bd1 上又起了一個(gè)實(shí)例用來接替原來在 bd2 上的實(shí)例。

服務(wù)的擴(kuò)容/縮容

增加服務(wù)實(shí)例

$ sudo docker service scale mynginx=3
mynginx scaled to 3
$ sudo docker service ps mynginx
ID             NAME      IMAGE NODE   DESIRED STATE CURRENT STATE        ERROR
1crmc5ecsjoci8xavxzbnbks3 mynginx.1   nginx bd0   Running    Running 7 minutes ago
br5iyie0dr945ixnq7s77kunr mynginx.2   nginx bd1   Running    Running about a minute ago
divhrq89xhxka8bvb8r9zqqhz  \_ mynginx.2 nginx bd2   Shutdown    Failed about a minute ago  "task: non-zero exit (137)"
985tln0aprsvjthjpve0n6qmz mynginx.3   nginx bd2   Running    Preparing 3 seconds ago

減少服務(wù)實(shí)例

$ sudo docker service scale mynginx=2
mynginx scaled to 2
$ sudo docker service ps mynginx
ID             NAME      IMAGE NODE   DESIRED STATE CURRENT STATE          ERROR
1crmc5ecsjoci8xavxzbnbks3 mynginx.1   nginx bd0   Running    Running 7 minutes ago
br5iyie0dr945ixnq7s77kunr mynginx.2   nginx bd1   Shutdown    Shutdown less than a second ago
divhrq89xhxka8bvb8r9zqqhz  \_ mynginx.2 nginx bd2   Shutdown    Failed about a minute ago    "task: non-zero exit (137)"
985tln0aprsvjthjpve0n6qmz mynginx.3   nginx bd2   Running    Running 5 seconds ago

刪除服務(wù)

$ sudo docker service rm mynginx

總結(jié)

以上所述是小編給大家介紹的Docker使用Swarm組建集群的方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 使用非root用戶安裝及啟動(dòng)docker的問題(rootless模式運(yùn)行)

    使用非root用戶安裝及啟動(dòng)docker的問題(rootless模式運(yùn)行)

    docker是使用--userns-remap容器用戶映射宿主機(jī)用戶的方式來解決問題,用戶和組的映射由兩個(gè)配置文件來控制,分別是/etc/subuid和/etc/subgid,本文給大家介紹非root用戶啟動(dòng)docker的問題,感興趣的朋友一起看看吧
    2022-05-05
  • CentOS 7 sshd 鏈接被拒絕問題解決辦法

    CentOS 7 sshd 鏈接被拒絕問題解決辦法

    這篇文章主要介紹了CentOS 7 sshd 鏈接被拒絕問題解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 基于Docker的PHP調(diào)用基于Docker的Mysql數(shù)據(jù)庫(kù)

    基于Docker的PHP調(diào)用基于Docker的Mysql數(shù)據(jù)庫(kù)

    Docker 是一個(gè)開源的應(yīng)用容器引擎,自從接觸docker以來,一直想建立基于Docker的PHP調(diào)用基于Docker的Mysql數(shù)據(jù)庫(kù),下面通過本文給大家介紹下,感興趣的朋友參考下
    2016-11-11
  • 如何解決Docker啟動(dòng)問題docker?is?starting…

    如何解決Docker啟動(dòng)問題docker?is?starting…

    這篇文章主要給大家介紹了關(guān)于如何解決Docker啟動(dòng)問題docker?is?starting…的相關(guān)資料,文中通過圖文將解決的過程介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Docker容器綁定外部IP和端口的方法

    Docker容器綁定外部IP和端口的方法

    Docker允許通過外部訪問容器或者容器之間互聯(lián)的方式來提供網(wǎng)絡(luò)服務(wù)。這篇文章主要介紹了Docker容器綁定外部IP和端口的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • Linux下Docker安裝和使用教程

    Linux下Docker安裝和使用教程

    Docker是一個(gè)開源的引擎,可以輕松的為任何應(yīng)用創(chuàng)建一個(gè)輕量級(jí)的、可移植的、自給自足的容器。這篇文章主要介紹了Linux下Docker安裝和使用教程的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Docker中Nginx反向代理的實(shí)現(xiàn)步驟

    Docker中Nginx反向代理的實(shí)現(xiàn)步驟

    為了安全考慮,我們一般會(huì)設(shè)置反向代理,用來屏蔽應(yīng)用程序真實(shí)的IP和端口號(hào),本文主要介紹了Docker中Nginx反向代理的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • 從源碼構(gòu)建docker-ce的過程分析

    從源碼構(gòu)建docker-ce的過程分析

    這篇文章主要介紹了從源碼構(gòu)建docker-ce的過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • Docker容器的Tengine實(shí)踐

    Docker容器的Tengine實(shí)踐

    Tengine是淘寶開發(fā)的基于nginx的應(yīng)用服務(wù)器,反向代理服務(wù)器。它兼容nginx的所有配置,并且在其上增加了很多實(shí)用的功能,例如動(dòng)態(tài)模塊加載,集成lua語(yǔ)言進(jìn)行擴(kuò)展等,在性能方面有了比較大的改進(jìn)。今天我們來看下在Docker下如何部署
    2016-06-06
  • 詳解Docker Compose 中可用的環(huán)境變量問題

    詳解Docker Compose 中可用的環(huán)境變量問題

    Compose 的多個(gè)部分在某種情況下處理環(huán)境變量。這篇文章主要介紹了Docker Compose 中可用的環(huán)境變量問題,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12

最新評(píng)論

宝丰县| 安多县| 沈阳市| 永寿县| 岳阳市| 卓资县| 会东县| 舒城县| 赫章县| 嘉善县| 静宁县| 安阳市| 武汉市| 措勤县| 繁昌县| 萨嘎县| 三原县| 凤冈县| 右玉县| 德兴市| 襄樊市| 景洪市| 英吉沙县| 临朐县| 十堰市| 五河县| 乌拉特前旗| 旬阳县| 泽州县| 雷波县| 铜鼓县| 大悟县| 贵德县| 康马县| 汕头市| 青神县| 古丈县| 双柏县| 农安县| 海宁市| 乌兰浩特市|