你可以使用 Boot2Docker 來(lái)安裝 Docker ,然后在命令行運(yùn)行 docker。如果你對(duì)命令行比較熟悉或者你打算在 Github 上貢獻(xiàn) Docker 項(xiàng)目,那么你就可以選擇此安裝方式。
或者,你可以使用 Kitematic , 它是一款圖形界面的應(yīng)用程序(GUI),你可以通過(guò)圖形界面來(lái)輕松的設(shè)置 Docker 和運(yùn)行容器。
http://wiki.jikexueyuan.com/project/docker/images/kitematic.png" alt="Download Kitematic">
因?yàn)?Docker 進(jìn)程使用的是 Linux 內(nèi)核特性,所以你不能在原生的 OS X 中安裝 Docker,如果你需要安裝 Docker ,你必須安裝 Boot2Docker。 這個(gè)程序中包含了 VirtualBox 虛擬主機(jī)(VM), Docker 和 Boot2Docker 管理工具。
Boot2Docker 是專(zhuān)門(mén)為OS X上運(yùn)行 Docker 而開(kāi)發(fā)的一個(gè)輕量級(jí)的虛擬主機(jī)管理工具。當(dāng)Virtual Box在內(nèi)存中啟動(dòng)后,它會(huì)下載一個(gè)大約 24MB 的 ISO文件(boot2docker.iso),下載完成后,大約5S中就會(huì)啟動(dòng)了。
你的 OS X 版本必須大于等于 10.6 "Snow Leopard" 才可以運(yùn)行 Boot2Docker 。
當(dāng)我們?cè)谝慌_(tái) Linux 主機(jī)上安裝完 Docker 之后,我們的機(jī)器中就包含了本地主機(jī)和 Docker 主機(jī)。如果從網(wǎng)絡(luò)層來(lái)劃分,本地主機(jī)就代表你的電腦,而 Docker 主機(jī)就代表你運(yùn)行的容器。
在一個(gè)典型的 Linux 主機(jī)上安裝 Docker 客戶(hù)端,運(yùn)行 Docker daemon ,并且在本地主機(jī)上直接運(yùn)行一些容器。這就意味著你可以為 Docker 容器指定本地主機(jī)端口,例如 localhost:8000 或者 0.0.0.0:8376。
http://wiki.jikexueyuan.com/project/docker/images/linux_docker_host.png" alt="linux_docker_host" />
在 OS X 上安裝的 Docker , docker 進(jìn)程是通過(guò) Boot2Docker 在 Linux 虛擬主機(jī)上運(yùn)行的。
http://wiki.jikexueyuan.com/project/docker/images/mac_docker_host.png" alt="mac_docker_host" />
在 OS X 中,Docker 主機(jī)地址就是 Linux 虛擬主機(jī)地址。當(dāng)你啟動(dòng) boot2docker 進(jìn)程的時(shí)候,虛擬主機(jī)就會(huì)為它指定IP。在 boot2docker 下運(yùn)行的容器,通過(guò)端口映射的方式將端口映射到虛擬主機(jī)上。你可以通過(guò)本頁(yè)面上的操作實(shí)踐來(lái)體會(huì)到這一點(diǎn)。
點(diǎn)擊進(jìn)入boot2docker/osx-installer release頁(yè)面。
在下載頁(yè)面中點(diǎn)擊 Boot2Docker-x.x.x.pkg 來(lái)下載 Boot2Docker。
雙擊安裝包來(lái)安裝 Boot2Docker
將 Boot2Docker 放到你的 "應(yīng)用程序(Applications)" 文件夾
安裝程序會(huì)將 docker 和 boot2docker 二進(jìn)制包放到 /usr/local/bin 文件夾下。
想要運(yùn)行一個(gè) Docker 容器,首先,你需要先啟動(dòng) boot2docker 虛擬機(jī),然后使用 docker 命令來(lái)加載、運(yùn)行、管理容器。你可以從你的應(yīng)用程序文件夾雙擊啟動(dòng) boot2docker,或者使用命令行來(lái)啟動(dòng)。
提示: Boot2Docker 是被作為開(kāi)發(fā)工具而設(shè)計(jì)的,不適用于生產(chǎn)環(huán)境中。
當(dāng)你從你的“應(yīng)用程序文件夾(Applications)” 來(lái)啟動(dòng) "Boot2Docker" 程序, 程序會(huì)做如下事項(xiàng):
docker 進(jìn)程到這里就啟動(dòng)完畢了, 你可以運(yùn)行 docker 命令。你可以運(yùn)行 hello-word 容器來(lái)驗(yàn)證你是否安裝成功。
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
511136ea3c5a: Pull complete
31cbccb51277: Pull complete
e45a5af57b00: Pull complete
hello-world:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Status: Downloaded newer image for hello-world:latest
Hello from Docker.
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(Assuming it was not already locally available.)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
For more examples and ideas, visit:
http://docs.docker.com/userguide/
你可以使用命令行來(lái)啟動(dòng)和關(guān)閉 boot2docker 。
使用命令行來(lái)初始化和運(yùn)行 boot2docker ,有如下步驟:
1、 創(chuàng)建一個(gè)新的 Boot2Docker 虛擬機(jī)
$ boot2docker init
這會(huì)創(chuàng)建一個(gè)新的虛擬主機(jī),你只需要運(yùn)行一次這個(gè)命令就可以了,以后就不需要了。
2、 啟動(dòng) boot2docker 虛擬機(jī)。
$ boot2docker start
3、 通過(guò) docker 客戶(hù)端來(lái)查看環(huán)境變量
$ boot2docker shellinit
Writing /Users/mary/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/mary/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/mary/.boot2docker/certs/boot2docker-vm/key.pem
export DOCKER_HOST=tcp://192.168.59.103:2376
export DOCKER_CERT_PATH=/Users/mary/.boot2docker/certs/boot2docker-vm
export DOCKER_TLS_VERIFY=1
每臺(tái)機(jī)器的具體路徑和地址可能都不相同。
4、 使用 shell 命令來(lái)設(shè)置環(huán)境變量。
$ eval "$(boot2docker shellinit)"
5、 運(yùn)行 hello-word 容器來(lái)驗(yàn)證安裝。
$ docker run hello-world、
這一部分,需要你提前運(yùn)行 boot2docker 并初始化 docker 客戶(hù)端環(huán)境。你可以運(yùn)行下邊的命令來(lái)驗(yàn)證:
$ boot2docker status
$ docker version
本節(jié)我們通過(guò)使用 boot2docker 虛擬機(jī)來(lái)創(chuàng)建一些容器任務(wù)
1、 在 Docker 主機(jī)上啟動(dòng)一個(gè) Nginx 容器。
$ docker run -d -P --name web nginx
一般來(lái)說(shuō),docker run 命令會(huì)啟動(dòng)一個(gè)容器,運(yùn)行這個(gè)容器,然后退出。-d 標(biāo)識(shí)可以讓容器在 docker run 命令完成之后繼續(xù)在后臺(tái)運(yùn)行。 -P 標(biāo)識(shí)會(huì)將容器的端口暴露給主機(jī),這樣你就可以從你的 MAC 上訪問(wèn)它。
2、 使用 docker ps 命令來(lái)查看你運(yùn)行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5fb65ff765e9 nginx:latest "nginx -g 'daemon of 3 minutes ago Up 3 minutes 0.0.0.0:49156->443/tcp, 0.0.0.0:49157->80/tcp web
通過(guò)這一點(diǎn)我們可以看出 nginx 作為一個(gè)進(jìn)程運(yùn)行。
3、 查看容器端口
$ docker port web
443/tcp -> 0.0.0.0:49156
80/tcp -> 0.0.0.0:49157
上邊的顯示告訴我們,web 容器將 80 端口映射到 Docker 主機(jī)的 49157 端口上。
4、 在瀏覽器輸入地址 http://localhost:49157 (localhost 是 0.0.0.0):
http://wiki.jikexueyuan.com/project/docker/images/bad_host.png" alt="bad_host.png" />
沒(méi)有正常工作。沒(méi)有正常工作的原因是 DOCKER_HOST 主機(jī)的地址不是 localhost (0.0.0.0),但是你可以使用 boot2docker 虛擬機(jī)的IP地址來(lái)訪問(wèn)。
5、 獲取 boot2docker 主機(jī)地址
$ boot2docker ip
192.168.59.103
6、 在瀏覽器中輸入 http://192.168.59.103:49157

成功運(yùn)行!
7、 通過(guò)如下方法,停止并刪除 nginx 容器。
$ docker stop web
$ docker rm web
當(dāng)你啟動(dòng) boot2docker 的時(shí)候,它會(huì)自動(dòng)共享 /Users 目錄給虛擬機(jī)。你可以利用這一點(diǎn),將本地目錄掛載到容器中。這個(gè)練習(xí)中我們將告訴你如何進(jìn)行操作。
1、 回到你的 $HOME 目錄
$ cd $HOME
2、 創(chuàng)建一個(gè)新目錄,并命名為 site
$ mkdir site
3、 進(jìn)入 site 目錄。
$ cd site
4、 創(chuàng)建一個(gè) index.html 文件。
$ echo "my new site" > index.html
5、 啟動(dòng)一個(gè)新的 nginx 容器,并將本地的 site 目錄替換容器中的 html 文件夾。
$ docker run -d -P -v $HOME/site:/usr/share/nginx/html --name mysite nginx
6、 獲取 mysite 容器端口
$ docker port mysite
80/tcp -> 0.0.0.0:49166
443/tcp -> 0.0.0.0:49165
7、 在瀏覽器中打開(kāi)站點(diǎn)。

8、 現(xiàn)在嘗試在 $HOME/site 中創(chuàng)建一個(gè)頁(yè)面
$ echo "This is cool" > cool.html
9、 在瀏覽器中打開(kāi)新創(chuàng)建的頁(yè)面。

10、 停止并刪除 mysite 容器。
$ docker stop mysite
$ docker rm mysite
如果你現(xiàn)在運(yùn)行的是1.4.1及以上版本 Boot2Docker , 你可以使用命令行來(lái)升級(jí) Boot2Docker 。如果你運(yùn)行的是老版本,你需要使用 boot2docker 倉(cāng)庫(kù)提供的包來(lái)升級(jí)。
你可以參照下邊的操作來(lái)升級(jí)1.4.1以上版本:
1、 在你的機(jī)器中打開(kāi)命令行。
2、 停止 boot2docker 應(yīng)用。
$ boot2docker stop
3、 執(zhí)行升級(jí)命令。
$ boot2docker upgrade
下邊的操作可以升級(jí)任何版本的 Boot2Docker:
1、 在你的機(jī)器中打開(kāi)命令行。
2、 停止 boot2docker 應(yīng)用。
$ boot2docker stop
3、 打開(kāi) boot2docker/osx-installer 發(fā)布頁(yè)。
4、 在下載部分點(diǎn)擊 Boot2Docker-x.x.x.pkg 來(lái)下載 Boot2Docker。
5、 雙擊安裝 Boot2Docker 包。
將 Boot2Docker 拖放到應(yīng)用程序文件夾。
使用 boot2docker help 列出完整的命令行參考列表。更多關(guān)于使用 SSH 或 SCP 來(lái)訪問(wèn) Boot2Docker 虛擬機(jī)的文檔,請(qǐng)查看 Boot2Docker repository 。