Mac使用Docker-machine访问docker publish port

Step 1、Export the port in your container(docker-machine or boot2docker)

首先,要保证你发布端口的image已经run起来了。如果你是通过Dockerfile build起来的image,注意在image里面加上下面的一段话:

Expose 80

如果你需要发布其他端口,只需把80改变即可。

Expose这个命令的意思是docker image发布一个端口。

然后你需要将基于这个容器的image指定一个端口去绑定:

docker rum -p 80:80 -d YOUR_IMAGE

-p选项的含义是把80端口绑定在主机的80端口(这里的“主机”指docker-machine或者boot2docker容器)

如果你不想在你的mac或者windows上通过http://localhost:80的方式去访问,到这就可以结束了。你可以通过你docker-machine或者boot2docker的ip去访问。

$docker-machine ip MACHINE_NAME
192.168.99.100

这里我就可以通过http://192.168.99.100:80去访问我发布的image


Step 2、Configure VirtualBox

大家都知道docker-machine和boot2docker本身是不能直接在mac或windows下运行的,它必须依附一个VM,这里的VM就是VirtualBox,如何让我们在本机访问docker里发布的应用,这里就需要打开VirtualBox的port forwarding。

运行以下命令通过ssh去转发OSX/Windows的80端口到boot2docker/docker-machine VM的80端口:

$ boot2docker ssh -vnNTL *:80:localhost:80

或者你可以设置VirtualBox的参数来进行端口转发:

$ VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port8000,tcp,,80,,80";

如果你的VM还在running,你需要运行以下命令:

$ VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port8000,tcp,,80,,80";

现在你可以通过localhost:80去访问了。


如果你有很多容器发布同一个端口,你有必要使用docker的动态转发

For example, running 3 nginx containers:

container-1 : 80 -> 49153 (i.e. docker run -p 49153:80 ...)
container-2 : 80 -> 49154 (i.e. docker run -p 49154:80 ...)
container-3 : 80 -> 49155 (i.e. docker run -p 49155:80 ...)

使用VBoxManage modifyvm命令转发49XXX端口。这种方法可以很容易做到同时转发。

# vm must be powered off
for i in {49000..49900}; do
 VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port$i,tcp,,$i,,$i";
 VBoxManage modifyvm "boot2docker-vm" --natpf1 "udp-port$i,udp,,$i,,$i";
done

如果需要删除发布的端口,可以这么做:

# vm must be powered off
for i in {49000..49900}; do
 VBoxManage modifyvm "boot2docker-vm" --natpf1 delete "tcp-port$i";
 VBoxManage modifyvm "boot2docker-vm" --natpf1 delete "udp-port$i";
done


另发布jboss会发现外部无法访问,这是因为jboss应用只对localhost有效,如果想让外部访问,必须在启动命令后面加上
<strong><span style="font-size:24px;">-b 0.0.0.0</span></strong>

这样就绑定了所有ip,不然只有本机能够进行访问。


本文参考:


    • 0
      点赞
    • 2
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值