macos中docker的存储路径问题

参考:https://blog.donghy.cn/20200215133.html

docker 在 macOS 中的架构:

在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

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内存。
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项目社区版的名称。
架构

Docker宿主机与macOS操做系统的目录共享

因为以下共享文件夹功能的存在,在这个虚拟机中能够访问并更新macOS操做系统本地的目录。
咱们仍是在screen中看一下这些共享目录的状况。
ui

/ # 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。spa

相关文章
相关标签/搜索