tmpfs マウントの使用¶
ボリューム と バインド マウント はホストマシンとコンテナ間でファイルを共有できるようにするため、コンテナを停止した後もデータを保持できます。
Linux 上で Docker を動かしている場合は、3つめのオプション tmpfs
マウントがあります。 tmpfs
マウントを使ってコンテナを起動すると、コンテナの書き込み可能なレイヤーの外で、コンテナはファイルを作成できます。
ボリュームやバインドマウントとは違い、 tmpfs
マウントは一時的なもので、ホストメモリ上にのみ保持します。コンテナを停止すると、 tmpfs
マウントは削除され、また、書き込まれたデータは保持されません。
ホスト上やコンテナの書き込み可能なレイヤーのどちらにも保持したくない、機微ファイルの一時的な保存に便利です。
tmpfs マウントの制限¶
ボリュームやバインド マウントとは異なり、コンテナ間で
tmpfs
マウントを共有できません。この機能は、 Linux 上で Docker を実行している場合のみ利用できます。
--tmpfs か --mount フラグの選択¶
一般的に、 --mount
は明示的で冗長です。最も大きな違いは、 --tmpfs
は設定用オプションのフラグをサポートしていません。
--tmpfs
:tmpfs
マウントのマウントは、設定用オプションの指定ができません。また、スタンドアロン コンテナにのみ利用できます。
--mounts
:複数のキーバリューのペアで構成され、各<key>=<value>
の組み合わせは、カンマで区切ります。--mount
構文は--tmpfs
よりも冗長です。マウント
type
(型)はbind
、volume
、tmpfs
です。このトピックではtmpfs
を扱うため、マウント型は常にtmpfs
です。destination
の値は、tmpfs
がコンテナ内のどこにマウントするかのパスを指定します。指定はdestination
、dst
、target
のいずれかです。tmpfs-size
とtmpfs-mode
オプションがあります。 tmpfs オプション をご覧ください。
以下の例では --mount
と --tmpfs
構文の両方が出てきますが、利用可能な場合は --mount
が始めに出ます。
--tmpfs
と --mount
との挙動の違い¶
--tmpfs
フラグには、設定可能なオプションはありません。--tmpfs
フラグは swarm サービスに使えません。 その場合は--mount
を使います。
tmpfs マウントをコンテナで使用¶
コンテナで tmpfs
マウントを使うには、 --tmpfs
フラグを使うか、 --mount
フラグで type=tmpfs
と destinaiton
オプションを使います。 tmpfs
マウントには source
がありません。以下の例は Nginx コンテナ内の /app
に tmpfs
マウントを作成します。1つめの例は --mount
フラグを使い、2つめは --tmpfs
フラグを使います。
--mount
$ docker run -d \ -it \ --name tmptest \ --mount type=tmpfs,destination=/app \ nginx:latest
--tmpfs
$ docker run -d \ -it \ --name tmptest \ --tmpfs /app \ nginx:latest
tmpfs
マウントを確認するには、 docker container inspect tmptest
を実行し、 Mounts
セクションをさがします。
"Tmpfs": {
"/app": ""
},
コンテナを削除します。
$ docker container stop tmptest
$ docker container rm tmptest
tmpfs オプションの指定¶
--tmpfs
マウントは2つの設定可能なオプションがあり、どちらも必須ではありません。それぞれのオプションを指定する必要があれば、 --mount
フラグを使う必要があります。 --tmpfs
フラグはオプション指定をサポートしていません。
オプション |
説明 |
---|---|
|
tmpfs マウントの容量をバイトで指定。デフォルトは無制限 |
|
tmpfs のファイルモードを8進数で指定。たとえば、 |
以下の例は tmpfs-mode
を 1770
に設定しますので、コンテナ内では誰でも読み込みできません(world-readable ではありません)。
$ docker run -d \
-it \
--name tmptest \
--mount type=tmpfs,destination=/app,tmpfs-mode=1770 \
nginx:latest