0

Docker コンテナーからローカル ファイルシステムにディレクトリをマウントしたいと考えています。ディレクトリは Web サイトのルートであり、任意のエディターを使用してローカル マシンで編集できる必要があります。

実行できることはわかっていますdocker run -v local_path:container_pathが、実行すると、コンテナー内に空のディレクトリが作成されるだけです。

Linuxホストのdockerコンテナ内にディレクトリをマウントするにはどうすればよいですか?

4

2 に答える 2

2

少し奇妙ですが、そのために名前付きボリュームを使用できます。ホストにマウントされたボリュームにもかかわらず、名前付きボリュームは空になりません。そして、ディレクトリにアクセスできます。例を参照してください。

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

それはまさにあなたが求めていたものではありませんが、あなたのニーズに応じて機能します

よろしく

于 2016-10-14T17:01:30.383 に答える
0

すぐに使える 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 でない場合)。

お役に立てば幸いです。

于 2016-10-14T14:43:22.497 に答える