在macOS中,docker的實現跟在其它Linux系統中略有不一樣,在其它Linux系統中,操做系統自己就是docker容器的宿主機,docker鏡像都是直接存儲在宿主機自己的文件系統中,好比咱們經過docker info命令能夠看到docker的根目錄是:html
$ docker info|grep "Docker Root Dir" Docker Root Dir: /var/lib/docker
可是在macOS下,咱們直接查看這個目錄,實際上是根本不存在的。linux
$ ls /var/lib/docker ls: /var/lib/docker: No such file or directory
那麼這個目錄到底在哪裏?其實是在一個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內存。docker
$ 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項目社區版的名稱。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。ui
綜上所述:
存儲在文件Docker.qcow2
中,該文件在macOS系統中位置:
/Users/<YourUserName>/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
操作系統