在Docker for Mac中将容器映射到localhost以外的主机名

时间:2018-03-17 09:27:43

标签: docker networking

我正在创建一个我想在http://api本地访问的Nginx容器。使用Docker Machine,我假设运行docker-machine create defaultdocker-machine ip default来接收IP并将我的hosts文件编辑为:

# docker-machine ip default --> 192.168.99.100
192.168.99.100 api

应将请求映射到api\到Docker Machine IP并提供我的内容。

有两件事令我困惑:

  1. 我通过Mac App启动Docker,可以在http://localhost创建Nginx容器并访问内容。但是,运行docker-machine ls不会返回任何计算机。这令人困惑,因为我认为Docker必须在VM上运行。
  2. 从头开始并启动Docker Machine,然后旋转容器似乎没有任何效果。换句话说,我仍然可以访问http://localhost但不是http://api
  3. 的内容

    我没有在http://localhost访问我的容器,而是想在http://api访问它。我该怎么做?

    我使用Docker for Mac 17.12和Docker Machine 0.14。

1 个答案:

答案 0 :(得分:1)

根据你的这个问题:

  

而不是访问http://localhost我想要访问的容器   它在http://api。我该怎么做?

您的泊坞窗运行命令:

docker run -it --rm --name test --add-host api:192.168.43.8 -p 80:80 apachehttpd

第一件事 - -add-host标志为您的容器/etc/hosts中的/ etc / hosts添加值,因此如果ping,http://api也会在容器内响应在那个容器里面。 这是如何在容器内ping响应 enter image description here

第二件事:修改您的主机etc/hosts文件并添加

api 192.168.43.8 [your ip]

这是您在浏览器中看到的内容。 enter image description here