2016-05-03

在 OSX 10.11.4 安裝 Docker for Mac (v1.11.0-beta8)

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.12. 安裝過程中會詢問是否要下載 Kitematic,這部份就看個人需求了。

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,其安裝程式都有內建移轉功能。

心動了嗎?快去申請 Docker for Mac 的 Beta 邀請信吧!

※ 註:凍仁收到 Docker for Mac (beta) 邀請信的日期為 2016/04/19 。


2016-05-05


感謝友人 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

沒有留言 :

張貼留言

謝謝您的寶貴意見,凍仁一定會盡快處理 ~^^