tmpfs マウントの利用
読む時間の目安: 2 分
ボリューム や バインドマウント を利用すれば、ホストマシンとコンテナー間にてファイル共有ができました。 これによりコンテナーが停止した後でも、データを保持できるようになります。
Docker を Linux 上にて稼動させている場合は、さらに 3 つめの方法があります。
それがtmpfs
マウントです。
tmpfs
マウントを用いてコンテナーを生成した場合、コンテナーが書き込むファイルは、コンテナーの外部にある書き込みレイヤーに生成されます。
ボリュームやバインドマウントとは違ってtmpfs
マウントは一時的なものであり、ホストマシンのメモリ上にのみ存在します。
コンテナーが停止されるとtmpfs
マウントは削除されてしまうため、そこに書き込まれたファイルを保持し続けることはできません。
これが有用になるのは、重要な情報を含んだファイルを一時的に保存したい場合です。 こういった情報は、ホスト上およびコンテナーの書き込みレイヤー上のいずれであっても、ずっと残しておくわけにはいかないものです。
tmpfs マウントの制約
- ボリュームやバインドマウントとは違って、
tmpfs
マウントはコンテナー間で共有することはできません。 - この機能は Docker on Linux を稼動させている場合にのみ利用可能です。
--tmpfs フラグ、--mount フラグの使い分け
一般に--mount
の方が、より明示的なものであり多くの記述を必要とします。
はっきりとした違いは--tmpfs
フラグでは設定変更可能なオプションが用意されていないということです。
-
--tmpfs
:tmpfs
マウントを行いますが、設定変更が行えるようなオプション指定はありません。 またこのオプションはスタンドアロンコンテナーに対してしか用いることはできません。 -
--mount
: 複数のキーバリューペアを指定し、個々は<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
とdestination
オプションを指定します。
tmpfs
マウントにsource
オプションは存在しません。
以下の利用例は Nginx コンテナー内の/app
に対してtmpfs
マウントを生成するものです。
1 例めでは--mount
フラグ、2 例めでは--tmpfs
フラグを用いています。
$ docker run -d \
-it \
--name tmptest \
--mount type=tmpfs,destination=/app \
nginx:latest
$ 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-size |
tmpfs マウントサイズをバイト単位で指定します。デフォルトは無制限です。 |
tmpfs-mode |
tmpfs のファイルモードを 8 進数表記で指定します。たとえば700 、0770 などです。デフォルトはすべて書き込み可能な1777 です。 |
以下の例ではtmpfs-mode
に1770
を指定しています。
つまりこのコンテナー内においては、全ユーザーからの読み取りが制限されます。
docker run -d \
-it \
--name tmptest \
--mount type=tmpfs,destination=/app,tmpfs-mode=1770 \
nginx:latest
次のステップ
- ボリューム について
- バインドマウント について
- ストレージドライバー について