我决定使用自定义(用户定义)桥接接口在我的家庭网络上运行一些 docker 容器。我为桥接器提供了一个与我的 docker 主机位于同一网络上的静态 IP。docker 主机的 eth0 具有:192.168.10.20/24,而 docker bridge0 配置为 192.168.10.21/24。我不需要让 docker 容器与其他 docker 容器通信。我希望每个容器都在自己的 IP 地址上运行服务,我的 192.168.10.0/24 网络上的任何主机都可以访问。实现此目的的最简单方法是什么?使用 CentOS 7.6.1810、docker 18.09.0、build 4d60db4。
另外,酷孩子们是否使用 /etc/docker/daemon.json 或 /etc/sysconfig/docker 来控制设置?不确定使用 systemd 是否是 docker 的最佳选择。
答案1
您不希望使用与主机以太网相同的子网定义网桥。Linux 不知道将数据包发送到哪个网络,因为它们都具有相同的路由条目。如果您确实需要为容器设置单独的 IP 地址(这是一种非常非传统的配置),那么您需要麦克维兰或 ipvlan。
请注意,使用主机网络会将所有主机接口暴露给容器,许多人认为这是一种安全风险。使用此设置运行的容器具有与在容器外运行的进程相同的网络访问权限。
答案2
无需修改默认的 docker 网络堆栈。我只需要指定主机网络 ( --net=host ),以使侦听器可用于我的 LAN。docker run -d--net=主机--name { 容器名称 } { 选项 }