Skip to content
Latchkey

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相当のアクセスを与えるため、隔離の観点ではより悪化します。

関連ガイド