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

Docker網(wǎng)絡(luò)及容器通信原理詳解

 更新時間:2022年11月27日 09:38:34   作者:甜點cc  
這篇文章主要介紹了Docker網(wǎng)絡(luò)及容器通信原理詳解的相關(guān)資料,并通過啟動幾個容器來探究Docker網(wǎng)絡(luò)及容器通信,需要的朋友可以參考下

個人觀點:Docker網(wǎng)絡(luò)通信在容器編排、集群部署中具有舉足輕重的地位,(玩docker不懂docker0那就......玩不透哇??)本篇分析Docker網(wǎng)絡(luò),并通過啟動幾個容器來探究Docker網(wǎng)絡(luò)及容器通信,幫助讀者理解一下??。

1、Docker0

Docker 服務(wù)默認(rèn)會創(chuàng)建一個 docker0 網(wǎng)橋(其上有一個 docker0 內(nèi)部接口),它在內(nèi)核層連通了其他的物理或虛擬網(wǎng)卡,這就將所有容器和本地主機都放到同一個物理網(wǎng)絡(luò)。

Docker 默認(rèn)指定了 docker0 接口 的 IP 地址和子網(wǎng)掩碼,讓主機和容器之間可以通過網(wǎng)橋相互通信,它還給出了 MTU(接口允許接收的最大傳輸單元),通常是 1500 Bytes,或宿主主機網(wǎng)絡(luò)路由上支持的默認(rèn)值。這些值都可以在服務(wù)啟動的時候進(jìn)行配置。

2、清空所有鏡像

如果是初學(xué)者,還不是很了解docker0的情況下,建議清空所有鏡像,創(chuàng)造一個比較干凈的容器網(wǎng)絡(luò)環(huán)境,更加清晰,有助于學(xué)習(xí)docker0??

# 1. 查看運行的容器
docker ps

# 2. 停掉所有正在運行的容器(否則刪除不掉)
docker stop [containerID]   # docker stop $(docker container ls -q)

# 3. 執(zhí)行刪除
docker rmi -f $(docker images -aq)

# 4. 查看鏡像
docker images

3、查看網(wǎng)卡信息

先了解一下ip addr命令

ip addr

lo        # 本機回環(huán)地址 127.0.0.1
eth0      # 阿里云內(nèi)網(wǎng)地址 172.31.81.32
docker0   # docker生成的網(wǎng)卡 172.17.0.1

獲取當(dāng)前網(wǎng)卡ip地址和mac地址

[root@--- ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:0a:00:34 brd ff:ff:ff:ff:ff:ff
    inet 172.31.81.32/20 brd 172.31.95.255 scope global dynamic eth0
       valid_lft 291944112sec preferred_lft 291944112sec
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:a4:2f:c5:62 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
[root@--- ~]# 

下面通過docker啟動幾個容器來探究一下Docker網(wǎng)絡(luò)??

4、運行容器之后,再次查看網(wǎng)卡信息

安裝Docker時,它會自動創(chuàng)建三個網(wǎng)絡(luò),默認(rèn)bridge網(wǎng)橋(創(chuàng)建容器默認(rèn)連接到此網(wǎng)絡(luò))、 none 、host

4.1、運行mysql01, centos01, centos02容器 啟動時,docker默認(rèn)的bridge網(wǎng)橋,docker0給容器服務(wù)自動分配ip

docker run -it --name mysql01 -e MYSQL_ROOT_PASSWORD=123 mysql:5.7
docker run -it --name centos01  centos /bin/bash
docker run -it --name centos02  centos /bin/bash

4.2、查看ip、mac地址信息 可以看到上面啟動的三個容器服務(wù)的mac信息

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:0a:00:34 brd ff:ff:ff:ff:ff:ff
    inet 172.31.81.32/20 brd 172.31.95.255 scope global dynamic eth0
       valid_lft 291916543sec preferred_lft 291916543sec
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:a4:2f:c5:62 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
140: br-799426d70aa2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:7f:01:1d:00 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global br-799426d70aa2
       valid_lft forever preferred_lft forever
154: vethe3da564@if153: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether ea:84:fb:14:47:99 brd ff:ff:ff:ff:ff:ff link-netnsid 0
156: veth6477da5@if155: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 86:35:30:8d:14:85 brd ff:ff:ff:ff:ff:ff link-netnsid 1
158: veth17b2712@if157: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 72:76:f0:3c:17:e8 brd ff:ff:ff:ff:ff:ff link-netnsid 2

4.3、查看docker網(wǎng)絡(luò)

[root@--- ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
feafa30d4051   bridge    bridge    local
e8bf4fced9e2   host      host      local
6263db0933b9   none      null      local
[root@--- ~]# 

4.4、查看默認(rèn)bridge網(wǎng)橋(docker0)

[root@--- ~]# docker network inspect feafa30d4051
[
    {
        "Name": "bridge",
        "Id": "feafa30d4051f24353508959bd420fd163ad0c98d6b30ec8ff13b59a59552bb1",
        "Created": "2021-09-26T15:10:27.167774553+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "29298987c51b777b546bf6626560020ce235e390e1d7fcfe188c6db228ca4edf": {
                "Name": "mysql01",
                "EndpointID": "f6572c49234f74a6c0b652a379bb386f843ebd23b02abd59b1f6a9d1c9534b17",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",    # ?容器的IP?
                "IPv6Address": ""
            },
            "cb1922b95b9316d129b54f3545fad9729092926e10a1d5517f8928db42706151": {
                "Name": "centos01",
                "EndpointID": "ef6cfa74f56bfa4f49143aa08cf323812002236bc63f75204dee7c3ec1162250",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",    # ?容器的IP?
                "IPv6Address": ""
            },
            "cc6f510b9765ba018dbafd416c9774ddf5fd3ff55fa992827f55516e8dc70b6a": {
                "Name": "centos02",
                "EndpointID": "2f901aec8f8b455d1fb06112c9035a19f34cc597d8907f26f1b896f12d7eb7ba",
                "MacAddress": "02:42:ac:11:00:04",
                "IPv4Address": "172.17.0.4/16",    # ?容器的IP?
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

4.5、測試容器通信

此時,進(jìn)入centos01容器,ping mysql容器的ip可以ping通,但是ping不通容器名 ?

docker exec -it cb1922b95b93 /bin/bash
ping 172.17.0.2

# docker0不支持容器名連接訪問
ping mysql01
ping: mysql01: Name or service not known


docker run 啟動鏡像的時候docker都會分配一個網(wǎng)卡地址

#查看運行容器的ip
docker inspect 容器ID | grep IPAddress

如下圖??

5、容器通信原理

只要我們安裝了docker,就會有一個網(wǎng)卡docker0(相當(dāng)于一個路由器),每啟動一個docker容器,docker都會給docker容器分配一個ip(連接路由器的終端,同一網(wǎng)段下終端可以互相通信),

通過evth-pair技術(shù)實現(xiàn),evth-pair就是一對虛擬設(shè)備接口,他們都是成對出現(xiàn)的,一端連著協(xié)議,一端彼此相連,evth-pair充當(dāng)一個橋梁,連接各種虛擬網(wǎng)絡(luò)設(shè)備。

Docker網(wǎng)絡(luò)使用的是Linux橋接,宿主機是docker容器的網(wǎng)橋,docker0,最多分配65535個

刪除容器之后,虛擬網(wǎng)卡就自動消失了。(虛擬網(wǎng)卡傳遞效率高?。?/p>

啟動容器不設(shè)置網(wǎng)絡(luò),容器ip由docker0自動分配情況下,容器間的通信,要經(jīng)過evth-pair技術(shù)實現(xiàn),并不是直連的。(跟計算機網(wǎng)絡(luò)通信類似,分層模型,TCP/IP協(xié)議數(shù)據(jù)報封裝解封裝)

5.1、結(jié)論

tomcat01,tomcat02是共用的一個路由器,docker0

所有的容器啟動時,如果不指定網(wǎng)絡(luò)的情況下,都是docker0路由的。65535

最后

上面docker0不支持容器名連接訪問,容器通信只可以通過容器ip通信,docker也無法保證容器重啟后的IP地址不變,所以更好的方式是通過別名進(jìn)行互聯(lián),下篇繼續(xù)講解怎么通過別名進(jìn)行容器通信,????。

到此這篇關(guān)于Docker網(wǎng)絡(luò)及容器通信原理詳解的文章就介紹到這了,更多相關(guān)Docker網(wǎng)絡(luò)及容器通信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker.service啟動報錯的一次排查詳解

    docker.service啟動報錯的一次排查詳解

    這篇文章主要介紹了docker.service啟動報錯的一次排查詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 詳解復(fù)制備份docker容器數(shù)據(jù)的方法

    詳解復(fù)制備份docker容器數(shù)據(jù)的方法

    這篇文章主要介紹了詳解復(fù)制備份docker容器數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Docker部署SpringBoot項目的實現(xiàn)步驟

    Docker部署SpringBoot項目的實現(xiàn)步驟

    本文主要介紹了Docker部署SpringBoot項目的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2007-02-02
  • docker 已經(jīng)運行的容器重命名

    docker 已經(jīng)運行的容器重命名

    有時我們將容器名字起的不太好,想改一下,本文主要介紹了docker 已經(jīng)運行的容器重命名,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • Docker?容器連接的具體實現(xiàn)

    Docker?容器連接的具體實現(xiàn)

    本文主要介紹了Docker?容器連接的具體實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 使用Docker部署openGauss國產(chǎn)數(shù)據(jù)庫的操作方法

    使用Docker部署openGauss國產(chǎn)數(shù)據(jù)庫的操作方法

    openGauss是一款支持SQL2003標(biāo)準(zhǔn)語法,支持主備部署的高可用關(guān)系型數(shù)據(jù)庫,這篇文章主要介紹了使用Docker部署openGauss國產(chǎn)數(shù)據(jù)庫,需要的朋友可以參考下
    2022-10-10
  • Docker命令中的各種參數(shù)使用(run、v、rm、-w、-u、-e)

    Docker命令中的各種參數(shù)使用(run、v、rm、-w、-u、-e)

    本文主要介紹了Docker命令中的各種參數(shù)使用(run、v、rm、-w、-u、-e),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Docker鏡像推送(push)到Docker Hub的實現(xiàn)

    Docker鏡像推送(push)到Docker Hub的實現(xiàn)

    這篇文章主要介紹了Docker鏡像推送(push)到Docker Hub的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 詳解通過Docker搭建Mysql容器+Tomcat容器連接環(huán)境

    詳解通過Docker搭建Mysql容器+Tomcat容器連接環(huán)境

    本篇文章主要介紹了通過Docker搭建Mysql容器+Tomcat容器連接環(huán)境,具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01
  • Docker Machine遠(yuǎn)程部署Docker的方法

    Docker Machine遠(yuǎn)程部署Docker的方法

    本篇文章主要介紹了Docker Machine遠(yuǎn)程部署Docker的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04

最新評論

南华县| 公主岭市| 穆棱市| 轮台县| 临汾市| 新沂市| 乌拉特前旗| 武胜县| 堆龙德庆县| 丰台区| 仲巴县| 宕昌县| 灵山县| 肇东市| 敖汉旗| 勐海县| 商河县| 莱芜市| 彩票| 黔西县| 万源市| 连云港市| 孙吴县| 遵义市| 开化县| 斗六市| 岳阳市| 灵武市| 讷河市| 湖北省| 兴安盟| 宜阳县| 拉萨市| 武川县| 荣成市| 裕民县| 肇州县| 盐亭县| 黔东| 海林市| 伊川县|