目前的 Docker實現是建立在 Linux CGroup 等技術之上,因此沒法在 MacOS X上原生使用(不過都折騰libcontainer了,不久應當會很快會有原生版本了吧)。需要建立1個 Linux虛擬機,然后在虛擬機內的 Linux上安裝使用。為了簡化全部安裝使用,boot2docker.io提供了1個完全自包括的安裝包,它會:
因此,在習慣使用的Terminal軟件如 iTerm2里,自己調用boot2docker up也是1樣的。boot2docker啟動以后,就能夠在 Mac OS X的環境里使用 docker命令工作了,用法跟標準的 lxc-docker1樣,它知道通過ssh將工作轉發給虛擬機里的 docker實現。如果想要直接在虛擬機內工作,用 boot2docker ssh就要以取得1個運行在虛擬機內的shell了。
在 Mac OS X下,除 boot2docker.io外,還有1個 skitematic 也能夠提供 docker環境。Skitematic實際上是在 boot2docker的基礎上又做了1層包裝并提供 GUI方式管理docker和訪問 docker hub。Skitematic挺好用的,但是它實際上是個web app,并且內部依賴http://fb.me/react-devtools,所以第1次使用需要翻墻否則界面不正常。更重要的時,它帶的 boot2docker 注意了會用 dev做為 Virtual Box虛擬機的名稱,但是放在 Mac OS X里的其它文件跟獨立安裝的 boot2docker是有沖突的。
在配置好 boot2docker以后又使用Skitematic的結果是前后出現了以下2個問題:
bash⑶.2$/usr/local/bin/boot2docker up
Waitingfor VM and Docker daemon to start...
...........ooo
Started.
Writing/Users/pinxue/.boot2docker/certs/boot2docker-vm/ca.pem
Writing/Users/pinxue/.boot2docker/certs/boot2docker-vm/cert.pem
Writing/Users/pinxue/.boot2docker/certs/boot2docker-vm/key.pem
Toconnect the Docker client to the Docker daemon, please set:
export DOCKER_TLS_VERIFY=1
export DOCKER_HOST=tcp://192.168.59.103:2376
export DOCKER_CERT_PATH=/Users/pinxue/.boot2docker/certs/boot2docker-vm
bash⑶.2$$(/usr/local/bin/boot2docker shellinit)
Writing/Users/pinxue/.boot2docker/certs/boot2docker-vm/ca.pem
Writing/Users/pinxue/.boot2docker/certs/boot2docker-vm/cert.pem
Writing/Users/pinxue/.boot2docker/certs/boot2docker-vm/key.pem
bash⑶.2$docker version
Clientversion: 1.5.0
ClientAPI version: 1.17
Goversion (client): go1.4.1
Gitcommit (client): a8a31ef
OS/Arch(client): darwin/amd64
Serverversion: 1.5.0
ServerAPI version: 1.17
Goversion (server): go1.4.1
Gitcommit (server): a8a31ef
bash⑶.2$
使用 boot2docker時,所有的 container都在boot2docker up命令啟動的 Virtual Box VM里,container使用的端口通過 docker -P或 -p映照到了 VM里的 LinuxHost上,但是在 Mac OS X里是沒有的。從本機倒是可能用VM的ip訪問到 container,從移動裝備或其它機器上需要訪問 container時,就需要在 Mac OS X上再做1次端口映照(portmapping)。有兩個方法,在https://github.com/boot2docker/boot2docker/blob/master/doc/WORKAROUNDS.md里有介紹:
** 練練手還是不錯的,不過真的挺容易把自己繞暈,開個海外的便宜 VPS 操練會更好,pull 時速度也會好很多。