我设法在/var/lib/docker/containers目录下找到了容器,但我找不到图像。

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


当前回答

这是过去的做法,现在已经改变了。从2019年开始,请忽略这个答案

在Mac OS X或Windows的特殊情况下,使用boot2docker,您的Docker映像存储在由boot2docker管理的VirtualBox虚拟机中。

该虚拟机将存储在VirtualBox镜像的正常位置:

OS X: ~/VirtualBox VMs/boot2docker-vm

窗口:%用户框%/虚拟盒子VMs/boot2docker-vm

你可以通过运行(警告:这将破坏你迄今为止构建和下载的所有图像)来重置它:

boot2docker down
boot2docker destroy
boot2docker init
boot2docker up

如果你在没有——rm选项的情况下构建/调试构建时保存了大量的中间映像,这一点特别有用,我在这里引用它们作为参考: 使用:

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

而不是:

docker build -t webapp .

其他回答

对于正在使用Docker工具箱(使用Docker -machine)的人来说,关于Mac OS X上boot2docker的答案是无效的。docker-machine虚拟机被称为“default”,它存在于/Users/<username>/。码头工人/机械/机器/违约/目录中。

sudo docker info | grep -e "Root Dir"

在Docker for Windows(本地Windows)中,默认的容器存储在:

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

在Windows 2016中,DockerMsftProvider使用docker根目录下的文件夹“windowsfilter”

>docker info
...
Storage Driver: windowsfilter
...
Docker Root Dir: C:\ProgramData\docker
...

它使用docker root下的“tmp”文件夹下载文件,并将下载的文件解压缩到“windowsfilter”文件夹后删除文件。

如果有人需要它来编写脚本,这里有一个简单的解决方案。

在POSIX shell中,启用了PCRE的grep,尝试:

DOCKER_ROOT_DIR="$(docker info 2>&1 | grep -oP '(?<=^Docker根目录:).*')"

PowerShell:

$DOCKER_ROOT_DIR="$(docker信息2>&1 | foreach {if($_ -match " docker根目录"){$_。TrimStart("Docker根目录:")}})"

注意,在Windows 10(截至10.0.18999.1)上,在默认配置下,它返回:

C:\ProgramData\Docker在“Windows容器”模式 /var/lib/docker,以“Linux容器”模式