Docker镜像存储在主机上的位置是什么?

我设法find目录/var/lib/docker/containers ,但找不到图像。

/var/lib/docker下的目录和文件是什么?

/var/lib/docker目录的内容取决于Docker用于存储的驱动程序 。

默认情况下,这将是aufs但可以回退到overlayoverlay2btrfsdevicemapperzfs具体取决于您的内核支持。 在大多数地方,这将是aufs但RedHats与devicemapper

您可以使用-s--storage-driver=选项手动将存储驱动程序设置为Docker守护进程 。

  • /var/lib/docker/{driver-name}将包含驱动程序特定的存储内容的图像内容。
  • /var/lib/docker/graph/<id>现在只包含关于图像的元数据,位于jsonlayersize文件中。

aufs的情况下:

  • /var/lib/docker/aufs/diff/<id>具有图像的文件内容。
  • /var/lib/docker/repositories-aufs是一个包含本地图像信息的JSON文件。 这可以使用命令docker images查看。

devicemapper的情况下:

  • /var/lib/docker/devicemapper/devicemapper/data存储图像
  • /var/lib/docker/devicemapper/devicemapper/metadata元数据
  • 请注意,这些文件是精简configuration的“稀疏”文件,因此没有看起来那么大。

当使用Docker for Mac应用程序时,看起来容器存储在以下位置的虚拟机中:

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

在Mac OS X或Windows的特殊情况下,使用boot2docker,您的Docker镜像存储在由boot2dockerpipe理的VirtualBox VM中。

这个虚拟机将被存储在VirtualBox映像的正常位置:

OS X: ~/VirtualBox VMs/boot2docker-vm

Windows: %USERPROFILE%/VirtualBox VMs/boot2docker-vm

你可以通过运行来重置它(警告:这将破坏你已经build立和下载的所有图像):

 boot2docker down boot2docker destroy boot2docker init boot2docker up 

如果在构build/debugging没有使用有效的–rm选项的构build时保留了大量的中间映像,这一点特别有用,下面引用它们作为参考:Use:

 docker build -t webapp --rm=true --force-rm=true . 

代替:

 docker build -t webapp . 

图像存储在/var/lib/docker/graph/<id>/layer

请注意,图像只是从父图像差异。 父ID与图像的元数据/var/lib/docker/graph/<id>/json

当你docker run一个图像。 AUFS将把所有图层合并为一个可用的文件系统。

实际上,Docker映像存储在两个文件中,如下面的命令所示

 $ docker info 

数据文件: /var/lib/docker/devicemapper/devicemapper/data

元数据文件: /var/lib/docker/devicemapper/devicemapper/metadata

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

在新发布的使用Hyper-V的“Docker for Windows”中,数据位于Docker虚拟硬盘中:

  C:\ Users \ Public \ Documents \ Hyper-V \虚拟硬盘\ MobyLinuxVM.vhdx 

您也可以打开“Hyper-Vpipe理器”来访问Docker / MobyLinuxVM。

在Ubuntu上,你可以“运行”图像运行

 sudo baobab /var/lib/docker 

实际上,图像存储在/var/lib/docker/aufs/diff

屏幕截图显示在/ var / lib / docker上运行的磁盘分析器工具猴面包树

如果您使用Docker for MAC(不是boot2docker ),那么位置是/Users/<</>UserName></>/Library/Containers/com.docker.docker/Data/

Docker for Windows (原生Windows)中,默认的容器存储位于:

  > docker info ... Docker Root Dir: C:\ProgramData\Docker ... 

在这里回答,如果你在Mac上,它位于

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

我在Mac OSX上使用boot2docker作为Docker,所以镜像存储在/Users/<USERNAME>/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk

在Docker for Windows中,日志位于: %USERPROFILE%\AppData\Local\Docker

我只能为Ubuntu用户回答这个问题:

在运行命令docker info时,可以finddocker的根目录

Docker目录将在这一行中给出:“ Docker Root Dir: /var/lib/docker

关于docker镜像,它们存储在docker目录中: /var/lib/docker/aufs/diff/

记住这些东西在所有版本的docker中都不相同。 目前,我正在使用1.12.3。

拓展Tristan的答案,在Hyper-V的Windows中,您可以使用matthuisman的这些步骤来移动图像:

 In Windows 10, 1) Stop docker etc 2) Type "Hyper-V Manager" in task-bar search box and run it. 3) Select your PC in the left hand pane (Mine is called DESKTOP-CBP**) 4) Right click on the correct virtual machine (Mine is called MobyLinuxVM) 5) Select "Turn off" (If it is running) 6) Right click on it again and select "Move" 7) Follow the prompts 

在Fedora上,如果可用,Docker使用LVM进行存储。 在我的系统docker info显示:

 Storage Driver: devicemapper Pool Name: vg01-docker--pool Pool Blocksize: 524.3 kB Base Device Size: 10.74 GB Backing Filesystem: xfs Data file: Metadata file: Data Space Used: 9.622 GB ... 

在这种情况下,要增加存储空间,必须使用LVM命令行工具或兼容的分区pipe理器(如blivet)

如果你想看看你在本地有什么图像,你必须运行docker与bash命令交互(我想这就是命令)来获得正常的linux $提示符。 然后运行docker图像。 在mobylinux.vhdx里面,在/ var / lib / docker /是存储本地caching的地方。