Docker コンテナーからローカル ファイルシステムにディレクトリをマウントしたいと考えています。ディレクトリは Web サイトのルートであり、任意のエディターを使用してローカル マシンで編集できる必要があります。
実行できることはわかっていますdocker run -v local_path:container_path
が、実行すると、コンテナー内に空のディレクトリが作成されるだけです。
Linuxホストのdockerコンテナ内にディレクトリをマウントするにはどうすればよいですか?
Docker コンテナーからローカル ファイルシステムにディレクトリをマウントしたいと考えています。ディレクトリは Web サイトのルートであり、任意のエディターを使用してローカル マシンで編集できる必要があります。
実行できることはわかっていますdocker run -v local_path:container_path
が、実行すると、コンテナー内に空のディレクトリが作成されるだけです。
Linuxホストのdockerコンテナ内にディレクトリをマウントするにはどうすればよいですか?
少し奇妙ですが、そのために名前付きボリュームを使用できます。ホストにマウントされたボリュームにもかかわらず、名前付きボリュームは空になりません。そして、ディレクトリにアクセスできます。例を参照してください。
docker volume create --name data
docker run -rm=true -v data:/etc ubuntu:trusty
docker volume inspect data
[
{
"Name": "data",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/data/_data",
"Labels": {},
"Scope": "local"
}
]
マウントポイントが見えますか?
mkdir ~/data
sudo -s
cp -r /var/lib/docker/volumes/data/_data/* ~/data
echo "Hello World">~/data/hello.txt
docker run --rm=true -v ~/data:/etc ubuntu:trusty cat /etc/fstab #The content is preserved
docker run --rm=true -v ~/data:/etc ubuntu:trusty cat /etc/hello.txt #And your changes too
それはまさにあなたが求めていたものではありませんが、あなたのニーズに応じて機能します
よろしく
すぐに使える LAMP を提供することが目標の場合は、Dockerfile 内で VOLUMES 宣言を使用する必要があります。
VOLUME volume_path_in_container
問題は、ボリュームを作成しているパスにファイルが既に存在していたため、docker がファイルをマウントしないことです。@Grif-fin がコメントで述べたように移動するか、コンテナーのエントリ ポイントを変更して、実行時にボリュームに公開するファイルをコピーすることができます。
DockerfileのビルドCOPY
またはコマンドを使用してデータを挿入し、ベース ファイルがコンテナーに存在するようにする必要があります。ADD
COPY
次に、ファイルをパスからボリューム パスにコピーするエントリポイントを作成します。
次に、-v タグなどを使用してコンテナーを実行し-v local_path:volume_path_in_container
ます。このように、コンテナ内のファイルをローカルにマウントする必要があります。(少なくとも、それは私が追加したものでした)。
ここで例を見つけてください: https://github.com/titouanfreville/Docker/tree/master/ready_to_go_lamp。
毎回ビルドする必要がなくなり、決定的なイメージから提供できます。
より良い方法として、マウントされたファイルの所有者になるようにユーザー サポートを追加するとよいでしょう (root でない場合)。
お役に立てば幸いです。