0

我有一个 Docker 容器,其中从主机安装了一个文件夹(noureldin.local.crt 是一个文件夹):

etc/ssl/CA/ICA01/keys/noureldin.local.crt:etc/ssl/samba.crt:ro

然后我从主机中删除了那个文件夹,并创建了一个名称完全相同的文件,而不是相同路径下的文件夹(noureldin.local.crt现在是一个文件),然后重新启动了容器,但是现在容器不能开始是因为 docker 告诉这不是一个文件夹,并出现以下错误:

d241b7e25143187fbf8258a664f5d409d1abd4d9578f045cb493df26ed204d46
docker: Error response from daemon: invalid header field value "oci runtime error: container_linux.go:247: starting container process caused \"process_linux.go:359: container init caused \\\"rootfs_linux.go:53: mounting \\\\\\\"/etc/ssl/CA/ICA01/keys/noureldin.local.crt\\\\\\\" to rootfs \\\\\\\"/var/lib/docker/overlay/8888974e268a54dafd22ccb2d05f9cd33da4bfa70d3ee1df0070fcc8c804c411/merged\\\\\\\" at \\\\\\\"/var/lib/docker/overlay/8888974e268a54dafd22ccb2d05f9cd33da4bfa70d3ee1df0070fcc8c804c411/merged/etc/ssl/samba.crt\\\\\\\" caused \\\\\\\"not a directory\\\\\\\"\\\"\"\n".

在这里我试图删除我在覆盖文件夹的错误中看到的那个路径,但我总是在新创建的路径中遇到同样的错误。(我知道我不应该手动删除任何东西)。

之后,我再次尝试恢复具有相同名称而不是文件的文件夹(就像第一步一样)。但现在容器没有启动并以错误126退出。

我尝试删除然后重新创建容器,但我总是收到该错误(这与我从主机安装的路径有关)。

有人可以帮我解决这个问题(我想保持路径相同)。

4

1 回答 1

0

我尝试使用 Docker 版本 1.12.3 重现这一点(请参阅下面的 shell 输出)。删除目录并将其替换为文件会导致相同的错误。但是,一旦我删除了文件并将目录放回原处,我就能够重新启动容器。该目录也被重新创建。

我能看到的唯一一件事是你所做的和我所做的不同,看起来你正在为你的卷使用相对路径(我认为不支持),或者它可能是一个复制/粘贴的东西领先/下降了。目录名称/路径也不同,但这也不应该有所作为。


~/work ᐅ mkdir ttt
~/work ᐅ docker run -itd -v $(pwd)/ttt:/ttt/ssl/samba.crt:ro ubuntu /bin/bash                                   2dc4fe36b2d4bf73a019160437a9f64501b05bb54ed7dc74d5b5f6b487171f27
~/work ᐅ rm -rf ttt
~/work ᐅ touch ttt
~/work ᐅ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
2dc4fe36b2d4        ubuntu              "/bin/bash"         25 seconds ago      Up 24 seconds                           mad_boyd
~/work ᐅ docker restart mad_boyd
Error response from daemon: Cannot restart container mad_boyd: invalid header field value "oci runtime error: container_linux.go:247: starting container process caused \"process_linux.go:359: container init caused \\\"rootfs_linux.go:53: mounting \\\\\\\"/home/roman/work/stackoverflow/volume-stuff/ttt\\\\\\\" to rootfs \\\\\\\"/var/lib/docker/aufs/mnt/ddb94bac7c9f1fa43165b514e84f2584887040b04e42748cfa06011113514d30\\\\\\\" at \\\\\\\"/var/lib/docker/aufs/mnt/ddb94bac7c9f1fa43165b514e84f2584887040b04e42748cfa06011113514d30/ttt/ssl/samba.crt\\\\\\\" caused \\\\\\\"not a directory\\\\\\\"\\\"\"\n"
~/work ᐅ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
~/work ᐅ rm ttt
~/work ᐅ docker start mad_boyd 
mad_boyd
~/work ᐅ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
2dc4fe36b2d4        ubuntu              "/bin/bash"         56 seconds ago      Up 1 seconds                            mad_boyd
~/work ᐅ ls
ttt
于 2016-11-30T01:58:53.853 回答