zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    2.2.7将任意对象作为对象监视器
    2.2.6验证同步代码块时锁定当前对象的
    2.2.5synchronized代码间的同步性
    2.2.4一半异步,一半同步
    2.2.3用同步代码块解决同步方法的弊端
    FL2440 ubifs文件系统烧录遇到的问题——内核分区的重要性
    FL2440 rt3070模块ap模式移植
    FL2440 rt3070模块station模式动态获取IP地址
    FL2440 rt3070模块station模式移植
    fl2440 platform总线button字符设备驱动
  • 原文地址:https://www.cnblogs.com/cag2050/p/10100899.html
Copyright © 2011-2022 走看看