Docker容器网络设置

本文详细介绍了Docker中默认的网络模式,包括none、host、bridge等,并通过实例展示了如何创建自定义网络以及如何将容器连接到特定网络。此外,还介绍了docker_gwbridge模式的应用场景。
摘要由CSDN通过智能技术生成

1. 默认网络

当你安装好Docker时,会自动生成3种网络模式。

$ docker network ls

NETWORK ID          NAME                DRIVER
7fca4eb8c647        bridge              bridge
9f904ee27bf5        none                null
cf03ee007fb4        host                host

当然,docker不知提供了这种网络模式。你也可以用--network来指定你需要的网络模式。 在启动docker时,使用docker run --network=<NETWORK>选项来选择容器的网络模式,其中bridge模式时默认模式。 其中none模式就是一个只有127.0.0.1地址的容器,进入容器就可以看到

$ docker attach nonenetcontainer

root@0cb243cd1293:/# cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
root@0cb243cd1293:/# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@0cb243cd1293:/#

host模式则是一个与宿主机配置相同的容器。 即与宿主机同IP,并会占用宿主机的端口。

2 bridge模式

桥接模式,也就是以宿主机为网关建立一个虚拟局域网。和以前的docker0非常类似,但是增加了一些新特性。

$ docker network create --driver bridge isolated_nw
1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b

$ docker network inspect isolated_nw

[
    {
        "Name": "isolated_nw",
        "Id": "1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Config": [
                {
                    "Subnet": "172.21.0.0/16",
                    "Gateway": "172.21.0.1/16"
                }
            ]
        },
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

$ docker network ls

NETWORK ID          NAME                DRIVER
9f904ee27bf5        none                null
cf03ee007fb4        host                host
7fca4eb8c647        bridge              bridge
c5ee82f76de3        isolated_nw         bridge

当你创建了network后,可以用docker run --network=<NETWORK>来启动容器。

$ docker run --network=isolated_nw -itd --name=container3 busybox

8c1a0a5be480921d669a073393ade66a3fc49933f08bcc5515b37b8144f6d47c

$ docker network inspect isolated_nw
[
    {
        "Name": "isolated_nw",
        "Id": "1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Config": [
                {}
            ]
        },
        "Containers": {
            "8c1a0a5be480921d669a073393ade66a3fc49933f08bcc5515b37b8144f6d47c": {
                "EndpointID": "93b2db4a9b9a997beb912d28bcfc117f7b0eb924ff91d48cfa251d473e6a9b08",
                "MacAddress": "02:42:ac:15:00:02",
                "IPv4Address": "172.21.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

3.docker_gwbridge模式

docker_gwbridge模式是docker在两种不同环境下自动创建的模式。

  • 当你创建或加入一个swarm集群时,docker会用docker_gwbridge与其他swarm节点通信。
  • 当没有容器网络可以提供外部连接时,Docker使用docker_gwbridge模式与其他网段的容器通信,所以容器可以连接其他网段的容器或swarm节点。 因为目前不用该模式,不深入了解。

4.指定网络

创建一个名为selfnet的网桥,并指定网段172.18.0.0

docker network create --subnet=172.18.0.0/16 selfnet

在selfnet网段内选一个IP进行指定

docker run -d -p 2001:2001 --net selfnet --ip 172.18.0.10 group/image-name -s 0.0.0.0 -k 123456 -m aes-256-cfb

其中,--net selfnet为我们之前创建的网桥,172.18.0.10为指定的IP,group/image-name 为docker影像名。

转载于:https://my.oschina.net/daidetian/blog/860687

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值