亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker系列6:Docker網絡管理

發布時間:2020-07-26 09:22:44 來源:網絡 閱讀:201 作者:zxhk 欄目:云計算

一、創建容器時候的選項

  • --network xx:指定容器使用的網絡類型

  • --hostname xx:指定容器使用的主機名

  • --dns x.x.x.x:指定容器使用的DNS地址

  • --dns-search xxx:指定搜索域,默認搜索域是宿主機

  • --add-host 域名:地址 在hosts文件添加記錄

二、創建封閉式網絡容器

創建容器的時候,默認用none網絡

  • 可以再創建容器的時候,用network選項來指定容器的類型是 none

創建容器

[root@host1?~]#?docker?run?--name?t1?-it?--rm?\
>?--network?none?--hostname?t1?--dns?114.114.114.114?\
>?--dns-search?linux.io?\
>?--add-host?www.baidu.com:1.2.3.4
>?busybox
  • 此時這個容器是沒有地址的

三、暴露容器地址到網絡

  • 安裝容器的目的是讓用戶訪問容器的服務

  • 而容器通常是以nat方式工作,也就是隱藏在docker0網橋后,用戶無法訪問

  • 因此需要將容器暴露在網絡中才可以

1、將容器端口指定暴露到宿主機的動態端口

案例:啟動一個apache,并將其80端口暴露出來

[root@host1?~]#?docker?run?--name?httpd1?-it?-p?80?--rm?busybox
WARNING:?IPv4?forwarding?is?disabled.?Networking?will?not?work.
/?#?
/?#?mkdir?/html
/?#?echo?"<h2>test?page</h2>">>/html/index.html
/?#?
/?#?httpd?-h?/html/
/?#?
/?#?netstat?-an
Active?Internet?connections?(servers?and?established)
Proto?Recv-Q?Send-Q?Local?Address???????????Foreign?Address?????????State???????
tcp????????0??????0?:::80???????????????????:::*????????????????????LISTEN

此時,就可以在宿主機訪問了

[root@host1?~]#?curl?172.17.0.2
test?page

在其他主機上想訪問這個nginx的頁面,需要宿主機上的個動態端口

  • docker的端口暴漏到外面,需要iptables規則來實現的,所以查看nat表規則如下

[root@host1?~]#?iptables?-L?-n?-t?nat
???...
???...
???...
Chain?DOCKER?(2?references)
target?????prot?opt?source???????????????destination?????????
RETURN?????all??--??0.0.0.0/0????????????0.0.0.0/0???????????
DNAT???????tcp??--??0.0.0.0/0????????????0.0.0.0/0????????????tcp?dpt:32770?to:172.17.0.2:80

docker命令可以查看端口映射關系

[root@host1?~]#?docker?port?httpd1
80/tcp?->?0.0.0.0:32770

在其他主機上訪問這個主機上的容器

Docker系列6:Docker網絡管理

  • 當這個容器被刪除了,這個端口映射規則自動刪除

2、將容器端口指定暴露到宿主機的指定端口

案例:創建apache容器,將80端口映射到宿主機的8081端口

[root@host1?~]#?docker?run?--name?httpd1?-it?-p?80:8081?--rm?busybox
/?#
[root@host1?~]#?docker?port?httpd1
8081/tcp?->?0.0.0.0:80

3、將容器的指定端口暴漏到宿主機指定IP的動態端口

  • 方法1中的效果是將容器的端口映射到宿主機的隨機端口,這個端口會綁定在宿主機的所有IP上面。

  • -p 宿主機ip::容器端口

4、將容器的指定端口暴漏到宿主機指定IP的指定端口

  • 方法3中的效果是將容器的端口映射到宿主機的指定端口,這個端口會綁定在宿主機的所有IP上面。

  • -p 宿主機ip:宿主機端口:容器端口

?【如果需要暴漏出多個端口,那么就可以使用多次-p選項

四、創建聯盟式網絡容器

  • 聯盟式容器,其實就是讓多個容器共享網絡等三個名稱空間

1、將容加入其它容器的名稱空間

先創建容器

[root@host1?~]#?docker?run?--name?httpd1?-it?--rm?busybox?
/?#?
/?#?ip?addr?
1:?lo:?<LOOPBACK,UP,LOWER_UP>?mtu?65536?qdisc?noqueue?qlen?1000
????link/loopback?00:00:00:00:00:00?brd?00:00:00:00:00:00
????inet?127.0.0.1/8?scope?host?lo
???????valid_lft?forever?preferred_lft?forever
13:?eth0@if14:?<BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN>?mtu?1500?qdisc?noqueue?
????link/ether?02:42:ac:11:00:02?brd?ff:ff:ff:ff:ff:ff
????inet?172.17.0.2/16?brd?172.17.255.255?scope?global?eth0
???????valid_lft?forever?preferred_lft?forever
/?#?
/?#?hostname
2ce8cf2a2f28
/?#?
/?#?mkdir?/html
/?#?echo?"test?page">/html/index.html
/?#?httpd?-h?/html/
/?#?
/?#?wget?-O?-?-q?127.0.0.1
test?page
/?#

再創建一個容器,并加入上個容器的名稱空間中

[root@host1?~]#?docker?run?--name?httpd2?--network?container:httpd1?--rm?-it?busybox
/?#?
/?#?ip?addr
1:?lo:?<LOOPBACK,UP,LOWER_UP>?mtu?65536?qdisc?noqueue?qlen?1000
????link/loopback?00:00:00:00:00:00?brd?00:00:00:00:00:00
????inet?127.0.0.1/8?scope?host?lo
???????valid_lft?forever?preferred_lft?forever
13:?eth0@if14:?<BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN>?mtu?1500?qdisc?noqueue?
????link/ether?02:42:ac:11:00:02?brd?ff:ff:ff:ff:ff:ff
????inet?172.17.0.2/16?brd?172.17.255.255?scope?global?eth0
???????valid_lft?forever?preferred_lft?forever
/?#?
/?#?hostname
2ce8cf2a2f28
/?#?
/?#?wget?-O?-?-q?127.0.0.1
test?page
/?#
  • 兩個容器的主機名、地址、IPC都是相同的

  • 在一個容器里啟動進程,在另一個容器里是可以用127.0.0.1來訪問

  • 但是兩個容器的文件系統不是共享的,比如在一個主機中創建的文件或者目錄,在另一個主機中是訪問不到的

2、將容器加入到宿主機的名稱空間

[root@host1?~]#?docker?run?--name?httpd1?-it?--rm?--network?host?busybox?
/?#?ip?addr
1:?lo:?<LOOPBACK,UP,LOWER_UP>?mtu?65536?qdisc?noqueue?qlen?1000
????link/loopback?00:00:00:00:00:00?brd?00:00:00:00:00:00
????inet?127.0.0.1/8?scope?host?lo
???????valid_lft?forever?preferred_lft?forever
????inet6?::1/128?scope?host?
???????valid_lft?forever?preferred_lft?forever
2:?ens33:?<BROADCAST,MULTICAST,UP,LOWER_UP>?mtu?1500?qdisc?pfifo_fast?qlen?1000
????link/ether?00:0c:29:3f:bf:cf?brd?ff:ff:ff:ff:ff:ff
????inet?192.168.114.132/24?brd?192.168.114.255?scope?global?dynamic?ens33
???????valid_lft?1653sec?preferred_lft?1653sec
????inet6?fe80::b487:3618:3453:eabe/64?scope?link?
???????valid_lft?forever?preferred_lft?forever
3:?ens37:?<BROADCAST,MULTICAST,UP,LOWER_UP>?mtu?1500?qdisc?pfifo_fast?qlen?1000
????link/ether?00:0c:29:3f:bf:d9?brd?ff:ff:ff:ff:ff:ff
????inet?192.168.64.130/24?brd?192.168.64.255?scope?global?dynamic?ens37
???????valid_lft?1648sec?preferred_lft?1648sec
????inet?172.16.100.5/24?brd?172.16.100.255?scope?global?ens37
???????valid_lft?forever?preferred_lft?forever
????inet6?fe80::e81:e5e0:505:f39b/64?scope?link?
???????valid_lft?forever?preferred_lft?forever
4:?docker0:?<NO-CARRIER,BROADCAST,MULTICAST,UP>?mtu?1500?qdisc?noqueue?
????link/ether?02:42:37:b9:09:55?brd?ff:ff:ff:ff:ff:ff
????inet?172.17.0.1/16?brd?172.17.255.255?scope?global?docker0
???????valid_lft?forever?preferred_lft?forever
????inet6?fe80::42:37ff:feb9:955/64?scope?link?
???????valid_lft?forever?preferred_lft?forever
/?#?
/?#?
/?#?hostname
host1
/?#

、修改的默認網絡和網橋

1、修改Docker0

  • docker0網橋的默認地址是172.17的

  • 修改這個需要修改配置文件:/etc/docker/daemon.json

??Docker系列6:Docker網絡管理

  • bip是知道docker0的ip地址

2、創建自定義網橋

創建一個網橋,名稱為mybr0

[root@host1?~]#?docker?network?create?\
>?--subnet?"30.0.0.0/8"?--gateway?"30.0.0.1"?\
>?mybr0
[root@host1?~]#?docker?network?ls
NETWORK?ID??????????NAME????????????????DRIVER??????????????SCOPE
5e905c47ac51????????bridge??????????????bridge??????????????local
386d8dc4beb8????????host????????????????host????????????????local
256a8b6832cb????????mybr0???????????????bridge??????????????local
eb7b7cf29f29????????none????????????????null????????????????local
  • mybr0是網絡名稱,不是網絡接口名稱

[root@host1?~]#?ip?addr
????...
????...
????...
15:?br-256a8b6832cb:?<NO-CARRIER,BROADCAST,MULTICAST,UP>?mtu?1500?qdisc?noqueue?state?DOWN?group?default?
????link/ether?02:42:c9:f6:5d:cd?brd?ff:ff:ff:ff:ff:ff
????inet?30.0.0.1/8?brd?30.255.255.255?scope?global?br-256a8b6832cb
???????valid_lft?forever?preferred_lft?forever

創建容器使用這個網橋設備

[root@host1?~]#?docker?run?--name?httpd1?-it?--rm?--network?mybr0?busybox?
/?#?
/?#?
/?#?ip?addr
1:?lo:?<LOOPBACK,UP,LOWER_UP>?mtu?65536?qdisc?noqueue?qlen?1000
????link/loopback?00:00:00:00:00:00?brd?00:00:00:00:00:00
????inet?127.0.0.1/8?scope?host?lo
???????valid_lft?forever?preferred_lft?forever
16:?eth0@if17:?<BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN>?mtu?1500?qdisc?noqueue?
????link/ether?02:42:1e:00:00:02?brd?ff:ff:ff:ff:ff:ff
????inet?30.0.0.2/8?brd?30.255.255.255?scope?global?eth0
???????valid_lft?forever?preferred_lft?forever
/?#

擴展:在一個主機上做了兩個網橋(其實就相當于兩個虛擬交換機),然后每個交換機上安裝一個容器,這兩個容器不在同一個網段

? ??Docker系列6:Docker網絡管理

想實現兩個容器通信,其實只需要在宿主機上啟動路由轉發功能就可以了,原因 有兩個

  • 容器的網關指向了虛擬交換機地址

  • 虛擬交換機本身就在宿主機上

  • 有一點需要注意,默認會在防火墻上添加一些規則阻止這種情況下的容器之間的通信,所以,要想實現容器之間的通信,需要去修改itpables規則。



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永康市| 新平| 胶州市| 莒南县| 方城县| 和龙市| 翼城县| 屯门区| 蕲春县| 丰镇市| 郁南县| 伊宁县| 临邑县| 平南县| 财经| 黑山县| 广州市| 三原县| 高碑店市| 新建县| 丽水市| 屏南县| 云霄县| 连州市| 浮梁县| 秦皇岛市| 宁城县| 台东县| 潼关县| 扶绥县| 南乐县| 富阳市| 达孜县| 上蔡县| 房山区| 芒康县| 常州市| 延长县| 上杭县| 德令哈市| 高要市|