Dockerでホストフォルダとコンテナフォルダをマージするにはどうすればいいですか?質問する

Dockerでホストフォルダとコンテナフォルダをマージするにはどうすればいいですか?質問する

私はDocker上でWikimediaを実行しています。Wikimediaの拡張機能は、extensions/最初は組み込みの拡張機能を含むフォルダにあります(1つの拡張機能= 1つのサブフォルダ)

今、新しい拡張機能を追加したいと考えています。ただし、Dockerfile を変更したり、既存のコンテナに新しいコミットを作成したりするオプションは好みません。

/home/admin/wikimedia/extensions/コンテナ内のフォルダとマージされる(上書きしない)フォルダをホスト内に作成することは可能ですかextension?新しい拡張機能をインストールするときはいつでも、拡張機能フォルダをホストにコピーするだけです/home/admin/wikimedia/extensions/

ベストアンサー1

ホストから拡張機能フォルダーとは別の場所にボリュームをマウントし、起動スクリプトでその内容をコンテナーのディレクトリにコピーすることができます。ホストを一度再構築する必要があります。

例えば:

Dockerfile:
  RUN cp startup-script /usr/local/bin/startup-script
  CMD /usr/local/bin/startup-script

startup-script:
   #!/bin/bash
   cp /mnt/extensions /path/to/wikipedia/extensions
   /path/to/old-startup-script $@

docker run -d -v /home/admin/wikimedia/extensions:/mnt/extensions wikipedia

これはこの問題を回避する 1 つの方法です。もう 1 つの方法は、拡張機能用に別のデータ コンテナーを維持し、これをマウントして Wikipedia コンテナーの外部で維持することです。すべての拡張機能をその中に含める必要があります。

次のように開始できます:

 docker run -d -v /home/admin/wikimedia/extensions:/path/to/wikipedia/extensions --name extensions busybox tail -f /dev/null
 docker run -d --volumes-from extensions wikipedia

おすすめ記事