Dockerのデータ管理方法
volumes
ホスト上では直接操作しない領域をマウントさせたい場合に使用
Linuxであれば /var/lib/docker/volumes に作成される
volumeの作成
dockerコンテナ内で
$ docker volume create [volume名]
volumeの一覧
$ docker volume ls
volumeの詳細確認
$ docker volume inspect [volume名]
volumeの削除
$ docker volume rm [volume名]
volumeのマウント -vを使う場合
$ docker run -itd --name [コンテナ名] -v [volume名]:[コンテナ上にマウントするパス] [利用したいイメージ]:[利用したいバージョン]
volumeを複数のコンテナで共有する場合は
$ docker run -itd --name [コンテナ名] -v [volume名]:[コンテナ上にマウントするパス]:ro [利用したいイメージ]:[利用したいバージョン]
のように編集権限を設定できる
volumeのマウント --mountを使う場合(推奨)
$ docker run -itd --name [コンテナ名] --mount source=[volume名],target=[コンテナ上にマウントするパス] [利用したいイメージ]:[利用したいバージョン]
volumeを複数のコンテナで共有する場合は
$ docker run -itd --name [コンテナ名] --mount source=[volume名], destination=[コンテナ上にマウントするパス],readonly [利用したいイメージ]:[利用したいバージョン]
のように編集権限を設定できる
bind mount
ボリュームとは違い、ユーザーの管理しているファイルやディレクトリ
マウント -vを使用する場合
$ docker run -itd --name [コンテナ名] -v [ホスト上のパス]:[コンテナ上にマウントするパス] [利用したいイメージ]:[利用したいバージョン]
-vを使用した場合、ホスト上のパスが存在しない場合は新しくディレクトリが作成されます
マウント --mountを使用する場合
docker run -itd --name [コンテナ名] --mount type=bind,source=[ホスト上のパス],target=[コンテナ上にマウントするパス] [利用したいイメージ]:[利用したいバージョン]
--mountの場合はホスト上にパスが存在しない場合エラーで怒られます
tmpfs
メモリ領域をディレクトリとしてマウント
コンテナ停止するとホストでも消えてしまうので、永続的なデータではなく
一時的に保持するような消えても問題ないデータのみ保存する
マウント
$ docker run -itd --name [コンテナ名] --mount type=tmpfs,destination=[コンテナ上にマウントするパス],tmpfs-size=[メモリサイズ(単位byte)],tmpfs-mode=[権限の設定 700など] [利用したいイメージ]:[利用したいバージョン]