Mac使用Docker-machine访问docker publish port
来源:互联网 发布:什么数据库软件好 编辑:程序博客网 时间:2024/06/10 17:51
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_NAME192.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 offfor 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 offfor i in {49000..49900}; do VBoxManage modifyvm "boot2docker-vm" --natpf1 delete "tcp-port$i"; VBoxManage modifyvm "boot2docker-vm" --natpf1 delete "udp-port$i";done
<strong><span style="font-size:24px;">-b 0.0.0.0</span></strong>
这样就绑定了所有ip,不然只有本机能够进行访问。
本文参考:
https://github.com/boot2docker/boot2docker/blob/master/doc/WORKAROUNDS.md
https://github.com/boot2docker/boot2docker/issues/976
https://fogstack.wordpress.com/2014/02/09/docker-on-osx-port-forwarding/
0 0
- Mac使用Docker-machine访问docker publish port
- Mac使用docker及docker-machine命令
- Docker Machine 使用备忘
- docker学习(2) mac中docker-machine使用vmware fusion以及配置国内镜像加速
- docker-machine的基本使用
- 使用Docker Machine安装UCP
- Docker vs Docker-machine
- Docker Machine
- [docker]Mac 下安装使用docker
- [Docker]1.VirtualBox中使用Docker Machine管理主机
- Swarm简介和使用教程-Docker-swarm和Docker-machine
- CentOs安装Docker,docker machine
- 【Docker】通过Docker-Machine安装Docker
- Mac OS安装使用docker
- 在 MAC / WINDOWS 使用Docker
- 使用 docker-machine 管理 Azure 容器虚拟机
- 1.0.2、Docker Machine
- 05 - Docker Machine 概述
- Android toolbar Style设置其中控件颜色
- Integer类源码分析
- Objective-C 里的 Alloc 和 AllocWithZone的区别
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- 第3期Spark纯实战公益大讲坛:通过案例实战掌握Spark内核运行内幕
- Mac使用Docker-machine访问docker publish port
- SurfaceView预览Camera+GLSurfaceView绘制
- 多台web服务器之间共享session
- 微信支付退款接口
- 第91讲:Akka第一个案例动手实战架构设计学习笔记
- Android基础入门教程——4.4.1 ContentProvider初探
- POJ 3268 Silver Cow Party(最短路 dijkstra求任意两点最短路)
- LightOJ1104---Birthday Paradox (概率)
- Android 开发:开源库Speex支持arm64的动态库文件