Docker for Mac 和 Docker for Windows 是個正在封測,並與 Docker Toolbox, Boot2docker 使用不同虛擬化技術的 Docker 原生應用程式 (native application) 。其分別使用了 xhyve VM 與 Hyper-V VM 的架構,讓我們不需再連到 Virtualbox 裡的
boot2docker VM 裡即可使用 Docker。若想深入了解其差異,可參考
Docker for Mac vs. Docker Toolbox 一文。
先前透過 Virtualbox 使用 Docker 時,偶而會遇到 Docker 失靈,需重開 docker-machine 才可繼續使用之情形。相信在改用原生的 Docker 後,不管是穩定度還是效能都會有所改善。
|
▲ Docker for Mac (v1.11.0-beta8) |
1. 事前準備
本文的情境是原先已安裝 Docker Toolbox (docker-machine),事後收到 Docker for Mac 的 Beta 封測信後所進行的。若客倌是直接安裝 Docker for Mac,或已移除 Docker Toolbox 的情境下,可略過此步驟。
名稱 | 別名 | Native app | 虛擬化技術 |
Boot2docker | boot2docker | ㄨ | Virtualbox |
Docker Toolbox | docker-machine | ㄨ | Virtualbox |
Docker for Mac | Docker.app | 〇 | xhyve VM |
Docker for Windows | none | 〇 | Hyper-V VM |
▲ 本文將會提到的 Docker 相關資訊。
1.1. 列出所有的 docker machine。
[ jonny@el_capitan ~ ]
$ docker-machine ls [Enter]
NAME ACTIVE DRIVER STATE URL SWARM
default * virtualbox Stopped tcp://192.168.99.100:2376
1.2. 停止執行中的 docker machine。
[ jonny@el_capitan ~ ]
$ docker-machine stop default [Enter]
NAME ACTIVE DRIVER STATE URL SWARM
default virtualbox Stopped
1.3. 移除應用程式 (Applications) 路徑底下的 Docker 相關檔案。
[ jonny@el_capitan ~ ]
sudo rm -rf /Applications/Docker [Enter]
2. 安裝 Docker for Mac
以下為凍仁在 Mac OS X 10.11.4 安裝 Docker for Mac (v1.11.0-beta8) 的相關步驟。
|
▲ 2.1. 執行 Docker for Mac 安裝程式。 |
|
▲ 2.2. 拖曳 Docker.app 圖示到 Applications 裡。 |
|
▲ 2.3. 執行 Docker.app 進入安裝程序。 |
|
▲ 2.4. 輸入 Docker for Mac 的封測邀請碼。 |
|
▲ 2.5. 驗證完成。 |
|
▲ 2.6. 要求存取 /user/local/bin 目錄之權限。 |
|
▲ 2.7. Docker Toolbox 移轉程序。 |
|
▲ 2.8. 正在移轉 docker image。 |
|
▲ 2.9. 安裝完成。 |
|
▲ 2.10. 安裝完成會在右上角的選單列圖示看到 Docker 的圖示。 |
|
▲ 2.11. Settings… |
2.13. 新的 docker image 將會儲存於
~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2。
[ jonny@el_capitan ~ ]
$ ls -lh \
~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux [Enter]
total 23367224
-rw-r--r-- 1 jonny staff 11G May 2 22:29 Docker.qcow2
-rw-r--r-- 1 jonny staff 64K May 1 11:08 console-ring
-rw-r--r-- 1 jonny staff 5B Apr 29 10:17 hypervisor.pid
-rw-r--r-- 1 jonny staff 0B Apr 23 17:42 lock
drwxr-xr-x 8 jonny staff 272B Apr 23 17:42 log
-rw-r--r-- 1 jonny staff 17B Apr 29 10:17 mac.0
-rw-r--r-- 1 jonny staff 36B Apr 23 17:42 nic1.uuid
-rw-r--r-- 1 jonny staff 36B Apr 23 17:42 nic2.uuid
-rw-r--r-- 1 jonny staff 5B Apr 29 10:17 pid
lrwxr-xr-x 1 jonny staff 12B Apr 29 10:17 tty -> /dev/ttys004
-rw-r--r-- 1 jonny staff 1.1K Apr 29 10:17 xhyve.args
2.14. 執行 Docker for Mac 以驗證是否可以正常使用 Docker。
[ jonny@el_capitan ~ ]
$ docker run -d -p 8000:80 --name webserver nginx [Enter]
2.15. 使用 curl 進行測試,以下為 Nginx container 正常運作之結果。
[ jonny@el_capitan ~ ]
$ curl -s http://localhost:8000 [Enter]
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
|
▲ 2.16. 使用 Firefox 進行測試之結果。 |
3. 移除 Docker Toolbox (可略過)
Docker for Mac 的安裝程式是不會對 Docker Toolbox 進行移除程序的,所以在成功安裝 Docker for Mac 後,需手動移除 Docker Toolbox (docker-machine)。
移除前請先再三先確 Docker for Mac 是否可以正常運作,否則會有遺失 docker image 的風險。
3.1. 移除 docker machine。
[ jonny@el_capitan ~ ]
$ docker-machine rm default [Enter]
About to remove default
Are you sure? (y/n): y
Successfully removed default
3.2. 移除 Virtualbox 目錄。
[ jonny@el_capitan ~ ]
$ rm -rf ~/.docker/machine/machines/ [Enter]
3.3. 檢視 Docker 執行檔。
[ jonny@el_capitan ~ ]
$ ls -l /usr/local/bin/ | grep docker [Enter]
-rwxr-xr-x 1 jonny admin 7.3M Feb 11 2015 boot2docker
lrwxr-xr-x 1 jonny staff 65B Apr 23 16:07 docker -> /Users/jonny/Library/Group Containers/group.com.docker/bin/docker
lrwxr-xr-x 1 jonny staff 73B Apr 23 16:07 docker-compose -> /Users/jonny/Library/Group Containers/group.com.docker/bin/docker-compose
-rwxr-xr-x 1 jonny admin 4.8M Apr 14 04:28 docker-compose.backup
lrwxr-xr-x 1 jonny staff 73B Apr 23 16:07 docker-machine -> /Users/jonny/Library/Group Containers/group.com.docker/bin/docker-machine
-rwxr-xr-x 1 jonny admin 39M Apr 14 04:28 docker-machine.backup
-rwxr-xr-x 1 jonny admin 9.9M Apr 14 02:17 docker.backup
lrwxr-xr-x 1 jonny staff 65B Apr 23 16:07 notary -> /Users/jonny/Library/Group Containers/group.com.docker/bin/notary
lrwxr-xr-x 1 jonny staff 65B Apr 23 16:07 pinata -> /Users/jonny/Library/Group Containers/group.com.docker/bin/pinata
3.4. 移除過時的 Docker 執行檔。
[ jonny@el_capitan ~ ]
$ sudo rm -f \
/usr/local/bin/docker-compose.backup \
/usr/local/bin/docker-machine.backup \
/usr/local/bin/docker.backup [Enter]
4. 移除 Boot2docker (可略過)
由於凍仁的 Docker Toolbox 是從 Boot2docker 移轉過來的,所以才會殘留 boot2docker.iso 與相關檔案,未安裝 Boot2docker 的人請忽略該步驟。
[ jonny@el_capitan ~ ]
$ sudo rm -rf \
/usr/local/bin/boot2docker \
/usr/local/share/boot2docker/ [Enter]
趁週末空檔進行移轉程序的凍仁覺得 Docker 公司很用心!不管是從 Boot2docker 移轉到 Docker Toolbox,還是從 Docker Toolbox 移轉到 Docker for Mac,其安裝程式都有內建移轉功能。
感謝友人
Aminzai 指正。雖說目前對官方而言 Docker for Mac 是 Mac native application,但背地裡還是使用 xhyve VM 執行 Alpine Linux 來跑 Docker,與 GNU/Linux 的 native 還是有所不同。
[ jonny@el_capitan ~ ]
$ docker info
Containers: 1
Running: 0
Paused: 0
Stopped: 1
Images: 35
Server Version: 1.11.1
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 124
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: host bridge null
Kernel Version: 4.4.6-moby
Operating System: Alpine Linux v3.3
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.956 GiB
Name: docker
ID: V5F2:RAIJ:5MHW:7YO2:DXUF:XXIX:QXSG:XRVE:CN3B:TERM:MMPX:SLH7
Docker Root Dir: /var/lib/docker
Debug mode (client): false
Debug mode (server): true
File Descriptors: 15
Goroutines: 35
System Time: 2016-05-05T06:17:06.573284709Z
EventsListeners: 1
Registry: https://index.docker.io/v1/
相關連結:
★ Installation on Mac OS X | Docker
★ Docker 奉上生日大禮,推出原生 Windows 及 Mac 版 Docker | iThome
★ Mac OS X 新手從頭學:介面用語一次搞懂 | T客邦
資料來源:
★ Getting Started | Docker for Mac
★ Docker for Mac vs. Docker Toolbox | Docker for Mac
Docker for Mac(Beta)(xhyve) 小觀察 | 民
★ Migrate from Boot2Docker to Machine | Docker
★ toolbox/uninstall.sh at master · docker/toolbox | GitHub
留言
張貼留言
喜歡這篇文章嗎?歡迎在底下留言讓凍仁知道。😉