Ansible `docker_container` 选项 `network_mode` 和 `networks` - 它们相交吗?

Ansible `docker_container` options `network_mode` and `networks` - are they intersecting?

我正在构建一个剧本,我想在其中将容器部署到主机网络。 Ansible docs 提到了两个选项:network_modenetworks。如果我想将我的容器连接到默认主机网络,选项是(Ansible 剧本中的语法):

network_mode: host

相当于:

networks:
  name: host

?

如果没有,容器在两种情况下连接的网络是什么(如果它完全连接?)

这更像是一个 Docker 问题,而不是 Ansible 问题。通过阅读 docker run 文档的 Network settings 部分,您可以找到我在回答中提供的内容以外的其他详细信息。

networks 密钥允许您将容器连接到 命名网络

network_mode 键允许您select 类型 网络来为您的容器创建(hostbridge, 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