big*_*ind 13 localhost docker docker-machine
有一些功能,比如没有https的JavaScript服务工作者,只能在localhost上运行,但是当我在docker容器中运行我的app时,使用docker-compose,它运行在docker-machine之上,我需要使用它连接到它我得到的地址
docker-machine ip default
Run Code Online (Sandbox Code Playgroud)
有没有办法映射localhost
到该IP?
Kri*_*rle 28
您可以向前添加VirtualBox端口,以将docker主机上的端口映射到本地计算机.
假设您的docker机器被称为"默认",并且您想要将容器中的端口80映射到localhost:8888,您可以运行:
vboxmanage modifyvm default --natpf1 "nameformapping,tcp,,8888,,80"
Run Code Online (Sandbox Code Playgroud)
或者如果VM正在运行
vboxmanage controlvm default natpf1 "nameformapping,tcp,,8888,,80"
Run Code Online (Sandbox Code Playgroud)
这也可以在VM的设置中的VirtualBox UI中完成.以下是VirtualBox的文档https://www.virtualbox.org/manual/ch06.html#network_nat
您还需要将容器上的端口映射到docker机器上的端口,在启动容器时执行此操作(这也假设您的Dockerfile中有"EXPOSE 80"命令)
docker run -p 80:80 mycontainer
Run Code Online (Sandbox Code Playgroud)
https://docs.docker.com/engine/reference/run/
另请参阅:https://github.com/boot2docker/boot2docker/blob/master/doc/WORKAROUNDS.md
Hem*_*ela 14
编辑hosts
文件会导致本地计算机仅直接查看为域指定的IP地址.因此,您可以在本地计算机中将该IP地址添加docker-machine
到该etc\hosts
文件中,并将80
容器上的端口映射到该端口80
上的端口docker-machine
.
例:
1)获取docker主机ip地址
$ docker-machine ip default
192.168.99.100
Run Code Online (Sandbox Code Playgroud)
2)将此行添加到etc/hosts
本地计算机的文件中
192.168.99.100 domain.com
Run Code Online (Sandbox Code Playgroud)
3)检查您的计算机是否正在解析域.
$ 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
Run Code Online (Sandbox Code Playgroud)
笔记:
C:\Windows\System32\Drivers\etc\hosts
最简单的方法是从VBox进行端口转发
设置 - >网络 - >适配器1->端口转发
然后添加Name,在主机添加127.0.0.1(对于本地主机)然后正确的端口绑定并重新启动VM.
归档时间: |
|
查看次数: |
19673 次 |
最近记录: |