1. docker 在 macOS 中的架構 2. 在macOS系統中,docker pull 下來的鏡像存儲在哪里?


docker 在 macOS 中的架構:

在macOS中,docker的實現跟在其它Linux系統中略有不同,在其它Linux系統中,操作系統本身就是docker容器的宿主機,docker鏡像都是直接存儲在宿主機本身的文件系統中,比如我們通過docker info命令可以看到docker的根目錄是:

$ docker info|grep "Docker Root Dir"
Docker Root Dir: /var/lib/docker

但是在macOS下,我們直接查看這個目錄,其實是根本不存在的。

$ ls /var/lib/docker
ls: /var/lib/docker: No such file or directory

Docker宿主機是誰

那么這個目錄到底在哪里?實際上是在一個QEMU虛擬機中,當我們在macOS中安裝完docker並啟動,就是啟動了一個虛擬機,這個虛擬機的整個內容全部都在一個文件里,可以在docker程序屬性界面中看到這個文件的路徑,比如在我的機器上,路徑就是(<YourUserName>替換為你的mac電腦的用戶名)/Users/<YourUserName>/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2,該文件通常比較大,特別是安裝了多個docker鏡像之后,會輕易占用到數十GB的空間。
那么,我們是否可以登錄這個虛擬機來確認這點呢?使用macOS自帶的screen命令可以登錄該台虛擬機。如下,可以看到這是一個擁有非常新的Linux 4.9.38版本內核的虛擬機,在這個虛擬機中才有/var/lib/docker目錄,只有2顆CPU,總共有2GB內存。

$ screen /Users/Kamus/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

/ # uname -a
Linux moby 4.9.38-moby #1 SMP Wed Jul 26 10:02:46 UTC 2017 x86_64 Linux
/ # hostname
moby

/ # ls /var/lib/docker
aufs        containers  network     swarm       tmp-old     volumes
builder     image       plugins     tmp         trust

/ # cat /proc/cpuinfo|grep "processor"
processor       : 0
processor       : 1
/ # cat /proc/meminfo |grep "MemTotal"
MemTotal:        2047040 kB

在screen的窗口按組合鍵control+a d(先按control+a,再按d)可以暫時dettach出這個screen,screen -r可以重新打開窗口。更多的screen命令,可以自行man screen來查看。
所以現在我們可以明確一個概念,macOS本身並不是以后將運行的docker容器的宿主機,而這個Linux虛擬機才是真正的宿主機。這台機器的主機名是moby,這正是docker項目社區版的名稱。

Docker宿主機與macOS操作系統的目錄共享

由於如下共享文件夾功能的存在,在這個虛擬機中可以訪問並更新macOS操作系統本地的目錄。
我們還是在screen中看一下這些共享目錄的情況。

/ # df -h|grep osxfs
osxfs                   465.1G    324.1G    140.7G  70% /private
osxfs                   465.1G    324.1G    140.7G  70% /tmp
osxfs                   465.1G    324.1G    140.7G  70% /Volumes
osxfs                   465.1G    324.1G    140.7G  70% /Users
/ # cd /Users
/Users # ls
Guest   Kamus   Shared

可以看到,確實macOS操作系統中的目錄在虛擬機中是可以直接訪問的,而且更方便的地方是,在虛擬機中自動掛載的目錄路徑跟macOS中的路徑是完全相同的,比如我的個人主目錄無論是在macOS中還是在這個虛擬機中,都是/Users/Kamus。

在macOS系統中,docker pull 下來的鏡像存儲在哪里?

綜上所述:
存儲在文件Docker.qcow2 中,該文件在macOS系統中位置:
/Users/<YourUserName>/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM