SaltStack Docker-py端口将tcp和udp绑定到同一端口的问题

时间:2015-05-29 06:42:05

标签: docker salt-stack

您好我遇到通过SaltStack和dockerio模块将TCP和UDP配置到同一端口的问题。在这种情况下,我正在尝试为TCP和UDP端口53配置DNS。

master和minion的环境相同,详情如下:

Ubuntu 15.04
lxc-docker 1.6.2 package (from deb https://get.docker.com/ubuntu docker main)
salt-common 2015.5.0+ds-1utopic1 package
salt-minion 2015.5.0+ds-1utopic1 package (salt-minion 2015.5.0 (Lithium))
salt-master 2015.5.0+ds-1utopic1 package (salt-master 2015.5.0 (Lithium))
docker-py 1.2.2

从容器的Dockerfile:

EXPOSE 53
EXPOSE 53/udp

此容器的state.sls文件中的SaltStack相关配置(在docker.running中):

{% set hostport1            = '53' %}
{% set hostport1_proto      = 'udp' %} 
{% set hostport2            = '53' %}
{% set hostport2_proto      = 'tcp' %}
...
        - ports:
            "{{ hostport1 }}/{{ hostport1_proto }}":
                HostIp: ""
                HostPort: "{{ hostport1 }}"
            "{{ hostport2 }}/{{ hostport2_proto }}":
                HostIp: ""
                HostPort: "{{ hostport2 }}"
...

容器启动并成功运行。问题是只有TCP端口被映射,UDP端口仍然未映射。无论我列出TCP和UDP端口的顺序,只有TCP端口才能通过docker映射。

From docker ps -a:
0.0.0.0:53->53/tcp, 53/udp

我查看了所有可以找到的信息,并且我看到了与docker-py相关的较旧的已关闭问题,但最近似乎没有其他任何人遇到此问题。

我已确认手动运行容器可以正常工作并正确映射端口:

docker run ... -p 53:53 -p 53:53/udp ...
docker ps -a
... 0.0.0.0:53->53/tcp, 0.0.0.0:53->53/udp ...

所以这向我证实了这个问题的根源或配置错误是在docker-py或SaltStack中。任何信息或配置提示将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

此问题的根源是HostIp:字段的配置。使用空白值“”是不可接受的。而是将HostIp设置为“0.0.0.0”可以完全解决此问题。这方面的文件不清楚。

非常感谢和赞扬Freenode IRC上的#salt频道。

相关问题