このVOLUME命令により、実行時にDockerコンテナーにデータボリュームが作成されます。の引数として提供されるVOLUMEディレクトリは、ユニオンファイルシステムをバイパスするディレクトリであり、主に永続データと共有データに使用されます。
を実行docker inspect <your-container>すると、Mountsセクションの下Sourceに、ホスト上のディレクトリの場所Destinationを表すと、コンテナ内のマウントされたディレクトリの場所を表すが表示されます。例えば、
"Mounts": [
{
"Name": "fac362...80535",
"Source": "/var/lib/docker/volumes/fac362...80535/_data",
"Destination": "/webapp",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
以下が3つの使用例ですdocker run -v。
docker run -v /data:これはVOLUME、Dockerfileで命令を指定することに似ています。
docker run -v $host_path:$container_path:これにより、実行時に$host_pathホストから$container_pathコンテナーにマウントできます。開発中、これはホスト上のソースコードをコンテナと共有するのに役立ちます。本番環境では、これを使用して、ホストのDNS情報(にある/etc/resolv.conf)やシークレットなどをコンテナーにマウントできます。逆に、この手法を使用して、コンテナーのログをホスト上の特定のフォルダーに書き込むこともできます。両方$host_pathと$container_path絶対パスでなければなりません。
docker run -v my_volume:$container_path:これにより、コンテナにデータボリュームが作成され$container_path、名前が付けられmy_volumeます。これは、を使用してボリュームを作成して名前を付けるのと基本的に同じdocker volume create my_volumeです。このようなボリュームの名前は、Flockerなどのマルチホストストレージドライバーを使用するコンテナーデータボリュームと共有ストレージボリュームに役立ちます。
ホストフォルダーをデータボリュームとしてマウントする方法は、Dockerfileでは使用できないことに注意してください。ドッカーのドキュメントを引用するには、
注:移植性と共有目的のため、Dockerfileからは使用できません。ホストディレクトリはその性質上、ホストに依存しているため、Dockerfileで指定されたホストディレクトリは、すべてのホストで機能するとは限りません。
ここで、開発以外の環境でファイルをコンテナーにコピーする場合は、DockerfileのADDor COPY命令を使用できます。これらは、開発以外のデプロイメントに通常使用するものです。
COPYすることをお勧めしADDます。それらはほとんど同じですADDが、驚くべきことに、URLとアーカイブファイルに対していくつかの追加機能があります。