docker 的network(入门版)

查看网络列表

##这里列出了默认网络bridge、host和none三种网络,一般使用第一个默认网络

MacbookdeMacBook-Pro:~ macbookpro$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
72aa7fca430b        bridge              bridge              local
3e026667db52        host                host                local
9241fcc54d87        none                null                local

启动容器

##这里示例连接到alpine(是一个轻量级的操作系统)
MacbookdeMacBook-Pro:~ macbookpro$ docker run -dit --name change1  alpine ash
MacbookdeMacBook-Pro:~ macbookpro$ docker run -dit --name change2  alpine ash

启动两个alpine容器运行ash,这是Alpine的默认shell而不是bash。该-dit标志意味着要首先分离容器
(背景),互动(与输入到它的能力),并与TTY(这样你就可以看到输入和输出)。由于您正在启
动它,因此您不会立即连接到容器。而是打印容器的ID。由于您尚未指定任何 --network标志,因此容
器将连接到默认bridge网络。

##查看启动情况
MacbookdeMacBook-Pro:~ macbookpro$ docker ps -a
CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS                    PORTS                                      NAMES
8b33163c2b20        alpine                                "ash"                    3 minutes ago       Up 3 minutes                                                         change2
5f8d6027a7d8        alpine                                "ash"                    4 minutes ago       Up 4 minutes                                                         change1

查看默认网络bridge,查看连接到它的容器

MacbookdeMacBook-Pro:~ macbookpro$ docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "72aa7fca430b56b51b370e3c5cea47884c78039336621a2d5bb3f59c4d6bb84c",
        "Created": "2019-02-20T00:43:11.027351167Z",
        "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": {
            "5f8d6027a7d8cf37112e8efaa271511d8b25eaa253a3ac7d752acc0d2863c101": {
                "Name": "change1",
                "EndpointID": "a223cb97bde8c188aaedfbdbce3a89b1c711f885d6cfc16c62b0d42d14570548",
                "MacAddress": "02:42:ac:11:00:05",
                "IPv4Address": "172.17.0.5/16",
                "IPv6Address": ""
            },
            "8b33163c2b20db2df04ba9a07b269b80d06f5e0c8472a60f74a1625b875341a9": {
                "Name": "change2",
                "EndpointID": "0cb7949e3f8d606936a34675d28a9e9baa9a8070ec6571cd3dd55f6c58ddcb0c",
                "MacAddress": "02:42:ac:11:00:06",
                "IPv4Address": "172.17.0.6/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": {}
    }
]

在顶部附近,bridge列出了有关网络的信息,包括Docker主机和bridge 网络之间的网关的IP地址(
172.17.0.1)。在Containers密钥下,列出了每个连接的容器,以及有关其IP地址(172.17.0.6for 
change1和172.17.0.7for change2)的信息。

进入alpine容器并且查看网络信息

MacbookdeMacBook-Pro:~ macbookpro$ docker attach change1
/ # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    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: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN qlen 1
    link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN qlen 1
    link/tunnel6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
923: eth0@if924: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:05 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.5/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
       
可以看出IP地址172.17.0.5,该地址与上一步中显示的地址相同

重复一次,查出change2容器的ip地址为172.17.0.X

ping网络,成功可以看出2个容器是可以互通的

/ # ping -c 2 172.17.0.6
PING 172.17.0.6 (172.17.0.6): 56 data bytes
64 bytes from 172.17.0.6: seq=0 ttl=64 time=0.131 ms
64 bytes from 172.17.0.6: seq=1 ttl=64 time=0.146 ms

--- 172.17.0.6 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.131/0.138/0.146 ms

自定义网络

MacbookdeMacBook-Pro:~ macbookpro$ docker network create change-network
MacbookdeMacBook-Pro:~ macbookpro$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
7fa66a150675        bridge              bridge              local
ebf8b9a1bda3        change-network      bridge              local
3e026667db52        host                host                local
9241fcc54d87        none                null                local

可以看到多了一条change-network的网络

查看网络信息

1.查看网络信息,可以看出网关为172.19.0.1
MacbookdeMacBook-Pro:~ macbookpro$ docker network inspect ebf8b9a1bda3 
[
    {
        "Name": "change-network",
        "Id": "ebf8b9a1bda3fd7804948adba0572c820188f4b91640ec450f3b75b0a3f3a591",
        "Created": "2019-02-21T02:21:01.105461596Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.19.0.0/16",
                    "Gateway": "172.19.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

设置change2的容器的网络

1.设置容器的网络,这里要注意,这里本来默认是连接到bridge网络的,现在这里又设置多了一个change-network,所以它这里是连接了2个网络。
MacbookdeMacBook-Pro:~ macbookpro$ docker network connect change-network change2

2.可以看出存在了2个网络,理论上他是可以ping通17,19这2个网段的网络
/ # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    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: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN qlen 1
    link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN qlen 1
    link/tunnel6 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
32: eth0@if33: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:06 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.6/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
36: eth1@if37: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:13:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.19.0.2/16 brd 172.19.255.255 scope global eth1
       valid_lft forever preferred_lft forever

尝试ping change1的网络

/ # ping -c 2 172.17.0.7
PING 172.17.0.7 (172.17.0.7): 56 data bytes
64 bytes from 172.17.0.7: seq=0 ttl=64 time=0.148 ms
64 bytes from 172.17.0.7: seq=1 ttl=64 time=0.141 ms

--- 172.17.0.7 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.141/0.144/0.148 ms

change1去ping change2的新设置网络

1.这里就失败了,原因是change1的网段是17,不能连接到change2的172.19的网段
/ # ping -c 2 172.19.0.2
PING 172.19.0.2 (172.19.0.2): 56 data bytes

--- 172.19.0.2 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss

运行容器时指定网络

MacbookdeMacBook-Pro:~ macbookpro$ docker run --name redis2 -d --network change-network -p 
6333:6379 redis
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值