Loading
0

docker网络技术剖析

执行docker  network  inspect bridge查看桥接网络的详细信息

自定义网桥
除了默认的  docker0  网桥,用户也可以指定网桥来连接各个容器。在启动 Docker 服务的时候,使用  -b BRIDGE  或--bridge=BRIDGE  来指定使用的网桥。
Docker 允许你管理 docker0 桥接或者通过-b选项自定义桥接网卡,需要安装bridge-utils软件包。
基本步骤如下:
1.确保 docker 的进程是停止的
2.创建自定义网桥
3.给网桥分配特定的 ip
4.以 -b 的方式指定网桥

具体操作步骤:
如果服务已经运行,那需要先停止服务,并删除旧的网桥

然后创建一个网桥  bridge0,给网桥分配特定的 ip

查看确认网桥创建并启动

修改/etc/sysconfig/docker文件
修改前:

修改后:添加前面所新建的网桥

启动 Docker 服务。

新建一个容器,可以看到它已经桥接到了  br0  上。

docker 服务启动成功并绑定容器到新的网桥,新建一个容器,你会看到它的 ip 是我们的设置的新 ip段, docker会自动检测到它。用 brctl show 可以看到容器启动或则停止后网桥的配置变化,在容器中使用 ip a 和 ip r 来查看 ip 地址配置和路由信息。
重启主机之后,再启动docker服务发现起不来,因为以上都是命令配置,临时性的,只要重启主机就会失效,若要启动服务也有办法,就是将vim /etc/sysconfig/docker文件中的“-b=br0”删了就行。然后就回到了之前的docker0,如下图:



现在docker服务是运行状态,而且虚拟网桥回归到了docker0。

DNS/HOSTNAME自定义
Docker 没有为每个容器专门定制镜像,那么怎么自定义配置容器的主机名和 DNS 配置呢?秘诀就是它利用虚拟文件来挂载到来容器的 3 个相关配置文件。
在容器中使用 mount 命令可以看到挂载信息:注(mount命令软件包util-linux)
# mount

这种机制可以让宿主主机 DNS 信息发生更新后,所有 Docker 容器的 dns 配置通过 /etc/resolv.conf文件立刻得到更新。
如果用户想要手动指定容器的配置,可以利用下面的选项。
-h HOSTNAME or --hostname=HOSTNAME 设定容器的主机名,它会被写到容器内的/etc/hostname 和 /etc/hosts。但它在容器外部看不到,既不会在 docker ps 中显示,也不会在其他的容器的 /etc/hosts 看到。

--link=CONTAINER_NAME:ALIAS 选项会在创建容器的时候,添加一个其他容器的主机名到
/etc/hosts 文件中,让新容器的进程可以使用主机名ALIAS 就可以连接它。
--dns=IP_ADDRESS 添加 DNS 服务器到容器的/etc/resolv.conf 中,让容器用这个服务器来解析所有不在/etc/hosts 中的主机名。
--dns-search=DOMAIN 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。注意:如果没有上述最后 2 个选项,Docker 会默认用主机上的/etc/resolv.conf 来配置容器。
具体其他选项可以查看docker  run  --help帮助

分页阅读: 1 2 3 4 5 6 7 8
【声明】:8090安全小组门户(https://www.8090-sec.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们:邮箱hack@ddos.kim,我们会在最短的时间内进行处理。