mac 下docker得端口转发,macdocker端口转发


在linux下我们可以在docker中新建容器,然后通过端口转发直接访问到容器。但是在mac下中间又通过了
一层虚拟机,所以端口转发就需要在多做一点。

1 把本地端口和虚拟机对应起来:可以通过命令来做:

#VBoxManage modifyvm "boot2docker-vm" --natpf1 "containerssh,tcp,,2222,,2222"

也可以通过手动添加:
这里写图片描述
点击上图端口转发即可添加。
2 根据镜像建立容器,将虚拟机得2222端口映射到22,并打开ssh服务

➜  ~  docker run -ti -p 2222:22 sshd:ubuntu2

打开ssh服务:

➜  ~  docker start -i 88
root@886ab361140c:/# ssh localhost
ssh: connect to host localhost port 22: Connection refused
root@886ab361140c:/# service ssh start
 * Starting OpenBSD Secure Shell server sshd                                                                                                           [ OK ]
root@886ab361140c:/#

3 在宿主机上ssh链接到容器:

➜  ~  ssh root@127.0.0.1 -p 2222
Warning: Permanently added '[127.0.0.1]:2222' (RSA) to the list of known hosts.
Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 4.0.3-boot2docker x86_64)

 * Documentation:  https://help.ubuntu.com/
Last login: Tue Jun  9 03:41:46 2015 from 10.0.2.2
root@886ab361140c:~#

只是不知道为什么这里等了一会才连接上。

最后就是端口映射成功了,就可以在容器里做各种事,比如nginx,apache,数据库等并在容器外访问了。
4 虚拟机网络方面得配置
另外如果使用虚拟机里新建linux来做:怎么让虚拟机里的linux即能访问外网又能被外网访问到:
虚拟机里得linux要访问到外网是通过网桥到外网实现,外网宿主机要访问到虚拟机里得linux是通过host-only方式。
所以网卡部分需要配置两块网卡:

第一块网卡访问外网
第二块让 外网访问到此虚拟机

相关内容