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