Dockerオーバーレイフォルダとホストフォルダ

Dockerオーバーレイフォルダとホストフォルダ

私の状況は次のとおりです。

コンパイル中のドッカーイメージ/コンテナがあります。 Dockerfileを介して$ HOMEにいくつかのコンポーネントをインストールする必要があります(したがってイメージを作成するとき)。これらのコンポーネントの1つが存在するが~/.config他のフォルダにもあるとします。

.configDocker内のフォルダの上にマウントして、ホストシステムのホームフォルダにあるファイルを上書きできるようにしたいです。マウントされたフォルダにファイルを配置するたびに、コンテナに既に存在するファイルを上書きします。

理論的には、これが OverlayFS が行うことです。そうですか?サブディレクトリはDockerコンテナ内のディレクトリであり、親ディレクトリは私のホストコンピュータのディレクトリです。

これを達成する方法はありますか?

これまで、以下の関連トピックを見つけました。

  1. https://serverfault.com/questions/841238/how-to-use-overlayfs-with-docker-volumes

    欠点:答えはホストでoverlayfsを使用する方法だけを示していますが、子コンテナ/イメージディレクトリにアクセスすることは説明を必要とせず、厄介です。

  2. https://stackoverflow.com/questions/29550736/can-i-mount-docker-host-directory-as-copy-on-write-overlay

    欠点:Overlay-on / over-overlayオプションが無効になっているため、docker内でmount -t Overlayを使用すると最新のカーネルでは機能しません。

ホスト(つまり、dockerがファイルを保存するディレクトリ)でdockerファイルを直接操作する方法も考えてみましたが、少し厄介な感じがします。

これを行うには、VOLUME /home/userDockerfileの末尾に宣言します。その後、そのディレクトリに自分のファイルを見つけることができます/var/lib/docker/volumes/user/_data。その後、そのディレクトリを下位層として使用し、別のフォルダを上位層として使用して、ホスト上にオーバーレイファイルを作成できます。それからdocker run --volume。残念ながら、/var/libディレクトリにアクセスするにはsu権限が必要です。また、間違ったレイヤーが変更されました。

別の方法は、単一のファイルをバインドマウントすることですが、これは少しハッキングすることができます。

関連情報