Where are Docker images stored on the host machine?
我设法找到了目录
默认情况下,这将是
您可以使用docker守护进程的
/var/lib/docker/{driver-name} 将包含用于图像内容的驱动程序特定存储。/var/lib/docker/graph/ 现在只在json 和layersize 文件中包含有关映像的元数据。
对于
/var/lib/docker/aufs/diff/ 具有图像的文件内容。/var/lib/docker/repositories-aufs 是一个包含本地图像信息的JSON文件。这可以通过命令docker images 查看。
对于
/var/lib/docker/devicemapper/devicemapper/data 存储图像/var/lib/docker/devicemapper/devicemapper/metadata 元数据- 请注意,这些文件是精简配置的"稀疏"文件,因此没有看上去的大。
使用Docker for Mac应用程序时,容器似乎存储在位于以下位置的VM中:
1 | ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2 |
更新(由mmorin提供):
截至2019年1月15日,似乎只有以下文件:
1 | ~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw |
它包含Docker磁盘以及其中的所有图像和容器。
在Mac OS X或Windows的特殊情况下,使用boot2docker,docker映像存储在由boot2docker管理的virtualbox vm中。
此虚拟机将存储在virtualbox映像的正常位置:
&OS X:
&windows:
您可以通过运行来重置它(警告:这将破坏到目前为止生成和下载的所有图像):
1 2 3 4 | boot2docker down boot2docker destroy boot2docker init boot2docker up |
如果在构建/调试构建时保留了大量中间映像,而没有使用有用的--rm选项,那么这一点尤其有用,我在这里引用它们以供参考:用途:
1 | docker build -t webapp --rm=true --force-rm=true . |
而不是:
1 | docker build -t webapp . |
实际上,Docker图像存储在两个文件中,如下命令所示
1 | $ docker info |
Data file:
/var/lib/docker/devicemapper/devicemapper/data Metadata file:
/var/lib/docker/devicemapper/devicemapper/metadata
图像存储在
请注意,图像只是与父图像的不同。父ID与映像的元数据
当你看到一张图片时。AUF将把所有层"合并"成一个可用的文件系统。
在新发布的使用Hyper-V的"Docker for Windows"上,数据位于Docker虚拟硬盘:
1 | C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx |
中。
您还可以打开"Hyper-V管理器"访问docker/mobylinuxvm。
对于使用Docker工具箱(使用Docker机器)的用户,有关Mac OS X上boot2docker的答案无效。docker machine vm称为"默认",它存在于
在Ubuntu上,你可以"播放"运行的图像
1 | sudo baobab /var/lib/docker |
实际上,图像存储在
在Docker for Windows(本机Windows)中,默认容器存储位置为:
1 2 3 4 | > docker info ... Docker Root Dir: C:\ProgramData\Docker ... |
如果您使用docker for mac(不是
正如这里所回答的,如果您在Mac上,它位于
1 | /Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2 |
扩展Tristan的答案,在带有Hyper-V的Windows中,您可以使用Matthuisman的以下步骤移动图像:
In Windows 10,
Stop docker etc Type"Hyper-V Manager" in task-bar search box and run it. Select your PC in the left hand pane (Mine is called
DESKTOP-CBP**)Right click on the correct virtual machine (Mine is
called MobyLinuxVM)Select"Turn off" (If it is running) Right click on it again and select"Move" Follow the prompts
如果您记住Docker仍然在一个虚拟机中运行,那么系统路径是相对于虚拟机的,而不是来自mac osx系统的。正如它所说,所有内容都包含在一个VM文件中:
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
尝试使用此卷选项和ls命令运行alpine image,您可以列出VM主机:
docker run --rm -it -v /:/vm-root alpine:edge ls -l /vm-root
在此之后,请尝试:
docker run --rm -it -v /:/vm-root alpine:edge ls -l
/vm-root/var/lib/docker
现在,您可以从wm主机列出docker文件夹
我在mac osx上使用boot2docker for docker,所以图像存储在
我只能为Ubuntu用户回答这个问题:
在运行命令
docker目录将在这一行中给出:"
关于docker映像,它们存储在docker目录中:
请记住,在所有版本的Docker中,这些东西并不相同。目前,我使用的是1.12.3。
在Docker for Windows中,日志在这里:
检查
图像存储在以下位置:
1 | /var/lib/docker/image/overlay2/imagedb/content |
使用
Depending on the storage driver in use, additional information can be shown, such as pool name, data file, metadata file, data space used, total data space, metadata space used, and total metadata space.
The data file is where the images are stored and the metadata file is where the meta data regarding those images are stored. When run for the first time Docker allocates a certain amount of data space and meta data space from the space available on the volume where
/var/lib/docker is mounted.
下面是有关ubuntu(check root dir)的示例:
1 2 3 4 5 6 7 8 | $ docker info ... Server Version: 18.06.1-ce Storage Driver: aufs Root Dir: /var/snap/docker/common/var-lib-docker/aufs ... Docker Root Dir: /var/snap/docker/common/var-lib-docker ... |
下面是travis ci的示例(请参见docker root dir):
1 2 3 4 5 6 7 | $ docker info Server Version: 17.09.0-ce Storage Driver: overlay2 Backing Filesystem: extfs ... Docker Root Dir: /var/lib/docker ... |
您可以使用
1 2 | $ docker info --format '{{.DriverStatus}}' [[Root Dir /var/snap/docker/common/var-lib-docker/aufs] [Backing Filesystem extfs] [Dirs 265] [Dirperm1 Supported true]] |
或:
1 2 | $ docker info --format '{{json .DriverStatus}}' [["Root Dir","/var/snap/docker/common/var-lib-docker/aufs"],["Backing Filesystem","extfs"],["Dirs","265"],["Dirperm1 Supported","true"]] |
根据Docker入门指南,"您构建的图像"是"在您的机器的本地Docker图像注册表中"。
这对我来说仍然很奇怪,因为现在它引出了这个问题。我的机器的本地Docker映像注册表在哪里?
不过,我绝对认为这个信息值得分享作为答案。
在Fedora上,Docker使用LVM进行存储(如果可用)。在我的系统中,
1 2 3 4 5 6 7 8 9 | 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命令行工具或兼容的分区管理器(如Blivet)。
在Debian不稳定/Sid上,
图像存储在
集装箱存放在
docker版本
在Windows 2016中,docker(dockermsftprovider)使用docker root下的"windowsfilter"文件夹。
1 2 3 4 5 6 | >docker info ... Storage Driver: windowsfilter ... Docker Root Dir: C:\ProgramData\docker ... |
它使用docker root下的"tmp"文件夹下载文件,并将下载的文件解压缩到"windowsfilter"文件夹后删除文件。
我无法用MacOS上的Docker 18.09版通过上述答案解决问题,然后再试了一次。
我唯一的实际解决方案是使用这种
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | version: '3.7' ... services: demo-service: volumes: - data-volume:/var/tmp/container-volume volumes: data-volume: driver: local driver_opts: type: none o: bind device: /tmp/host-volume |
在与
1 2 3 4 5 | > docker exec -it 1234 /bin/bash bash-4.4$ df Filesystem 1K-blocks Used Available Use% Mounted on ... osxfs 488347692 464780044 21836472 96% /var/tmp/container-volume |
希望这也能帮助别人。
环境:Windows 10 Pro,Docker桌面2.0.3.0边缘
右键单击系统托盘中的Docker图标,选择设置-高级:
磁盘图像位置(可通过浏览器编辑):
C:userspublicdocumentshyper-vvirtual hard disksdockerdesktop.vhdx
(在那里-文档目录被隐藏)
图像存储在
正在使用的存储驱动程序可以通过执行