この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のADD
or COPY
命令を使用できます。これらは、開発以外のデプロイメントに通常使用するものです。
COPY
することをお勧めしADD
ます。それらはほとんど同じですADD
が、驚くべきことに、URLとアーカイブファイルに対していくつかの追加機能があります。