如果我有一台运行docker(docker主机)并在此docker主机内启动一些容器的机器,
我需要容器的服务能够互相通信-容器暴露端口,并且它们还需要按主机名解析(例如:example.com)
container A needs to talk to container B with URL: example.com:3000
我已经阅读了这篇文章,但不太了解doker主机的“继承性”,是否将docker主机的/ etc / hosts追加到在docker主机内部运行的容器的/ etc / hosts中?
https://docs.docker.com/engine/reference/run/#managing-etchosts
如何实现?
此“继承”是否与type of docker container networking
https://docs.docker.com/v17.09/engine/userguide/networking/有任何联系?
答案 0 :(得分:1)
它不继承主机的/etc/hosts
文件。当在docker-compose中使用--add-host
参数或extra_hosts
时,docker会更新容器中的文件。您可以在docker-compose(https://docs.docker.com/compose/compose-file/#extra_hosts)中使用extra_hosts
添加单个记录。
尽管如果您只是想让2个容器相互通信,您也可以将它们连接到同一网络。在docker-compose中,您可以创建所谓的外部网络,并使所有docker-compose文件都引用它。然后,您将可以使用完整的Docker容器名称(例如http://project_app_1:3000)进行连接。