Docker環境におけるIT基盤構築や開発業務の時間短縮
Docker環境におけるOS更新作業やパッチ適用作業では、どのような問題が考えられるのでしょうか? Docker環境においても、Dockerコンテナに含まれる基本コマンドの実行ファイル、ライブラリの更新作業、パッチ適用作業が必要になります。これらの煩雑な作業にかかる時間を短縮するためには、Dockerfileを使ったDockerイメージのビルド処理に着目する必要があります。
前回の記事では、OSの雛形イメージ(CentOS 6.8という無償で入手可能なLinux OSのテンプレートとなるDockerイメージ)とアプリ環境を固めたもの、すなわち、アプリ入りのDockerイメージを作る(この作業をビルドといいます)際にDockerfileの1行目から順番に読み込まれて処理されることをご紹介しました。Dockerfileにおいては、OS環境の雛形のDockerイメージの入手だけでなく、OSの更新作業の内容によって、非常に時間のかかる処理が含まれる場合もあります。
例えば、入手したOSの雛形イメージに対して、最新のパッケージを全て適用するような処理が入る場合です。このような「非常に時間のかかる処理」がDockerfile内に記述されている場合、独自のアプリケーションの追加や、開発したウェブコンテンツなどの埋め込み作業は、パッケージの更新処理が全て完了してから行わなければなりません。
また、開発者側からすると、Dockerfileに一切変更がない場合でも、自分のコーディング作業やウェブコンテンツの改良といった開発の作業を行うたびに、Dockerfileの先頭行からOSの雛形イメージの入手や、パッケージの更新処理を行っていると、ビルド処理だけでも膨大な時間がかかってしまい、開発効率が大幅に低下するおそれがあります。
IT基盤構築や、開発作業の効率化をもたらすキャッシュ
このような開発業務における時間のロスを短縮する方法として、Dockerfileには、IT基盤構築の自動化、開発業務の効率化を行う仕組みが提供されています。具体的には、Dockerfileを使ったビルド処理の際、過去に行った処理内容を手元のマシンのDocker環境内に保存し、Dockerfileに変更がない行は、過去に保存しておいた処理内容を読み込むことでビルド処理の時間を大幅に短縮することができます。
これは、一般にDockerfileにおける「キャッシュ機能」とよばれます。Dockerコンテナ内のOSテンプレートが提供する各種コマンドやツール類のバージョンを固定しておき、開発者の成果物(ウェブコンテンツなど)のみを頻繁に更新するような開発環境などにおいて、そのウェブコンテンツや開発中のソフトウェアのビルド時間の大幅な短縮を実現します。

Dockerfileにおけるキャッシュ機能を使ったIT基盤構築や開発業務の時間短縮