当我尝试从我的容器内连接到另一个容器的端口时,我不成功并得到,
root@ac1590a59fe5:/opt/f5massupgrade# curl -v https://172.17.0.1:6379
* Rebuilt URL to: https://172.17.0.1:6379/
* Hostname was NOT found in DNS cache
* Trying 172.17.0.1...
* connect to 172.17.0.1 port 6379 failed: No route to host
* Failed to connect to 172.17.0.1 port 6379: No route to host
* Closing connection 0
从docker主持人那里我成功了,
[root@docker-host ~]# curl -v https://172.17.0.1:6379/0
* About to connect() to 172.17.0.1 port 6379 (#0)
* Trying 172.17.0.1...
* Connected to 172.17.0.1 (172.17.0.1) port 6379 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
如果我检查iptables,我可以看到问题,
[root@docker-host ~]# iptables -S INPUT
-P INPUT ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i docker0 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
所以我添加了以下内容,一切都很好,
iptables -I INPUT 4 -i docker0 -j ACCEPT
我错过什么了吗?
[root@docker-host ~]# docker version
Client:
Version: 1.9.1
API version: 1.21
Package version: docker-common-1.9.1-40.el7.centos.x86_64
Go version: go1.4.2
Git commit: ab77bde/1.9.1
Built:
OS/Arch: linux/amd64
Server:
Version: 1.9.1
API version: 1.21
Package version: docker-common-1.9.1-40.el7.centos.x86_64
Go version: go1.4.2
Git commit: ab77bde/1.9.1
Built:
OS/Arch: linux/amd64
谢谢
这些在Fedora 32上对我有效
$ sudo firewall-cmd --zone=public --add-masquerade --permanent
$ sudo firewall-cmd --reload
$ sudo systemctl restart docker
如果有人在CentOS 8或任何使用firewalld的系统上仍然遇到此问题
请尝试firewalld的以下设置
# Allows container to container communication, the solution to the problem
firewall-cmd --zone=public --add-masquerade --permanent
# standard http & https stuff
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
# + any other port you may need
# reload the firewall
firewall-cmd --reload
如果docker服务不能立即工作,您可能还需要重新启动它,没有必要将docker0
接口添加到受信任区域,因为我已经阅读了许多指南
我在为docker容器设置Traefik反向代理时遇到了困难,我只收到了502个响应,从Traefik日志到我的容器没有路由错误。起初我以为这是我的Traefik设置,但后来发现是@al.提到的防火墙限制。它为我指明了正确的方向,我从中得到了答案https://serverfault.com/questions/987686/no-network-connectivity-to-from-docker-ce-container-on-centos-8
我们在运行fire walld
的RHEL框上遇到了这个问题。防火墙阻止容器托管访问(icmp
流量除外)。
我们需要配置防火墙,以允许从docker容器到主机的流量。在我们的案例中,集装箱位于子网172.27.0.0/16
(通过docker network ls
和docker inspect确定)上的网桥网络中
firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=172.27.0.0/16 accept'
firewall-cmd --reload
这是解决问题的有用参考。
我已经部署了一个运行在OpenShift Origin上的grpc服务。这是由OpenShift服务支持的。该服务通过OpenShift路由公开。我正在尝试通过一个服务和路线将集装箱港口(50051)映射到8080港的外部世界,从而使这个吊舱可用。 服务试图公开的映像在其Dockerfile中具有: 路线如下: 服务端口:8080/TCP 目标端口:50051 在DeploymentConfig中
在compute节点上启动的VM实例可以访问除C类IP之外的所有外部internet站点。控制器和计算节点已经根据openstack liberty指南在Ubuntu上成功安装。 VM的接口有: [root@vm3~]#ifconfig eth1链路Encap:Ethernet HWaddr FA:16:3E:57:1B:57 inet Addr:192.168.0.215 BCAST:255.2
我正尝试在“Docker quickstart Terminal”中使用命令下载centos映像 结果 我使用 Docker 1.9.1版本,构建a34a1d5 这看起来像是“Docker quickstart Terminal”中可见的DNS出现了问题
有人知道怎么解决这个问题吗?
我尝试使用 JMeter 运行分布式测试,我有 2 个 EC2 实例 主公共 IP: 54.xxx.xx.xx 从属公共 IP: 204.xxx.xxx.xxx 我已经打开了配置中使用的所有必要端口。 我可以从另一个 EC2 对每个 EC2 执行 ping 操作,并且 ping 成功。 但当我尝试启动测试时,服务器失败并返回[No route to host(host unreachable)]。
除了使用环境变量之外,还有哪些方法可以从运行在该主机上的容器内部获取docker主机的主机名?我知道我可以在容器创建时将主机名作为环境变量传递给容器。我想知道如何在运行时查找它。 在docker主机中运行的容器是否有方法获得“foo.example.com”? 编辑以添加用例: 容器将为表单的服务发现创建一个SRV记录 其中20003是docker主机上动态分配的端口,用于侦听bar中某个固定端口