我正在构建一个剧本,我想在其中将容器部署到主机网络。Ansible 文档提到了两个选项:network_mode
和networks
。如果我想将容器连接到默认主机网络,可以选择(语法如 Ansible 剧本(:
network_mode: host
相当于:
networks:
name: host
?
如果不是,在这两种情况下,容器连接到的网络是什么(如果它真的连接了?
这更像是一个Docker问题,而不是一个Ansible问题。 例如,通过通读docker run
文档的网络设置部分,您可以找到除我在答案中所说的内容之外的其他详细信息。
networks
密钥允许您将容器连接到命名网络。
network_mode
键允许您选择要为容器创建的网络类型(host
、bridge
、none
或特定容器的网络环境(。 它不允许您直接连接到命名网络。
因此,如果您有一个名为host
的网络可用host
该网络使用网络模式,则:
network_mode: host
相当于:
networks:
- name: host
但总的来说,它们让你做不同的事情。
如果您已经创建了一个 Docker 网络,例如您的 Docker 网络的名称是"myAppNetwork">,并且您想要部署一个新容器并将此新容器连接到现有的 docker 网络,请使用以下 Ansible 配置
- name: Add a container to a network, leaving existing containers connected
docker_network:
name: myAppNetwork
connected:
- Backend (Your docker container name)
appends: yes
参考: https://docs.ansible.com/ansible/2.4/docker_network_module.html#examples