1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Docker] コンテナの起動を少しでも早くする

Last updated at Posted at 2020-10-06

環境情報

Docker Engine v18.09
メモリを20GB程度積んだRHEL7

コンテナが使うファイルシステム

dockerの関連ファイル群は/var/lib/dockerに入っており、特に指定していなければデフォルトのファイルシステムにて動いています。

# df /var/lib/docker
..
/dev/mapper/rhel-var ... /var

よってローカルにイメージをため込みすぎると以下が逼迫するというのはよく聞く話です。

/var/lib/docker/overlay2/

コンテナの起動は連続すると早くなる

意外と知られていない事実に、コンテナを連続して起動すると二回目は少し早くなります。

これはDockerイメージがディスク上に保管されているのかメモリのキャッシュに残っているのかの差です。それを実感したい方は

time docker run ubuntu echo "hello"

といったようなコンテナを起動してhelloを標準出力するだけのコマンドを連続して叩いてみてください。少し早くなっているはずです。

ちなみに私が遊んでいる環境だと0.8sが0.6sになる程度なので誤差ですが、ここが明確に変化する場合は下記の対応はおススメです。

/var/lib/dockerをRAMディスクにする

RAMディスクの説明や作り方は割愛しますが、dockerを停止→/var/lib/dockerを丸ごと別名でコピー→新たなファイルシステムとして/var/lib/dockerを用意→コピーしたファイル群を展開→dockerを起動 すると常にキャッシュにのっているスピードで起動されます。

ただし、メモリにのっている都合上再起動するたびに消えてしまうので、例えばイメージをローカルに置いている場合はそこの手当ては必要です。あと、やるのであればメモリが潤沢にある環境でやらないと結果的にシステム全体がSwap起こしたりするので注意してください。

まとめ

Docker関連のファイルをすべてメモリに乗せることで、コンテナ環境の動作を早くさせることができます。また、本質としてはイメージがディスクにのっているのかメモリにのっているのかによって変わる起動時間の揺れを防ぐことが可能になります。連続して起動した際に大きな時間差がある場合、この揺れを無くしている設計は起動失敗判定に時間を使うのであれば重要です。

以上。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?