Docker-in-Docker (DinD) - CI/CD用語集の定義
Docker-in-Dockerは、CIのcontainer内にネストしたDocker daemonを動かし、job自身がイメージをbuildできるようにします。動作はしますが、通常はprivilegedモードが必要で、実際の注意点があります。
Docker-in-Docker (DinD)はcontainer内でDocker daemonを動かし、container化されたCIのjobが自分自身のcontainerをbuildまたは実行できるようにします。通常はprivilegedモードが必要で、これは隔離を弱めます。
DinDはKubernetesベースのCIで一般的ですが、BuildKitやKanikoのようなdaemonlessなbuilderに徐々に置き換えられています。
トレードオフ
DinDはprivilegedなcontainerを必要とし、デフォルトではhostのlayer cacheを共有せず、遅くなることがあります。hostのDockerソケットをマウントする方が速いものの、jobにhostへのroot相当のアクセスを与えるため、隔離の観点ではより悪化します。
関連ガイド
Rootless BuildKit - CI/CD Glossary DefinitionRootless BuildKit: Rootless BuildKit is a mode of the BuildKit builder that constructs container images witho…
Layer Cache - CI/CD Glossary DefinitionLayer Cache: A layer cache stores the result of each instruction in a container build so that unchanged layer…
Preemptible Runner - CI/CD Glossary DefinitionPreemptible Runner: A preemptible runner runs on cheap, interruptible compute (such as cloud spot or preempti…