gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

Docker網絡模式與配置Docker自定義網絡(bridge模式)

前言

? 上篇文章講述了有關docker的資源控制,主要是三個方面:CPU、內存以及IO。本文將講述docker的4種網絡模式。

  • 揭開Docker的面紗 – 基礎理論梳理和安裝流程演示  http://www.gmnon.cn/Linux/2020-04/163003.htm
  • Docker基礎命令詳解 – 鏡像及容器操作  http://www.gmnon.cn/Linux/2020-04/163005.htm
  • 深入理解Docker的硬件資源控制與驗證  http://www.gmnon.cn/Linux/2020-04/163006.htm

一、簡述VMware中三種網絡模式

? 可能,對于許多接觸Linux操作系統的朋友而言,起初都是通過虛擬機軟件進行層層深入的學習。而對于其中一種軟件——VMware軟件的網絡連接可能就是初學者的一個難題。可能一直都并不了解所提供的三種網絡模式的原理和意義。那么本小節將簡單講述一下有關VMware的三種網絡模式:Bridged(橋接模式)、NAT(網絡地址轉換模式)、Host-Only(僅主機模式)。而此三種分別對應于網卡設備中的VMnet0、VMnet1(或者后期新增創建的)、VMnet8(NAT網卡也只能有一個)

1.1橋接模式

? 概念:橋接模式就是一種將主機(好比是你的筆記本上的)的網卡與虛擬機的網卡利用虛擬網橋進行通信。

? 原理理解:對這種模式的理解可以認為是將物理機虛擬為一個交換機,所有橋接設置的虛擬機連接到這個交換機的一個接口上,當然物理機也一樣需要連接到這個交換機,也就是說橋接模式下的所有網卡都是交換模式,相互可以訪問而且互不干擾。

? 典型特征:虛擬機的IP地址需要與主機在同一網段,如果需要聯網則網關與DNS需要與主機網卡一致。

? 具體可以再通過下面的圖示理解:

Docker網絡模式與配置Docker自定義網絡(bridge模式)

1.2網絡地址轉換模式

? NAT模式的話相對來說應該是最熟悉的了。網絡地址轉換,既然有地址轉換,肯定是發生了轉變了。NAT模式就比較適合于IP資源緊缺,而且希望虛擬機可以聯網的情況。

? NAT模式借助的是虛擬的NAT設備以及虛擬的DHCP服務器,從而使得虛擬機可以聯網。如下圖所示:

Docker網絡模式與配置Docker自定義網絡(bridge模式)

1.3僅主機模式

? 僅主機模式呢,其實說白了就是沒有NAT設備的網絡模式,僅使用的是VMnet1虛擬網卡與虛擬交換機連接,從而與虛擬機通信,而這種模式就實現了虛擬機與外網的隔離,即獨立的一臺服務器,只與主機互相通信。如下圖所示:

Docker網絡模式與配置Docker自定義網絡(bridge模式)

? 好的,現在大概了解了VMware中三種網絡模式的原理了吧,現在繼續來聊聊在docker中的網絡模式。

二、docker的網絡模式

2.1docker網絡實現原理

? docker使用Linux橋接的方式,即在宿主機虛擬一個docker容器網橋(docker0),docker啟動一個 容器時會根據docker網橋的網段分配給容器一個IP地址,這個地址就是容器ip,同時docker就是每個容器的默認網關。因此,同一個宿主機內的容器就可以通過容器ip地址直接通信。

? 一般情況下,我們在安裝和啟動docker服務之后使用ifconfig命令即可查看到這個docker0的虛擬網橋設備:

[root@localhost ~]# ifconfig | head -7  docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500          inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255          ether 02:42:58:71:c9:ba  txqueuelen 0  (Ethernet)          RX packets 0  bytes 0 (0.0 B)          RX errors 0  dropped 0  overruns 0  frame 0          TX packets 0  bytes 0 (0.0 B)          TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  

從上面顯示的結果來看,默認的容器網關地址為172.17.0.1/16哈!當然loopback網卡是回環網卡,測試驗證(TCP/IP連接),virtual bridge則是虛擬網橋(想想KVM【云原生】)

? 當然,docker網橋是宿主機虛擬出來的,并不是真實存在的網絡設備,外部網絡是無法通過ip地址直接尋址的,這就表明我們需要通過其他的方式來使外部網絡可以訪問容器,一般會通過訪問宿主機ip結合容器的端口(并且端口一般是進行了端口映射,之后會講述)進行容器的訪問。

2.2docker四種網絡模式

下面直接通過下面的表格來區分理解一下docker的四種網絡模式

docker網絡模式 配置 說明
host   容器和宿主機共享Network namespace
container模式   容器和另外一個容器共享Network namespace
none模式   容器有獨立的Network namespace,但并沒有對其進行任何網絡設置,如分配veth pair 和網橋連接,配置IP等
bridge模式   默認的模式

其實啟動docker服務之后,可以使用docker network相關命令控制管理網絡,下面我們查看一下網絡列表:(默認存在下面三個)下面逐一介紹(結合第一小節的內容來理解docker 中的網絡原理)

[root@localhost ~]# docker network ls  NETWORK ID          NAME                DRIVER              SCOPE  3763f78eb404        bridge              bridge              local  3bb2f50eb211        host                host                local  e12cd7b98c54        none                null                local  

2.2.1host模式

host模式結合VMware中的僅主機模式即可理解,通過下圖表示一下:

Docker網絡模式與配置Docker自定義網絡(bridge模式)

從上圖可以看出,如果在啟動容器后使用的是host模式,那么這個容器將不會獲得一個獨立的Network Namespace(網絡命名空間),而是和宿主機系統共用一個Network Namespace。并且這就意味著容器將不會虛擬出自己的網卡以及配置自己的ip等,而是使用宿主機的ip以及端口。不過呢,在其他方面例如文件系統等還是與之隔離的。

這種方式最大優勢在于網絡性能比較好但是缺點也很明顯——網絡的隔離性很弱。

2.2.2container模式

? 這個模式正如上述表格中的說明一般,是表示指定新創建的容器和已經存在的一個容器共享一個Network Namespace。當然這也表示新建的這個容器不會創建自己的網卡等相關操作,而是和與指定的容器共享這些資源。

? 這種模式也和上述的host差不多,除了網絡方面,其文件系統、進程列表等都是隔離的。

參照下圖:

Docker網絡模式與配置Docker自定義網絡(bridge模式)

2.2.3none模式

? 使用none模式,Docker容器擁有自己的Network Namespace,但是,不會對Docker容器進行任何的網絡配置。這就表明這個Docker容器沒有網卡、IP、路由等信息。需要我們自己為Docker容器添加網卡、配置IP等。這種方式網絡的隔離性最為徹底,即表明關閉了容器的網絡功能,也無法訪問這個容器。

示意圖如下:

Docker網絡模式與配置Docker自定義網絡(bridge模式)

2.2.4bridge模式

? 該模式就是我們在啟動docker服務后默認的docker網絡模式,其會在主機上創建一個名為docker0的虛擬網橋,這個主機上的所有啟動的容器就會連接到這個虛擬網橋上。結合VMware中網橋模式原理,想想物理交換機的原理,就不難理解了。

? 從docker0子網中分配一個IP給容器使用,并設置docker0的IP地址為容器的默認網關。在主機上創建一對虛擬網卡veth pair設備,Docker將veth pair設備的一端放在新創建的容器中(這個veth對我們在OpenStack中見過,筆者覺得可以將之理解為一個橋梁,建立橋兩岸的關系而存在的一種虛擬設備),并命名為eth0(容器的網卡),另一端放在主機中,以vethxxx這樣類似的名字命名,并將這個網絡設備加入到docker0網橋中。

? 使用docker run -p 命令時,docker實際是在防火墻做了DNAT規則,實現端口轉發的功能。

下面通過一個節點的服務器結構圖來理解:

Docker網絡模式與配置Docker自定義網絡(bridge模式)

當然,這四種模式都不需要手動配置,真正需要配置的是自定義網絡。

三、docker網絡控制相關命令配置

上面已經給出了對應docker網絡控制的命令docker network,下面具體看一下這個命令的具體說明:

docker network的命令用法:  Usage:  docker network COMMAND    Manage networks    Commands:    connect     Connect a container to a network    create      Create a network    disconnect  Disconnect a container from a network    inspect     Display detailed information on one or more networks    ls          List networks    prune       Remove all unused networks    rm          Remove one or more networks  

3.1橋接命令設置

我們通過嘗試、排錯和驗證的方式來配置docker網絡。

因為需要NAT地址轉換功能,所以需要開啟防火墻,但是核心防護還是關了吧。

[root@localhost ~]# systemctl start firewalld.service   [root@localhost ~]# systemctl status firewalld.service   ● firewalld.service - firewalld - dynamic firewall daemon     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)     Active: active (running) since 一 2020-04-06 10:18:40 CST; 2s ago       Docs: man:firewalld(1)   Main PID: 65611 (firewalld)  ...

初始化環境:(后面會返回到這個環境狀態)

[root@localhost ~]# docker images   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE  [root@localhost ~]# docker ps -a  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES  

我們嘗試通過docker網橋方式(橋接)給一個容器設置一個ip地址(自定義的),下面看一下命令執行的結果:

[root@localhost ~]# docker run -itd --name test --network bridge --ip 172.17.0.10 CentOS:7 /bin/bash  Unable to find image 'centos:7' locally  7: Pulling from library/centos  ab5ef0e58194: Pull complete   Digest: sha256:4a701376d03f6b39b8c2a8f4a8e499441b0d567f9ab9d58e4991de4472fb813c  Status: Downloaded newer image for centos:7  29f9e9cbb398085d7c89bed2982d626bfb7e564371a76a6cb693cffa68b917af  docker: Error response from daemon: user specified IP address is supported on user defined networks only.  

首先,由于沒有改鏡像,所以會先拉取鏡像之后創建以及嘗試運行容器,但是會遇到報錯,報錯原因是因為用戶自己設置的ip地址只適合于他們自己定義的網絡。但是這并不影響鏡像的獲取與創建,我們嘗試運行看看結果:

[root@localhost ~]# docker images  REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE  centos              7                   5e35e350aded        4 months ago        203MB  [root@localhost ~]# docker ps -a  CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES  29f9e9cbb398        centos:7            "/bin/bash"         About a minute ago   Created                                 test  [root@localhost ~]# docker start 29f9e9cbb398  Error response from daemon: user specified IP address is supported on user defined networks only  Error: failed to start containers: 29f9e9cbb398  

? 很顯然,結果告訴我們還是上述的原因導致了這個問題,好吧只能刪除這個容器了。索性還原為初始化環境吧(其實可以去掉–network bridge就不會報錯,但是設置的ip地址會不生效,可以自行嘗試一下),我們不指定ip地址來試一下,順便驗證一下不加這個參數試試,最后還原為初始化狀態后我們再通過自定義的方式來設置ip地址吧。

[root@localhost ~]# docker run -itd --name demo centos:7 /bin/bash  984545df8ebf2c30f4ccf3f5f4699ed67bd2a93cbc068f2ace4865a828b4a4d1  [root@localhost ~]# docker ps -a  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES  984545df8ebf        centos:7            "/bin/bash"         8 seconds ago       Up 6 seconds                            demo  

進入容器查看ip地址

  [root@localhost ~]# docker exec -it 984545df8ebf /bin/bash  [root@984545df8ebf /]# yum install -y net-tools  Loaded plugins: fastestmirror, ovl  Determining fastest mirrors  [root@984545df8ebf /]# ifconfig   eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500          inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255          ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)          RX packets 2201  bytes 15042254 (14.3 MiB)          RX errors 0  dropped 0  overruns 0  frame 0          TX packets 1999  bytes 111171 (108.5 KiB)          TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536          inet 127.0.0.1  netmask 255.0.0.0          loop  txqueuelen 1000  (Local Loopback)          RX packets 0  bytes 0 (0.0 B)          RX errors 0  dropped 0  overruns 0  frame 0          TX packets 0  bytes 0 (0.0 B)          TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  

那么首先我們需要創建一個自定義的子網段,并且給他一個名稱,通過這個網段給對應的容器設置固定的ip地址。

[root@localhost ~]# docker network create --subnet=172.18.0.0/24 mynetwork  Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-4cd28c051bec -j RETURN: iptables: No chain/target/match by that name.   (exit status 1))  

看來很不幸啊,又error了,不要慌,我們看看是什么原因導致的,這個報錯的根源看似是防火墻,說是無法跳過DNAT(目標網絡地址轉換)規則,其實導致這個問題的原因是我們剛剛開啟了防火墻,卻沒有重啟docker服務,就有點類似更改了配置文件沒有重啟服務。

[root@localhost ~]# systemctl restart docker  [root@localhost ~]# docker network create --subnet=172.18.0.0/24 mynetwork  723d0fd514eb219d57667f72c3eb75fc4864af0cd94c21b6c70e868fb8d520a1  
[root@localhost ~]# docker network ls  NETWORK ID          NAME                DRIVER              SCOPE  00008a1e778b        bridge              bridge              local  3bb2f50eb211        host                host                local  723d0fd514eb        mynetwork           bridge              local  e12cd7b98c54        none                null                local  [root@localhost ~]#   

此時進行驗證自定義設置一個容器的固定IP地址的測試:

[root@localhost ~]# docker run -itd --name test2 --network mynetwork --ip 172.18.0.10 centos:7 /bin/bash  Unable to find image 'centos:7' locally  7: Pulling from library/centos  ab5ef0e58194: Pull complete   Digest: sha256:4a701376d03f6b39b8c2a8f4a8e499441b0d567f9ab9d58e4991de4472fb813c  Status: Downloaded newer image for centos:7  683ad76f7789b5c16f251577047a288a3a4a00777128a216adfee15985b94c04  

查看容器的狀態,進入容器查看ip地址

[root@localhost ~]# docker ps -a  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES  683ad76f7789        centos:7            "/bin/bash"         23 seconds ago      Up 22 seconds                           test2  [root@localhost ~]# docker exec -it 683ad76f7789 /bin/bash  [root@683ad76f7789 /]# yum install -y net-tools  Loaded plugins: fastestmirror, ovl  ...  [root@683ad76f7789 /]# ifconfig   eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500          inet 172.18.0.10  netmask 255.255.255.0  broadcast 172.18.0.255          ether 02:42:ac:12:00:0a  txqueuelen 0  (Ethernet)          RX packets 2302  bytes 15050471 (14.3 MiB)          RX errors 0  dropped 0  overruns 0  frame 0          TX packets 2049  bytes 113777 (111.1 KiB)          TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536          inet 127.0.0.1  netmask 255.0.0.0          loop  txqueuelen 1000  (Local Loopback)          RX packets 62  bytes 7019 (6.8 KiB)          RX errors 0  dropped 0  overruns 0  frame 0          TX packets 62  bytes 7019 (6.8 KiB)          TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  

此時發現自定義的網絡設置容器ip地址成功了。

四、總結

? 本文通過對VMware軟件中的三種網絡模式工作的原理,層層遞進深入講解docker的各種網絡模式,并且通過案例結合排障思路詳細介紹了有關docker網橋模式是如何配置容器ip地址的,有默認模式以及自定義模式。

?最后,需要注意的是命令還是需要多記多敲多練,謝謝閱讀!

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
精产国品一二三区| 国产爆乳无码一区二区麻豆| mm131亚洲精品| www.51色.com| 日本免费a视频| 久久黄色片网站| 丰满少妇大力进入| 超碰人人草人人| 日本成人中文字幕在线| 色黄视频免费看| 丁香六月激情婷婷| 91网址在线播放| 大伊香蕉精品视频在线| 手机av在线免费| 欧美三级一级片| 成人在线免费观看网址| 午夜av中文字幕| 欧洲美女亚洲激情| 日本熟妇人妻xxxxx| 波多野结衣家庭教师视频| 黄瓜视频免费观看在线观看www | 日韩 欧美 高清| 激情小视频网站| 91日韩精品视频| 日韩精品视频一区二区在线观看| 欧美 日韩 国产精品| 国产精品视频中文字幕| 免费黄色福利视频| av网站手机在线观看| 在线观看三级网站| 一级全黄肉体裸体全过程| 亚洲va在线va天堂va偷拍| 超碰人人草人人| 狠狠热免费视频| 亚洲 激情 在线| 三日本三级少妇三级99| 亚洲另类第一页| 激情黄色小视频| 中文字幕亚洲影院| 91嫩草国产丨精品入口麻豆| 国产a级黄色大片| 800av在线免费观看| 狠狠干视频网站| www精品久久| 欧美亚洲国产成人| 成人亚洲视频在线观看| 国产免费999| 99九九99九九九99九他书对| 一本之道在线视频| 国产曰肥老太婆无遮挡| 成年人网站免费视频| 日韩欧美在线播放视频| 99sesese| 玖玖精品在线视频| www.玖玖玖| 一区二区成人网| 日韩精品视频网址| 18黄暴禁片在线观看| 天堂网在线免费观看| 中文字幕一区二区三区四区在线视频| 男女h黄动漫啪啪无遮挡软件| 久操网在线观看| 热久久久久久久久| 亚洲一二三av| 一道本视频在线观看| 亚洲中文字幕无码专区| 可以看毛片的网址| 日本美女爱爱视频| 激情六月天婷婷| 最新av在线免费观看| 日韩欧美理论片| 国产3p在线播放| 天天久久综合网| 中文字幕日韩精品无码内射| 中文字幕一区二区在线观看视频| 无码人妻精品一区二区蜜桃百度| 日韩欧美不卡在线| 欧美黄色免费影院| 日本不卡在线观看视频| 欧美两根一起进3p做受视频| 日韩精品在线视频免费观看| 欧美xxxxxbbbbb| 国产麻豆电影在线观看| 加勒比海盗1在线观看免费国语版| 一级做a免费视频| 2022中文字幕| 欧美精品第三页| 午夜免费高清视频| 久久男人资源站| 毛片在线视频播放| 国产视频手机在线播放| 五月天婷婷影视| 亚洲 欧美 综合 另类 中字| 国产一区二区网| 亚欧激情乱码久久久久久久久| 日本人妻伦在线中文字幕| 日本a视频在线观看| 成人一级片网站| 手机福利在线视频| 成人一区二区免费视频| 色婷婷成人在线| 99色这里只有精品| 色婷婷综合网站| www.日本在线播放| www.亚洲自拍| 亚洲乱码国产一区三区| 男女爱爱视频网站| 色多多视频在线播放| 蜜臀av.com| 日韩欧美国产片| 男人天堂网视频| 尤物av无码色av无码| 国产精品探花在线播放| 男女曰b免费视频| 国产情侣第一页| 不卡中文字幕在线观看| 色婷婷.com| 黄色片久久久久| 免费不卡av在线| 日本精品免费视频| 在线观看亚洲色图| 18岁视频在线观看| 3d动漫一区二区三区| 日本精品免费视频| 香蕉视频xxx| 亚洲高清在线不卡| 国产精品久久a| 成年人小视频网站| 成人一级片网站| 欧美视频第三页| 青青艹视频在线| 成人免费在线小视频| 亚洲精品高清无码视频| 波多野结衣乳巨码无在线| 人妻少妇精品久久| 777av视频| 欧美大尺度做爰床戏| www.久久av.com| 天天综合天天添夜夜添狠狠添| 免费看黄色a级片| 国产 国语对白 露脸| 免费的一级黄色片| 青青草原av在线播放| 日本免费观看网站| 宅男噜噜噜66国产免费观看| 国产精品亚洲αv天堂无码| av免费中文字幕| 国产高清视频网站| 97超碰国产精品| www.com毛片| 日韩 欧美 高清| 日韩av.com| 在线观看av的网址| 亚洲午夜精品久久久久久人妖| 狠狠操狠狠干视频| 99re6这里有精品热视频| 久久综合久久久久| 草草久久久无码国产专区| 国产又黄又猛视频| 想看黄色一级片| 久久99久久99精品| 无码人妻丰满熟妇区毛片| 小泽玛利亚视频在线观看| 艳母动漫在线免费观看| 国产精品自拍片| www.51色.com| 黄色一级二级三级| 26uuu成人| 亚洲色图38p| 久久久久久久9| 国产成人生活片| 国产天堂在线播放| 久久久久久久久久久综合| 日韩福利视频在线| 亚洲爆乳无码精品aaa片蜜桃| 五月婷婷丁香色| 亚洲综合在线网站| 日b视频免费观看| 欧美日韩精品区别| 无码人妻丰满熟妇区五十路百度| 91午夜在线观看| 亚洲女人在线观看| 亚洲 中文字幕 日韩 无码| 日韩一级性生活片| 亚洲制服在线观看| 成人午夜激情av| 激情六月丁香婷婷| 日韩欧美不卡在线| 久久综合色视频| 欧美一区二区视频在线播放| 黄色小视频免费网站| 涩涩网站在线看| 中文字幕成人在线视频| 日韩在线xxx| 性欧美在线视频| 亚洲色图 在线视频| 成年人在线看片| 欧美午夜性生活| 手机在线成人免费视频| 91插插插插插插插插|