执行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帮助
发表评论