docker 容器網絡篇

在安裝Docker的時候,系統會自動建立一個docker0的設備,默認ip地址爲172.17.0.1,他既做爲宿主機的網卡使用,也做爲docker容器的交換機來使用。Docker的默認網段爲:172.16.0.0/16。
可使用以下命令查看docker橋設備:docker

[root@localhost ~]# docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "f9e359b81925bf63644a0b63d8696223e097116c5354c990301a4d60fde60bd6",
        "Created": "2019-03-12T21:45:21.5×××6831-04: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": {
            "a918789047a01d41741e6ef64ee8b684596837863ec110422d261b144060b919": {
                "Name": "box1",
                "EndpointID": "80c1a507bc70e5a7b16ba912b0e3777bb11368c5adfa6d489f67af790ce9cf5d",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "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": {}
    }
]

docker 有如下幾種網絡類型json

[root@localhost ~]# docker network ls  
NETWORK ID          NAME                DRIVER              SCOPE
f9e359b81925        bridge              bridge              local  #橋接,nat橋
646ca4df0271        host                host                local  #共享主機網絡
696375b0f574        none                null                local #無網絡

1、橋接(bridge)
當啓動一個docker容器的時候,若是沒有指定網絡類型,默認使用橋接網絡,而且啓動Docker容器的時候,系統會自動建立一對網卡,一個在宿主機上,一個在docker容器內,它們的插在了docker0這個交換機上。
以下圖所示(宿主機網卡爲:veth071e7f3@if18。docker網卡爲:eth0@if19)(命令:docker run --name box1 -it --rm busybox 等同於 docker run --name box1--network bridge -it --rm busybox):
docker 容器網絡篇
2、共享主機(host)
一、共享宿主機
啓動容器的網絡共享宿主機,命令爲:docker run --name box1 --network host -it --rm busybox
能夠看到容器的ip與宿主機同樣
docker 容器網絡篇
2.共享容器(首先建立一個bridge容器box1,而後建立第二個容器box2共享box1的網絡,若是容器box1中止,則box2變成無網絡容器),命令以下:
docker run --name box1 -it --rm busybox
docker run --name box2 --network container:box1 -it --rm busybox
docker 容器網絡篇
3、無網絡
啓動的容器只有本地迴環地址服務器

docker run --name box1 --network none -it --rm busybox
docker 容器網絡篇

擴展:
1、
docker 容器網絡篇
docker snat解讀
全部源地址爲172.16.0.0/16,目標地址爲任意的docker容器,只要出口流量不通過docker0交換機,都作地址假裝(源地址轉換)
2、
在建立docker容器的時候,容器啓動後默認會使用宿主機的DNS配置,若是要手動配置,使用命令(同理,hostname和hosts配置也以一樣的方式實現):
docker run --name box1 --dns 8.8.8.8 -it --rm busybox
docker 容器網絡篇網絡

3、指定docker使用的網段
在/etc/docker/daemon.json文件中寫入以下信息:
{
"bip":"192.168.0.1/24",
"dns":"8.8.8.8" # 可加可不加,看須要
}
docker 容器網絡篇
4、docker客戶端鏈接遠程docker服務器
在/etc/systemd/system/docker.service.d/tcp.conf文件中寫入以下信息:tcp

[Service] 
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375

而後重啓docker:ide

systemctl daemon-reload
systemctl restart docker
鏈接方式爲:docker -H 127.0.0.1:2375 [command]

5、建立橋接設備
命令幫助:docker network create --help.net

[root@localhost ~]# docker network create -d bridge --subnet "172.26.0.1/16" --gateway "172.26.0.1" mybr0
7436da582785e566e77658e745c378b16d497ac1eb45fa7b4a86f1e2fc805499
[root@localhost ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
3314661353a5        bridge              bridge              local
646ca4df0271        host                host                local
7436da582785        mybr0               bridge              local
696375b0f574        none                null                local

總結:
docker 容器網絡篇
docker(單機)容器共有四種網絡模型:
1.none 無網絡
2.bridge 橋接(默認模式)
3.共享主機,第三種爲共享容器A,第四種爲共享宿主機。3d

相關文章
相關標籤/搜索