Docker-网络设置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/y472360651/article/details/81745299

如果你之前有使用Docker的经验,你可能已经习惯了使用--link参数来实现容器互联。随着Docker网络的完善,强烈建议将Docker加入自定义的Docker网络来连接多个容器,而不是使用--link参数

新建网络

下面创建一个新的Docker网络

root@ubuntu:~# docker networker create -d bridge my-net

-d参数指定Docker网络类型,有bridgeoverlay类型,overlay类型适用于Swarm mode,这里我们使用bridge

连接容器

运行一个容器并连接到新建的my-net网络当中:

root@ubuntu:~# docker run -it --rm --name box1 --network my-net busybox sh

在运行一个容器并连接到新建的my-net网络当中:

root@ubuntu:~# docker run -it --rm --name box2 --network my-net busybox sh

下面通过ping命令证明两个容器建立了互联关系,在box1容器中输入以下命令:

/ # ping box2
PING box2 (172.17.0.3): 56 data bytes
64 bytes from 172.17.0.3: seq=0 ttl=64 time=0.714 ms
64 bytes from 172.17.0.3: seq=1 ttl=64 time=0.125 ms
...

同理,在box2容器中ping box1也会成功连接到:

/ # ping box1
PING box1 (172.17.0.2): 56 data bytes
64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.084 ms
64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.123 ms
...

使用DNS

如何自定义容器的主机名和DNS呢?配置全部容器的DNS,可以在/etc/docker/daemon.json文件中增加如下内容来设置:

{
    "dns": [
        "114.114.114.114",
        "8.8.8.8"
    ]
}

这样每次启动的容器DNS都会自动配置为114.114.114.1148.8.8.8。使用以下命令来证明其已经生效:

root@ubuntu:~# docker run -it --rm ubuntu:16.04 cat /etc/resolv.conf
nameserver 114.114.114.114
nameserver 8.8.8.8

如果用户想要手动指定容器的配置,可以在使用docker run命令的时候添加如下参数:-h HOSTNAME或者--hostname=HOSTNAME设定容器的主机名,它会被写到容器内的/etc/hostname/etc/hosts。但它不会在容器外部显示,并且不会在docker ps中显示,也不会在容器的/etc/hosts看到。--dns=IP_ADDRESS添加DNS服务器到容器的/etc/resolv.conf中,让容器用这个服务器解析所有不在/etc/hosts中的主机名。

猜你喜欢

转载自blog.csdn.net/y472360651/article/details/81745299