成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

實戰|兩種常用的跨主機Docker容器互通方法

開發 前端
路由方式和網橋方式,都可以使跨主機之間的Docker容器互通,操作起來也比較簡單;再結合docker-compose,可以非常迅速的拉起一套環境;

[[314045]]

 現在提到容器,可能很容易想到的就是Kubernates,確實它很火,也很強大,但是對于規模非常小,容器不多的小環境,Kubernetes 就顯得比較累贅了,直接使用Docker Compose拉取一個小環境,這種使用方式,也有不少用戶在使用;本篇通過實戰,來介紹兩種,在不使用類似Kubernetes容器管理平臺的下,實現跨主機Docker容器之間互通的方法;

基礎環境準備

安裝Docker

在能訪問公網且DNS正常的情況下,將下面的代碼,直接復制并在docker-host-01,docker-host-02上執行,即可完成Docker安裝。

  1. #卸載原有docker環境及依賴,并安裝必要的包 
  2. yum remove docker-latest-logrotate docker-logrotate docker-selinux docker-engine 
  3. yum install -y yum-utils   device-mapper-persistent-data   lvm2 
  4.  
  5. #使用阿里云安裝源 
  6. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
  7. rpm --import http://mirrors.aliyun.com/docker-ce/linux/centos/gpg 
  8. yum makecache fast 
  9. yum -y install docker-ce 
  10.  
  11. #安裝完成啟動Docker 
  12. systemctl start docker 
  13. systemctl enable docker 
  14. systemctl status docker 

 

下載演示鏡像

Docker官方在https://hub.docker.com/中提供了很多鏡像,你可以根據自己的需要選擇并下載,也可以自行安裝Docker鏡像倉庫,此處我就直接下載使用docker hub中提供的centos官方鏡像進行后續演示;

[root@docker-host-01 ~]# docker pull centos

鏡像在兩臺Docker主機中都下載,當然如果網速慢的話,可以下載一個,然后使用docker save 打包鏡像,將鏡像傳到第二臺機器上,在用docker load導入鏡像。方法很多,適合你的才是最好的。

鏡像下載完成,使用docker images命令查看。

  1. [root@docker-host-01 ~]# docker images 
  2. REPOSITORY         TAG                 IMAGE ID           CREATED             SIZE 
  3. centos             latest             470671670cac        3 days ago         237MB 

 

通過直接路由方式實現跨主機Docker容器通信

 

 

 

 

直接路由這種方式操作起來比較簡單,對Docker原生網絡改變最小,只需要互相指定對方的路由即可完成跨主機Docker容器之間的互通;

主機配置及IP信息

基礎環境需要準備兩臺主機,系統可以是CentOS,Ubuntu;需要能支持安裝Docker,本實戰文檔中使用的主機信息如下;

主機名IP配置容器網段

  1. 主機名 IP  配置  容器網段 
  2. docker-host-01  192.168.61.132  2核4G內存,50G硬盤    172.16.200.0/24 
  3. docker-host-02  192.168.61.135  2核4G內存,50G硬盤    172.16.201.0/24 

 

調整Docker網絡配置

Docker安裝完之后,默認會創建一個docker0的網橋,啟動的Docker容器網段是172.17.0.1/16,如果不做調整,兩臺Docker主機上的容器,就可能出現IP地址沖突,所以我們先將默認docker0網橋的地址按【主機配置及IP信息】中規劃的進行調整。

在docker-host-01中創建/etc/docker/daemon.json文件,內容如下

  1. [root@docker-host-01 ~]# cat /etc/docker/daemon.json 
  2.  "bip""172.16.200.1/24" 

 

重啟docker服務

[root@docker-host-01 ~]# systemctl restart docker

完成重啟后,再看docker0的IP,已經調整完成了;

  1. [root@docker-host-01 ~]# ifconfig docker0 
  2. docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 
  3.       inet 172.16.200.1 netmask 255.255.255.0 broadcast 172.16.200.255 
  4.       inet6 fe80::42:b3ff:fef9:1cc1 prefixlen 64 scopeid 0x20<link> 
  5.       ether 02:42:b3:f9:1c:c1 txqueuelen 0 (Ethernet) 
  6.       RX packets 2916 bytes 121276 (118.4 KiB) 
  7.       RX errors 0 dropped 0 overruns 0 frame 0 
  8.       TX packets 3115 bytes 10870567 (10.3 MiB) 
  9.       TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 

 

使用同樣的方法,調整docker-host-02主機上的的docker網絡。

創建并進入Docker容器

在docker-host-01中執行下面命令創建容器并查看IP和網關信息。

  1. [root@docker-host-01 ~]# docker run --name host-01-docker -it centos /bin/bash 
  2. [root@6cb01044fda8 /]# yum install -y net-tools #安裝工具查看ip和網關 
  3. [root@6cb01044fda8 /]# ifconfig eth0 
  4. eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 
  5.       inet 172.16.200.2 netmask 255.255.255.0 broadcast 172.16.200.255 
  6.       ether 02:42:ac:10:c8:02 txqueuelen 0 (Ethernet) 
  7.       RX packets 3168 bytes 10876332 (10.3 MiB) 
  8.       RX errors 0 dropped 0 overruns 0 frame 0 
  9.       TX packets 2970 bytes 165058 (161.1 KiB) 
  10.       TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 
  11. [root@6cb01044fda8 /]# route -n 
  12. Kernel IP routing table 
  13. Destination     Gateway         Genmask         Flags Metric Ref   Use Iface 
  14. 0.0.0.0         172.16.200.1    0.0.0.0         UG    0      0        0 eth0 
  15. 172.16.200.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0 

 

如上,創建了一個名為host-01-docker 的容器,容器的ip是172.16.200.2/24,網關是172.16.200.1;同理在docker-host-02中也執行上述命令;

  1. [root@docker-host-02 ~]# docker run --name host-02-docker -it centos /bin/bash 
  2. [root@f52ed4088844 /]# yum install -y net-tools 
  3. [root@f52ed4088844 /]# ifconfig eth0 
  4. eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 
  5.       inet 172.16.201.2 netmask 255.255.255.0 broadcast 172.16.201.255 
  6.       ether 02:42:ac:10:c9:02 txqueuelen 0 (Ethernet) 
  7.       RX packets 3436 bytes 10890638 (10.3 MiB) 
  8.       RX errors 0 dropped 0 overruns 0 frame 0 
  9.       TX packets 3159 bytes 175122 (171.0 KiB) 
  10.       TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 
  11.  
  12. [root@f52ed4088844 /]# route -n 
  13. Kernel IP routing table 
  14. Destination     Gateway         Genmask         Flags Metric Ref   Use Iface 
  15. 0.0.0.0         172.16.201.1    0.0.0.0         UG    0      0        0 eth0 
  16. 172.16.201.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0 

 

host-02-docker容器的ip是172.16.201.2/24,網關是172.16.201.1;此時我們直接在host-01-docker容器里面去ping host-02-docker容器的IP 172.16.201.2 肯定是不通的。

 

 

添加互通路由

 

 

原理非常簡單,就是通過互相指定到達對方容器的路由;

  1. 在docker-host-01主機添加到172.16.201.0/24網段的路由,指向docker-host-02的IP:192.168.61.135; 
  2. 在docker-host-02主機添加到172.16.200.0/24網段的路由,指向docker-host-01的IP:192.168.61.132; 

docker-host-01主機上的操作如下

  1. [root@docker-host-01 ~]# route -n 
  2. Kernel IP routing table 
  3. Destination     Gateway         Genmask         Flags Metric Ref   Use Iface 
  4. 0.0.0.0         192.168.61.2    0.0.0.0         UG    0      0        0 ens33 
  5. 169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens33 
  6. 172.16.200.0    0.0.0.0         255.255.255.0   U     0      0        0 docker0 
  7. 192.168.61.0    0.0.0.0         255.255.255.0   U     0      0        0 ens33 
  8. [root@docker-host-01 ~]# route add -net 172.16.201.0/24 gw 192.168.61.135 
  9. [root@docker-host-01 ~]# route -n 
  10. Kernel IP routing table 
  11. Destination     Gateway         Genmask         Flags Metric Ref   Use Iface 
  12. 0.0.0.0         192.168.61.2    0.0.0.0         UG    0      0        0 ens33 
  13. 169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens33 
  14. 172.16.200.0    0.0.0.0         255.255.255.0   U     0      0        0 docker0 
  15. 172.16.201.0    192.168.61.135  255.255.255.0   UG    0      0        0 ens33 
  16. 192.168.61.0    0.0.0.0         255.255.255.0   U     0      0        0 ens33 

 

docker-host-02主機上的操作如下

  1. [root@docker-host-02 ~]# route -n 
  2. Kernel IP routing table 
  3. Destination     Gateway         Genmask         Flags Metric Ref   Use Iface 
  4. 0.0.0.0         192.168.61.2    0.0.0.0         UG    0      0        0 ens33 
  5. 169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens33 
  6. 172.16.201.0    0.0.0.0         255.255.255.0   U     0      0        0 docker0 
  7. 192.168.61.0    0.0.0.0         255.255.255.0   U     0      0        0 ens33 
  8. [root@docker-host-02 ~]# route add -net 172.16.200.0/24 gw 192.168.61.132 
  9. [root@docker-host-02 ~]# route -n 
  10. Kernel IP routing table 
  11. Destination     Gateway         Genmask         Flags Metric Ref   Use Iface 
  12. 0.0.0.0         192.168.61.2    0.0.0.0         UG    0      0        0 ens33 
  13. 169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens33 
  14. 172.16.200.0    192.168.61.132  255.255.255.0   UG    0      0        0 ens33 
  15. 172.16.201.0    0.0.0.0         255.255.255.0   U     0      0        0 docker0 
  16. 192.168.61.0    0.0.0.0         255.255.255.0   U     0      0        0 ens33 

 

驗證在docker-host-01主機上的Docker容器中,ping docker-host-02中的Docker容器IP:172.16.201.2

 

 

最后,需要注意一點,通過路由打通跨主機Docker容器之間的 網絡,必須確保Docker宿主機是在相同的網段;

 

 

通過橋接到Docker宿主機網絡實現跨主機Docker容器通信

 

 

將Docker容器網絡直接橋接到Docker宿主機網絡里面,

 

 

容器通信過程中不在需要NAT的轉換,優點是性能提升,容器及Docker宿主機IP統一管理;缺點是,容器及Docker宿主機IP統一管理之后帶來的IP地址分配變復雜了;下面就來實戰一下這種場景。

主機配置及IP信息

基礎環境需要準備兩臺主機,系統可以是CentOS,Ubuntu;需要能支持安裝Docker,本實戰文檔中使用的主機信息如下;

主機名IP配置容器網段

docker-host-01192.168.61.1322核4G內存,50G硬盤192.168.61.64/27

docker-host-02192.168.61.1352核4G內存,50G硬盤192.168.61.96/27

調整Docker宿主機網橋

默認情況下docker0,是不與物理接口連接了,Docker宿主機的IP地址也是配置在物理接口上的,現在需要把物理接口添加到docker0網橋中,并把IP地址配置到docker0上;具體操作如下

在docker-host-01上,創建并編輯docker配置文件,bip表示網橋接口的地址,配置為Docker宿主機 IP,fixed-cidr配置的是分配給docker容器的IP地址,這個地方需要注意,每臺宿主機上不能重復,否則會IP地址沖突。

 

  1. [root@docker-host-01 ~]# cat /etc/docker/daemon.json 
  2.  
  3.  "bip""192.168.61.132/24"
  4.  "fixed-cidr""192.168.61.64/27"
  5.  "default-gateway""192.168.61.1" 

重啟docker服務,重啟完成后,192.168.61.132已經被配置到docker0上了

  1. [root@docker-host-01 ~]# systemctl restart docker 
  2. [root@docker-host-01 ~]# ifconfig docker0 
  3. docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 
  4.       inet 192.168.61.132 netmask 255.255.255.0 broadcast 192.168.61.255 
  5.       inet6 fe80::42:b3ff:fef9:1cc1 prefixlen 64 scopeid 0x20<link> 
  6.       ether 02:42:b3:f9:1c:c1 txqueuelen 0 (Ethernet) 
  7.       RX packets 6420 bytes 308080 (300.8 KiB) 
  8.       RX errors 0 dropped 0 overruns 0 frame 0 
  9.       TX packets 6373 bytes 21761327 (20.7 MiB) 
  10.       TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 

 

將物理接口添加到docker0網橋中,同時清空物理網卡上的IP ,注意必須兩條命令一起執行,否則會斷網。

[root@docker-host-01 ~]# brctl addif docker0 ens33&&ifconfig ens33 0.0.0.0

注意:網橋配置,如果需要永久保存,需要通過配置文件的方式配置

檢查網橋信息

  1. [root@docker-host-01 ~]# brctl show 
  2. bridge name     bridge id               STP enabled     interfaces 
  3. docker0         8000.0242b3f91cc1       no             ens33 

 

創建并進入Docker容器

在docker-host-01中創建容器并查看容器ip是192.168.61.64

  1. [root@docker-host-01 ~]# docker run -it centos /bin/bash 
  2. [root@811f01405906 /]# ip a 
  3. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 
  4.   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
  5.   inet 127.0.0.1/8 scope host lo 
  6.       valid_lft forever preferred_lft forever 
  7. 12: eth0@if13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
  8.   link/ether 02:42:c0:a8:3d:40 brd ff:ff:ff:ff:ff:ff link-netnsid 0 
  9.   inet 192.168.61.64/24 brd 192.168.61.255 scope global eth0 
  10.       valid_lft forever preferred_lft forever 

 

在docker-host-02中創建容器并查看容器ip是192.168.61.96

  1. [root@docker-host-02 ~]# docker run -it centos /bin/bash 
  2. [root@7940a9efcf6a /]# ip a 
  3. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 
  4.   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
  5.   inet 127.0.0.1/8 scope host lo 
  6.       valid_lft forever preferred_lft forever 
  7. 4: eth0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
  8.   link/ether 02:42:c0:a8:3d:60 brd ff:ff:ff:ff:ff:ff link-netnsid 0 
  9.   inet 192.168.61.96/24 brd 192.168.61.255 scope global eth0 
  10.       valid_lft forever preferred_lft forever 

 

驗證在docker-node-01宿主機的容器中ping docker-node-02宿主機上的容器IP 192.168.61.96,可以ping通驗證沒問題。

 

 

直接橋接到Docker宿主機網絡這種方式,打通不通宿主機上的Docker容器,在IP,網段劃分上會比較麻煩,

 

 

總結

路由方式和網橋方式,都可以使跨主機之間的Docker容器互通,操作起來也比較簡單;再結合docker-compose,可以非常迅速的拉起一套環境;

責任編輯:武曉燕 來源: 新鈦云服
相關推薦

2021-11-02 18:27:48

數據挖掘項目

2010-11-25 10:21:20

MySql查詢時間段

2010-08-20 13:51:44

路由器密碼

2010-08-13 15:12:05

CISCO密碼

2009-11-11 16:36:19

路由協議介紹

2010-03-05 16:03:30

Python連接數據庫

2009-12-18 09:45:12

ADSL無線共享上網

2009-12-14 15:34:54

動態路由協議

2011-06-23 09:07:16

2012-10-16 09:40:38

洗牌算法

2010-10-14 14:33:15

MySQL多表聯查

2019-01-11 13:57:06

2011-08-09 13:50:01

iPhone動畫UIView

2010-09-17 09:37:27

Java安裝方法

2023-05-31 19:10:31

2015-10-30 11:22:44

文件哈希校驗方式Windows

2024-06-12 12:08:03

鏡像倉庫Cloudflare域名

2010-11-19 11:57:15

Oracle密碼丟失

2011-03-03 17:00:37

pure-ftpdchroot

2021-10-09 09:15:01

Windows 11安全模式系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99久久中文字幕三级久久日本 | 国产亚洲区| 日本网站在线看 | 国产精品久久久亚洲 | 国产乱码高清区二区三区在线 | 免费一级片 | 午夜视频在线观看网站 | 亚洲理论在线观看电影 | 亚洲女人天堂网 | 欧美综合一区二区 | 91精品国产高清一区二区三区 | 性生生活大片免费看视频 | 成年人视频在线免费观看 | 九九九精品视频 | 国产黄色在线 | 欧美一级二级三级视频 | 少妇无套高潮一二三区 | 日韩久久久久久 | 欧美日韩不卡合集视频 | 亚洲自拍偷拍视频 | 国产在线一区二区三区 | 一区二区三区欧美在线 | 日本在线视频中文字幕 | 亚洲区中文字幕 | 色婷婷在线视频 | 四虎午夜剧场 | www.久久久久久久久久久久 | 久久99久久久久 | 亚洲一区二区免费视频 | 成人毛片视频免费 | 久久久久久久av | 亚洲网在线 | 欧美激情一区 | 午夜男人天堂 | 国产成视频在线观看 | 国产真实精品久久二三区 | 国产激情一区二区三区 | 欧美日韩在线免费 | 亚洲精品成人在线 | 国产精品久久久久久久久久妞妞 | 毛片大全|