Docker网络——实现容器间通信、容器与外网通信以及容器的跨主机访问

前言

自定义网络

建议使用自定义的网桥来控制哪些容器可以相互通信,还可以自动DNS解析容器名称到IP地址。Docker提供了创建这些网络的默认网络驱动程序,你可以创建一个新的Bridge网络,Overlay或Macvlan网络。你还可以创建一个网络插件或远程网络进行完整的自定义和控制。

你可以根据需要创建任意数量的网络,并且可以在任何给定时间将容器连接到这些网络中的零个或多个网络。此外,您可以连接并断开网络中的运行容器,而无需重新启动容器。当容器连接到多个网络时,其外部连接通过第一个非内部网络以词法顺序提供。

一、容器间通信

1.创建一个bridge模式的网络

[root@server1 ~]# docker network create --driver bridge my_net1

在这里插入图片描述
由上图我们可以看到创建的网络ID为88cd89998134,使用ip addr查看本机网络:
在这里插入图片描述
查看docker自定义网络如下图,当我们创建好自定义网络后,自定为起分配IP网段和网关

docker network inspect my_net1 

在这里插入图片描述

docker的bridge自定义网络之间默认是有域名解析的;
docker的bridge自定义网络与系统自带的网桥之间默认是有解析的;
但是docker的系统自带的网桥之间默认是没有解析的。

2.再创建一个bridge的网络,自定义ip和网关

[root@server1 ~]# docker network create --driver bridge --subnet 172.20.0.0/24 --gateway 172.20.0.1 my_net2
f81bcce7691795311aadeb0815295c9ef5ac240b86bcc1317777734cfc83319a
[root@server1 ~]# 
[root@server1 ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
bc0331260bb7        bridge              bridge              local
2da931af3f0b        host                host                local
88cd89998134        my_net1             bridge              local
f81bcce76917        my_net2             bridge              local
63d31338bcd9        none                null                local
[root@server1 ~]# 
[root@server1 ~]# docker network inspect my_net2

        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.20.0.0/24",
                    "Gateway": "172.20.0.1"
                }
            ]
        },

[root@server1 ~]# ip a
9: br-f81bcce76917: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 02:42:03:a3:1c:fb brd ff:ff:ff:ff:ff:ff
    inet 172.20.0.1/24 brd 172.20.0.255 scope global br-f81bcce76917
       valid_lft forever preferred_lft forever

3.使用刚刚创建的网络建立容器

[root@server1 ~]# docker load -i ubuntu.tar 

[root@server1 ~]# docker run -it --name vm1 --network=my_net1 ubuntu
root@b9186e3ba2e6:/# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 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
10: eth0@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.2/16 brd 172.18.255.255 scope global eth0
       valid_lft forever preferred_lft forever
root@b9186e3ba2e6:/# 

在这里插入图片描述

4.另开一个shell,再创建一个容器,使用网络my_net2

##使用–ip参数可以指定容器ip地址,但必须是在自定义网桥上(自定义的ip地址和网关地址),
默认的bridge模
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值