docker save でイメージ生成時に一時ファイルが作られる場所の変更

スポンサーリンク
スポンサーリンク

docker でイメージを保存する際に、下記のように -o でtar形式のファイルの出力先を指定していても、tarファイル作成時の一時ファイルは特定の場所で作られます。
CentOSでは /var/lib/docker/tmp 下に一時ファイルが作成され、その後、指定の箇所に tar が作成されます。

docker save test_image -o /mnt/remote/test-image.tar

Docker コマンドラインを使う — Docker-docs-ja 1.11.0 ドキュメント では、一時ファイルの場所指定として環境変数 DOCKER_TMPDIR があるとのことですが、これを指定しても /var/lib/docker/tmp から変わりはありませんでした。
docker save 時には影響しないのでしょうか?

代わりの対処です。
/var/lib/docker/tmp/ をシンボリックリンクにして、別の箇所を指すようにします。
下記例では、/mnt/remote/tmp にしています。

rm -r /var/lib/docker/tmp/
ln -s /mnt/remote/tmp /var/lib/docker/tmp

この状態で、docker save を実行すると、一時ファイルは指定の箇所で生成されます。
(docker save完了後は、作成された一時ファイル/ディレクトリは消えます)

docker save が完了したら、リンクを消して /var/lib/docker/tmp を元に戻します。

rm /var/lib/docker/tmp
mkdir /var/lib/docker/tmp/
chmod 700 /var/lib/docker/tmp/

コメント

タイトルとURLをコピーしました