我决定使用自定义(用户定义的)桥接接口在我的家庭网络上运行一些 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,构建 4d60db4。
此外,酷孩子们是否使用 /etc/docker/daemon.json 或 /etc/sysconfig/docker 来控制设置?不确定使用 systemd 是否是 docker 的最佳选择。
您不希望使用与主机以太网相同的子网定义网桥。Linux 将不知道将数据包发送到哪个网络,因为它们都具有相同的路由条目。如果您确实需要容器的单独 IP 地址(这是一个非常非传统的配置),那么您需要macvlan或 ipvlan。
请注意,使用主机网络会将所有主机接口暴露给容器,许多人认为这会带来安全风险。使用此设置运行的容器与在容器外运行的进程具有相同的网络访问权限。
无需修改默认的 docker 网络堆栈。我所需要的只是指定主机网络( --net=host )以使侦听器可用于我的 LAN。docker run -d --net=host --name { container_name } { options }