GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Dockerコンテナに単一のファイルをマウントまたはシンボリックリンクする方法

Dockerボリュームとバインドマウントは、ホストOS上のディレクトリをコンテナのファイルシステム内の場所にバインドするために使用されます。これらは通常、ディレクトリ全体をマウントするために使用されますが、個々のファイルをシンボリックリンクするためにも使用できます。

ホストからDockerへのシンボリックリンク

ディレクトリ全体のマウントは、構成ファイルのリスト全体を上書きする場合にうまく機能しますが、1つだけをターゲットにする場合は、単一ファイルのマウントを使用する必要があります。これは、同じディレクトリに複数のマウントを異なる場所からマウントする場合にも役立ちます。 Dockerを介して処理され、ホストとコンテナのファイルシステム間のブリッジを通過することを除けば、通常のLinuxシンボリックリンクとほとんど同じように機能します。

通常のDockerボリュームマウントでは、ターゲットのディレクトリにマウントする必要があります 、その中でボリュームがリンクされます。

docker volume create nginx-config

docker run -d 
--name devtest 
--mount source=nginx-config,target=/etc/nginx 
nginx:latest

ただし、バインドマウントを使用する場合、ソースはディレクトリまたはファイルにすることができます。 ホスト上。ボリュームマウントはこれをサポートしていません。通常はボリュームマウントを使用しますが、単一のファイルをマウントする場合は、低レベルのバインドマウントを使用する必要があります。

これを行うには、フラグ--mount type=bindを指定してコンテナーを実行できます。 、パスを指定すると個々のファイルをサポートします:

docker run -it 
--mount type=bind,source=/path/file.cfg,target=/etc/example/file.cfg 
nginx sh

または、Dockerボリュームを本当に使用したい場合は、マウントする予定のファイルだけでボリュームを作成し、コンテナー内の一時ディレクトリにマウントしてから、コンテナー内に実際のシンボリックリンクを作成できます(Dockerビルドスクリプトで) )ファイルとともに一時ディレクトリにリンクします。これは、バインドマウント全体よりもおそらく悪い解決策ですが、DockerボリュームAPIを介してデータを保存することはできます。


Docker
  1. ホストディレクトリをDockerコンテナにマウントする方法

  2. 実行中のDockerコンテナでコマンドを実行する方法

  3. Dockerコンテナに静的IPを割り当てる方法

  1. Dockerを使用してWordPressをインストールする方法

  2. Dockerコンテナ内でプログラムを実行する方法は?

  3. Dockerコンテナを終了する方法

  1. Dockerイメージからファイルを抽出しますか?

  2. DockerコンテナでMySQLを実行する方法

  3. DockerコンテナにSSHで接続する方法