Dockerでアプリケーションのデータコンテナーを構築しようとしています。このコマンドを実行して、いくつかのボリュームを公開します。
docker run --name svenv.nl-data -v /etc/environment -v /etc/ssl/certs -v /var/lib/mysql -d svenv/svenv.nl-data
問題は、このコマンドからこのエラーが発生することです。
Error response from daemon: cannot mount volume over existing file, file exists /var/lib/docker/aufs/mnt/aefa66cf55357e2e1e4f84c2d4d2d03fa2375c8900fe3c0e1e6bc02f13e54d05/etc/environment
Dockerのドキュメントを正しく理解している場合。単一ファイルのボリュームの作成がサポートされています。したがって、このエラーが発生する理由がわかりません。
これを私に説明できる人はいますか? Ubuntu 14.04でDocker 1.9.1を実行しています。
あなたは使うべきです:
-v /etc/environment:/etc/environment
の代わりに:
-v /etc/environment
前者は、コンテナーボリュームをホストボリュームにマップします。後者は/etc/environment
に新しいボリュームを作成しようとしますが、このディレクトリがすでに存在するため失敗します。
あなたがLinuxの下にいると仮定して、次のコードを実行してください
docker run -it --rm -v /local_dir:/image_root_dir/mount_dir image_name
詳細は次のとおりです。
-it: interactive terminal
--rm: remove container after exit the container
-v: volume or say mount your local directory to a volume
マウント機能はイメージのディレクトリを「カバー」するため、常にイメージのルートディレクトリの下に新しいディレクトリを作成する必要があります。
詳細については、公式ドキュメント se bind mounts をご覧ください。
ファイルをマウントするのではなく、代わりにマウントを宣言しているからでしょう。代わりにこの表記を試してください:-v <full path to a file you want to overwrite the target with>:/etc/environment