我的机器上有一个容器。我的机器可以访问xxx.net,但是除非我像这样启动它,否则容器将无法访问:
docker run --add-host xxx.net:192.xxx.xxx.x -p 8080:8080 -d image_id
或输入容器并在/ etc / hosts文件中添加以下行:
192.xxx.xxx.x xxx.net
现在,如果此地址(192.xxx.xxx.x)不会更改,这将不是问题,但不幸的是,它会更改。
可以采取一些措施吗?
答案 0 :(得分:0)
好吧,这是因为要访问VM,您使用的是端口8080。在计算机上启动docker时,您需要公开必须使用的所有端口。如果您的docker容器是一艘船,请这样想。而且船上有水,您将如何去除它?首先,您需要将一个端口从船上暴露到海中,原因是没有端口暴露在外。因此,您无法连接到VM,因为它没有用于访问它的端口。
您可以尝试做的是传递您的主机名,然后在Dockerfile中编辑文件?因此,当您创建泊坞窗时,它已经在/etc/hosts
编辑:如果地址正在更改,这是什么平台?如果使用云平台,您可以为此服务保留静态IP地址吗?
使用文件存储时,我遇到类似的问题。如果重新启动,则IP将更改。然后我要做的就是查询API以获取IP地址,因为它是我的GCP项目中唯一的文件存储,所以还算不错。
这是什么IP地址?如在什么平台上提供什么服务。无论如何,您有没有手动获取IP地址的机会?
答案 1 :(得分:0)
我在这里缺少一些细节
什么是xxx.net?主机看到该地址是因为它是由DNS解析的,还是在NAT中其他计算机上的本地服务?我假设是后者(容器应该可以访问主机DNS),所以请尝试使用--network = host运行docker,看看是否有帮助(它将与主机共享同一网络)