bd1    192.168.0.192
bd2    192.168.0.193

Docker 開啟遠程管理

默認情況下,Docker守護進程會生成一個 /var/run/docker.sock 文件來進行本地進程通信,而不會監聽任何端口,所以默認情況下 Docker 只能在本地使用命令行操作。 如果要在其它機器上遠程操作 Docker 主機,就需要讓 Docker 監聽一個端口,這樣才能實現遠程通信。

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

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

修改后參數類似

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

然后重新啟動 Docker 服務

$ sudo systemctl restart docker.service

測試一下

sudo docker -H <HOST>:5555 images

創建 Swarm 集群

獲取 Swarm 鏡像

分別在三個節點上下載swarm鏡像

$ sudo docker pull swarm

初始化Swarm集群

首先在 bd0 節點上初始化 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

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

$ 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 節點上運行下面命令將機器加入集群

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

This node joined a swarm as a worker.

下面查看一下集群節點信息

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

創建集群跨主機網絡

首先查看一下集群網絡

$ 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

添加一個Swarm網絡

$ sudo docker network create --driver overlay myswarm
a04evrfrr4cvnbvrummzvg0mn

創建后,查看一下集群網絡

$ 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

部署服務

這里使用 nginx 服務來演示一下怎樣創建一個服務集群。

下載nginx鏡像

$ sudo docker pull nginx

創建服務

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

這里創建了需要兩個 nginx 實例的 nginx 服務。同時,為了能被外網地址訪問,我們做了一下端口映射,映射到物理主機的8000端口。

查看服務

$ 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

服務已經創建并啟動了,下面我們在瀏覽器訪問 http://bd0:8000 來驗證一下 nginx 服務的狀態。

服務的Failover

首先我們查看一下當前服務的狀態

$ 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 上將其上的服務停止

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

再次觀察服務狀態,如下:

$ 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 上又起了一個實例用來接替原來在 bd2 上的實例。

服務的擴容/縮容

增加服務實例

$ 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

減少服務實例

$ 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

刪除服務

$ sudo docker service rm mynginx

總結

以上所述是小編給大家介紹的Docker使用Swarm組建集群的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對三五互聯網站的支持!

更多關于云服務器域名注冊,虛擬主機的問題,請訪問三五互聯官網:m.shinetop.cn

贊(0)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » Docker使用Swarm組建集群的方法

登錄

找回密碼

注冊

主站蜘蛛池模板: 下面一进一出好爽视频| 色窝窝免费一区二区三区| 马鞍山市| 亚洲av久久精品狠狠爱av| 女高中生强奷系列在线播放| 濮阳市| 四虎在线永久免费看精品| 春菜花亚洲一区二区三区| free性开放小少妇| 国产超碰无码最新上传| 真实单亲乱l仑对白视频| 亚洲人成网线在线播放VA| 安顺市| 日韩av天堂综合网久久| 成人免费无码大片A毛片抽搐色欲| 惠来县| 国产精品伊人久久综合网| 国产国产午夜福利视频| 亚洲av成人一区二区三区| 日韩在线视频线观看一区| 国产首页一区二区不卡| 人人爽人人爽人人爽| 国产成人亚洲精品狼色在线| 久久精品免视看国产成人| 精品人妻伦一二二区久久| 中国熟女仑乱hd| 精品一卡2卡三卡4卡乱码精品视频| 方山县| 九九久久自然熟的香蕉图片| 婷婷开心色四房播播| 富民县| 五月综合网亚洲乱妇久久| 偷偷做久久久久免费网站| 乱人伦人妻中文字幕无码久久网| 亚洲国产成人资源在线| 蓬安县| 极品蜜桃臀一区二区av| 免费看国产精品3a黄的视频| 成年女性特黄午夜视频免费看| 免费人成在线观看成人片| 一本一道av无码中文字幕麻豆|