使docker容器按名称相互查看(ping)时出现问题
我有三个Docker容器, > Java容器(JC):用于我的Java应用程序(春季启动) 当前,JC无法通过“名称”看到EC.当我说“ see”时,我的意思是如果我对JC进行一次ping到EC的操作,则会得到ping:未知主机.有趣的是,如果我对TC向EC进行ping操作,则会收到响应. 这是我启动容器的方法. > docker run -dit –name JC myapp-image 然后,要从JC ping EC,我发出以下命令.
我得到ping:未知主机 使用TC,因为我已经在shell上,所以我可以执行ping -c 2 EC并得到2条回复. 我以为这可能与我的Java应用程序有关,但是我对此表示怀疑,因为我修改了Dockerfile使其仅位于容器中. Dockerfile如下所示.
请注意,您可以通过docker build -no-cache -t myapp-image创建上述docker镜像. 还要注意,我已经安装了Docker Weave Net,这似乎并没有帮助JC按名称查看EC.另一方面,我尝试按以下方式找到每个容器的IP地址. > docker inspect -f'{{.NetworkSettings.IPAddress}}’JC-> 172.17.0.4 我当然可以通过IP地址从JC ping EC:docker exec JC ping -c 2 172.17.0.2.但是让容器通过IP地址互相查看并没有帮助,因为我的Java应用程序需要引用主机名作为其配置的一部分. 有什么想法吗?它是容器映像本身吗?为什么busybox容器映像能够按名称ping到ElasticSearch容器,但不能ping通Java容器? 一些更多的信息. > VirtualBox 5.0.10 任何帮助表示赞赏. 最佳答案
在同一docker守护程序中,使用old
--link option来更新每个组件的/ etc / hosts并确保一个组件可以ping另一个组件:
然后,一个docker exec JC ping -c 2 EC应该可以工作. 如果不是,请检查是否不是由于基本映像和安全性问题造成的:请参阅“ Addressing Problems with Ping in Containers on Atomic Hosts”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |