在 Mac OS X 上由 Docker (1.9.1)下载的 Docker 图像的位置

从 Mac OSX 的 docker hub 下载后,Docker 映像位于何处。例如,如果我运行如下命令:

docker run hello-world

映像已经下载,容器已经运行,但是映像在我的系统中位于哪里呢?

注意: Docker 映像存储在主机上的什么地方?这个问题的答案主要与 linux 机器有关。Mac OS X 的答案是,boot2docker 正在与 docker 安装一起使用,而我的情况并非如此。

87531 次浏览

对于使用 Docker 工具箱(使用 Docker-machine)的用户,有关 MacOSX 上 boot2docker 的答案是无效的。Docker-machine VM 被称为“ default”,它存在于 /Users/<username>/.docker/machine/machines/default/目录中。

注意: 我还增加了这个问题的答案: Docker 映像存储在主机上的什么地方?,但我在这里也回答这个问题,以便更容易找到答案的人特别是寻找 Mac OS X 和新版本的 Docker。

如果你在 Mac 上使用 Docker,那么位置又不一样了,即:

/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

通过从 Docker 工具栏图标中选择 Preferences-> Advanced 菜单(在 Docker-CE v17中工作) ,也可以看到 磁盘映像位置(如 医生中提到的) :

Docker->Preferences->Advanced

更新: 正如@udondan Docker 提到的,现在在首选项中有一个单独的“ Disk”选项卡,它显示磁盘映像位置:

Docker->Preferences->Disk

详细说明如何打开这些文件夹,以防您现在获得目录,因为它是一个挂载在虚拟主机上,而不是您的 Mac 常规卷

screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty


ls -ltrh /var/lib/docker/volumes

给你的回答

如果希望通过 Mac 控制卷,可以在创建容器时映射它

docker run -it --name voltest2 -v /path/to_mac/directory/MyHostDir:/mydata centos:latest /bin/bash

它将把容器上的目录 mydata映射到 Mac 上的目录 /path/to_mac/directory/MyHostDir

在我的示例中(安装了 Mavericks/docker brew/Image name: default)位于

/Users/<Username>/.docker/machine/machines/.

(你必须使用终端,而不是查找器才能看到它。)

   ls -lah /Users/Mitsos/.docker/machine/machines/
total 0
drwx------   3 Mitsos  staff   102B Dec  8 19:03 .
drwxr-xr-x   5 Mitsos  staff   170B Sep 22 13:52 ..
drwx------  13 Mitsos  staff   442B Dec  8 19:04 default

这个答案与 MAC 的 boot2Docker 版本无关。这里是 Version 17.12.0-ce-mac55,你必须记住 Docker 仍然在 VM 中运行,系统路径是相对于 VM 的,而不是来自 Mac Osx 系统。 正如它所说的,所有内容都包含在一个 VM 文件中:

/Users/MyUserName/Library/Container/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qCow2

尝试使用这个卷选项运行 Alpine image,使用 ls 命令可以列出 VM 主机:

Docker run —— rm-it-v/:/vm-root alpine: edge ls-l/vm-root

在这之后,试试看:

码头运行—— rm-it-v/:/vm-root alpine: edge ls-l /vm-root/var/lib/docker

现在,您可以列出来自 WM 主机的 docker 文件夹

在我的例子中,我想定位 Docker 图像并将它们复制到另一个位置。

使用 docker save将一个或多个图像保存到 tar 归档文件(默认情况下流到 STDOUT)

链接: https://docs.docker.com/engine/reference/commandline/save/

有一些关于这个 给你的信息。你可以通过运行检查位置

docker info| grep "Docker Root Dir"

Docker 映像与 Docker Desktop 存储在 Mac 上的不同位置,与存储在其他 Linux 系统上的位置不同。

摘自 Docker 文档(从 https://docs.docker.com/docker-for-mac/space/中检索2020年3月25日)

DockerDesktop 将 Linux 容器和映像存储在一个单独的、大型的 “磁盘映像”文件在 Mac 文件系统中。这不同于 Docker 它通常将容器和映像存储在 /var/lib/docker 目录。

在我的 MacOS 10.14.6 Mojave 的 Mac 上,运行 Docker version 19.03.8,单个大文件可以在以下地址找到:

~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw

在 Docker Desktop version 2.2.0.4中,请查看下面的截图。

enter image description here

在 MacOS 10.15.4 Catalina 的 Mac 上,运行 Docker 19.03.8/Docker Desktop 2.3.0.2(45183) Docker.raw 位于这里:

~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw