Githubのコミット履歴にもとづくCOPY処理の分割によるDockerイメージBuild時間の短縮
- 著者:
- ラベル: CDSL-TR-167
- 公開日: Dec. 06, 2023
- 更新日: Dec. 06, 2023
- ダウンロード数: 0
Docker Build におけるキャッシュの仕様では,前回のDockerfile と今回のDockerfile で変更点が無いか確認し,変更点がある直前まで前回のBuild 結果をそのまま今回のBuild 結果として使用する.一部ファイルの編集により該当のCOPY を行うレイヤーがキャッシュできなくなった場合,他の編集されていないファイルのキャッシュが使用できなくなることでイメージのBuild 時間が増加する課題がある.この課題を解決するため,Dockerfile の一度に複数ファイルをコピーする記述を,ファイルのコミット回数で4 分割してコピーするように変更する.4 分割することで,放置されたファイルをキャッシュしながら更新頻度が低いファイルのキャッシュを試みると共に,更新頻度が高くキャッシュが破棄されやすいファイルを後からコピーすることができる.評価として,提案を適用する前後のDockerfile でキャッシュを利用したBuild を行い,Build に要した時間の差を比較する.実験はdoge-unblocker というリポジトリを対象に,提案を適用する前後のDockerfile で各5 回Build を行った.適用前は平均Build 時間が約3.7 秒となり,提案を適用すると平均Build 時間は約3.7 秒となった.一部のファイルがキャッシュを利用できるようになったことでコピー自体は早くなったが,引数が多くなりコピー命令の処理が遅くなる結果となった. ...