Dockefile内のボリュームを初期化するように、バインドマウントをdockerファイルに追加します。方法はありますか?
Dockerfileは、イメージの使用方法ではなく、イメージの作成方法を定義します。したがって、Dockerfileでバインドマウントを指定することはできません。代わりに docker-compose を使用してみてください。ディレクトリをマウントする簡単なdocker-compose.yml
は次のようになります。
version: '3.1'
services:
mycontainer:
image: myimage
build: .
volumes:
- './path/on/docker/Host:/path/inside/container'
build: .
は、他の方法で画像を構築する場合はオプションですが、1つの方法ですべてを実行すると便利な場合があります。
docker-compose up -d
でこれを実行します
他の答えが言うことに加えて:
バインドマウントはホストファイルシステムへのアクセスを提供するため、それらをイメージに埋め込むことは大きなセキュリティリスクになります。たとえば、Webサーバーのようなイメージを考えてみてください。ただし、実際にはbindは/etc/passwd
および/etc/shadow
その後、リモートサーバーに送信します。
または、マウントをバインドするもの/lib/ld-linux.so
そしてそれを上書きし、システム全体を破壊します。
これらの理由により、バインドマウントをDockerfileに埋め込むことはできません。同様に、Dockerfileでホストポートマッピング、ホストデバイスアクセス、またはその他の同様の属性を指定することはできません。
簡単な答えはノーです。
Dockerイメージの基本的な設計原則は、移植性です。マウントされたフォルダはホストマシンで定義されるため、バインドマウントはホスト固有です。したがって、これはDockerイメージの移植性の要件と矛盾します。