本系列的實驗,我都是在 AWS 上開一台 EC2 來測試,作業系統會用 Ubuntu 20.04,相關的安裝步驟可以參考官網 Install Docker Engine on Ubuntu,我們這邊就不多加贅述。提醒一下,安裝完成之後,會需要有系統管理員的權限才能執行 docker,例如 sudo docker info
,如果覺得這樣太麻煩的話,可以將你目前的使用者加入 docker 群組中,以獲得執行的權限:
$ sudo usermod -aG docker your-user
執行上述指令後,記得要先登出系統後再登入一次才會生效喔。
為什麼我會選擇用 Ubuntu 來做各種練習與實驗呢?在自己的電腦,例如 Windows 或是 Mac 上練習不是更為方便嗎?以我自已為例,我用的是 Mac 筆電,如果要在 Mac 上安裝 docker,通常官網會建議你安裝 Docker Desktop,裡頭包含了 Docker Engine, Docker CLI client, Docker Buildx, Docker Compose 等,甚至還包括了 Kubernetes,用起來好像也還行,還有視窗環境可以用,視覺化效果似乎比在 Linux 舒適多了。
不過啊,container 其實是一個 Linux 上的技術,Mac 原生是不支援的,所以當我們在 Mac 上面使用 docker 時,是在虛擬技術 HyperKit 上的一台 Linux 虛擬主機裡執行的,也就是隔了一層。我們可以透過 ps
指令看一下在我們 Mac 中執行的 process,可以看到有一個 hyperkit 被執行中
$ ps -u $USER | grep hyperkit
501 74865 ?? 3:52.08 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid ...
另外也可以在 ~/Library/Containers/com.docker.docker/Data/vms/0
這裡看到 VM 的相關資訊,網路上傳說可以透過以下指令存取在 HyperKit 中執行的 Docker VM:
$ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
但我沒有實驗成功,似乎是在某個版本之後,就不能這樣訪問了,如果有朋友知道怎麼存取,可以留個言討論一下,蠻好奇能不能進去那台 VM 裡看看的。
雖然還找不到方法進入那台 VM,但相信講到這邊,大家也知道在 Mac 上執行的 container 其實並不是直接跑在你的電腦中,而是跑在那台 VM 中,隔了這層之後,很多的觀察與實驗是無法做的,因此,真誠地建議,如果想要做一些關於 docker/container 的實驗,還是啟動一台 Linux 來測試看看喔。