Mac OS下Boot2Docker的网络映射设置

时间:2021-01-09 12:39:44

Mac系统下安装Boot2Docker造成了三层网络:Mac->VirtualBox->Docker,通过docker run 参数-p/-P,能手动或自动设置VirtualBox与Docker间的网络映设,而Mac与VirtualBox间的网络映设一般采用图形界面的操作方式完成,此文将采用命令行的方式达到同样的效果。

下载Boot2Docker

执行下面命令可以配置Boot2Docker 使用高速下载镜像,目前采用的版本为1.8.0
$ mkdir ~/.boot2docker $ echo ISOURL = \"https://get.daocloud.io/boot2docker/boot2docker-lastest.iso\" > ~/.boot2docker/profile
也可以下载安装包

运行Boot2Docker

安装完成后,运行应用程序中的boot2docker。正常情况下会启动VirtualBox中的虚拟机并通过SSH连接至Docker,如果SSH默认的映射商品被修改,将导致Error requesting socket: exit status 255错误,通过$ boot2docker up -v可以跟踪启动过程。

查询虚拟机及网络

查询虚拟机名称,默认启动的虚拟机名为boot2docker-vm
$ VBoxManage list vms
查询boot2docker-vm虚拟机的网络状态
$ VBoxManage showvminfo "boot2docker-vm" | grep NIC

关闭运行中的虚拟机

由于Boot2Docker会自动运行VirtualBox中的虚拟机,所以在设置网络映射时必须先关闭运行中的虚拟机。否则,将出现The machine 'boot2docker' is already locked for a session (or being unlocked)的错误提示
$ VBoxManage controlvm "boot2docker-vm" poweroff

修改虚拟机与Mac系统的网络映射

根据实际需要进行网络映射,其中
rulename: 自定义规则名称
hostip: Mac访问地址,可不填
hostport: Mac映射端口
guestip: 虚拟机访问地址,可不填
guestport: 虚拟机映射端口
$ VBoxManage modifyvm "boot2docker-vm" --natpf1 "<Rule Name>,<tcp|udp>,<Host IP>,<Host Port>,<Guest IP>,<Guest Port>"

启动虚拟机

设置完成后重新启动虚拟机 $ VBoxManage startvm "boot2docker-vm"

运行镜像

wwj718提供的edX docker为例,运行其镜像
$ docker run -itd -p 8000:80 -p 8010:18010 --name edX wwj718/edx_cypress_docker:1.05

查看容器运行状态

$ docker ps

其他 - 删除映射端口,也需要关闭虚拟机,删除命令如下

$ VBoxManage modifyvm "boot2docker-vm" --natpf1 delete