docker网络(三) ------------ 端口与DNS-爱代码爱编程
容器网络
容器使用的网络类型对于用户而言是透明的,无论底层是网桥,overlay,macvlan或者使用特定的网络插件.从容器的视角看,它有一个自己的IP地址,自己的网络接口,网关,路由表,DNS服务器以及其它与网络相关的细节.
发布端口
默认情况下,当使用docker create或者docker run创建一个容器时,它不会向外界发布任何端口.要使端口在docker容器之外可以提供服务,你需要使用–publish或者-p选项.这会创建一条防火墙规则将容器内的端口映射到docker所在的宿主机.下面是一些例子:
选项 | 描述 |
---|---|
-p 8080:80 | 将容器内的TCP 80端口映射到宿主机的8080端口. |
-p 192.168.1.100:8080:80 | 将容器内的TCP 80端口映射到宿主机192.168.1.100 ip的8080端口. |
-p 8080:80/udp | 将容器内的UDP 80端口映射到宿主机的8080端口. |
-p 8080:80/tcp -p 8080:80/udp | 将容器内的TCP 80端口映射到宿主机的8080端口,将容器内的UDP 80端口映射到宿主机的8080端口. |
IP地址和hostname
默认情况下,容器连接的每个一个docker网络都会给这个容器分配一个IP地址 .这个IP地址是从所连接网络的地址池中分配的.所以Docker就像一个高效的DHCP服务器。每个网络也有默认子网和网关.
当容器启动时只能通过–network参数连接到唯一的一个网络.然而,你可以通过docker network connect命令将运行中的容器连接到不同的网络.你还可以通过–ip或者–ip6选项为容器指定分配的IP地址.
当你使用docker network connect命令将容器连接到一个特定的网络时,你也可以通过–ip或者–ip6选项为容器指定分配的IP地址.
容器默认的hostname是容器ID,你可以通过–hostname来覆盖默认的hostname.当连接到一个指定的网络时,你可以使用–alias选项来指定一个别名.
DNS服务
默认情况下,容器继承宿主机定义在/etc/resolv.conf中的DNS配置.使用网桥的容器使用这个文件的一个拷贝.当容器使用定制的网络时,将会使用Docker内嵌的DNS服务器,当会将DNS查找请求转发给宿主机上配置的DNS服务器.
/etc/hosts中的自定义主机将不会被容器继承,要为你的容器添加额外的主机,你可以通过docker run中的特定选项来指定.
选项 | 描述 |
---|---|
–dns | 指定DNS服务器的IP地址,可以指定多个.如果指定的IP地址不可用,Google的公共DNS server 8.8.8.8 将会被添加. |
–dns-search | 指定使用内嵌DNS服务的主机域名. |
–dns-opt | DNS选项的key-value.你需要通过查阅相关的系统手册来确认合法的选项. |
–hostname | 容器的hostname,如果未指定默认为容器ID. |
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/happyAnger6/article/details/110306195