0

ホストからフォルダーがマウントされた Docker コンテナーがありました(noureldin.local.crt はフォルダーです)。

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

次に、そのフォルダーをホストから削除し、同じパスのフォルダーの代わりにまったく同じ名前のファイルを作成し(noureldin.local.crt はファイルになりました)、コンテナーを再起動しましたが、コンテナーを再起動できません。ドッカーがこれはフォルダーではないと通知するため、次のエラーで開始されました。

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 を使用してこれを再現しようとしました(以下のシェル出力を参照)。ディレクトリを削除してファイルに置き換えると、同じエラーが発生しました。ただし、ファイルを削除してディレクトリを元に戻すと、コンテナを再起動できました。ディレクトリも再作成されました。

あなたがしたことと私がしたことの間で唯一違うことがわかったのは、あなたがボリュームに相対パスを使用しているように見えることです (これはサポートされているとは思いませんでした)。先頭/が落ちました。ディレクトリ名/パスも異なりますが、違いはありません。


~/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 に答える