zoukankan      html  css  js  c++  java
  • macos中docker的存储路径问题

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

    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。

  • 相关阅读:
    1004 Counting Leaves
    1003 Emergency (25分)
    1002 A+B for Polynomials (25分)
    1001 A+B Format
    Weekly Contest 139
    491. Increasing Subsequences
    488. Zuma Game
    servlet总结
    firefox插件Firebug的使用教程
    KMP---POJ 3461 Oulipo
  • 原文地址:https://www.cnblogs.com/robinunix/p/12795456.html
Copyright © 2011-2022 走看看