有一些特定的功能,比如没有https的JavaScript服务工作者,它们只能在本地主机上运行,但当我在docker容器中运行我的应用程序时,使用docker-compose,它运行在docker-machine之上,我需要使用我从获得的地址连接到它
docker-machine ip default是否有办法将localhost映射到该ip?
发布于 2016-02-13 07:41:21
您可以添加VirtualBox端口转发,以将扩展底座主机上的端口映射到本地计算机。
假设您的停靠计算机名为"default“,并且您希望将容器中的端口80映射到localhost:8888,您可以运行:
vboxmanage modifyvm default --natpf1 "nameformapping,tcp,,8888,,80"或者如果虚拟机正在运行
vboxmanage controlvm default natpf1 "nameformapping,tcp,,8888,,80"这也可以在虚拟机设置中的VirtualBox UI中完成。这是来自VirtualBox https://www.virtualbox.org/manual/ch06.html#network_nat的文档
您还需要将容器上的端口映射到docker机器上的端口,这是在启动容器时执行的(这还假设您的Dockerfile中有一个"EXPOSE 80“命令
docker run -p 80:80 mycontainerhttps://docs.docker.com/engine/reference/run/
另请参阅:https://github.com/boot2docker/boot2docker/blob/master/doc/WORKAROUNDS.md
发布于 2016-02-16 00:14:46
编辑hosts文件会导致您的本地计算机仅直接查找为域指定的IP地址。因此,您可以将docker-machine的ip地址添加到本地计算机的etc\hosts文件中,并将容器上的端口80映射到docker-machine上的端口80。
示例:
1)获取docker主机ip地址
$ docker-machine ip default
192.168.99.1002)将此行添加到本地计算机的etc/hosts文件中
192.168.99.100 domain.com3)检查您的机器是否正在解析域名。
$ ping domain.com
PING domain.com (192.168.99.100): 56 data bytes
64 bytes from 192.168.99.100: icmp_seq=0 ttl=64 time=0.294 ms
64 bytes from 192.168.99.100: icmp_seq=1 ttl=64 time=0.437 ms
64 bytes from 192.168.99.100: icmp_seq=2 ttl=64 time=0.556 ms
64 bytes from 192.168.99.100: icmp_seq=3 ttl=64 time=0.270 ms备注:
适用于Windows用户的nginx主机文件位于C:\Windows\System32\Drivers\etc\hosts
发布于 2018-02-19 00:25:54
最简单的方法是从VBox转发端口
设置->网络->适配器1->端口转发
然后添加名称,在主机中添加127.0.0.1(对于本地主机),然后进行正确的端口绑定并重新启动虚拟机。

https://stackoverflow.com/questions/35372399
复制相似问题