我正在探索创建一个可以在rhel7系统上启动和停止Docker容器的网关。我对/usr/lib/systemd/system/docker.service进行了更改,以在具有以下内容的界面上启动docker。
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:23751 --containerd=/run/containerd/containerd.sock
除非禁用防火墙,否则无法连接到dockerd以获取容器的状态。但是,如果禁用防火墙,则无法启动配置器。
Caused by: com.amihaiemil.docker.UnexpectedResponseException: Expected status 204 but got 500 when calling
http://192.168.1.70:23751/v1.35/containers/e3f0f09269a699ec27bbac8a5027d1383ae15cf64b5e6b649e76be1297cc2535/start.
Response body was {"message":"driver failed programming external connectivity on endpoint hello-service
(eef135f889322f1899800f19612404e9d8b1f39c7866f31ca5059562aa501bf6):
(iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 34570 -j DNAT --to-destination 192.168.10.40:8080 ! -i br-4982fe847356: iptables: No chain/target/match by that name.\n (exit status 1))"}
我意识到为dockerd运行开放的tcp端口会有后果。之前,我将所有事情都保证了安全性,我想了解网关如何执行此类操作。
其他人有做类似事情的经验吗?
答案 0 :(得分:0)
经过反复试验,我发现Firewalld阻止了该端口。
要启用端口,请执行以下操作。
sudo firewall-cmd --zone=public --add-port=2375/tcp
请注意,这样做会产生一个很大的安全漏洞,如上面的评论者所指出的那样。就我而言,这是在防火墙之后完成的,在该防火墙中,没有外部连接可以连接到我的网络防火墙内部。这仍然不是一个好主意,但是在这种情况下,它被用于探索某些概念,并且在不使用时被关闭。执行此操作时,请探讨其安全隐患。 另外,除非您使用--permanent参数
,否则防火墙将不会在上述命令中保存配置。