Search

Docker in Docker / Docker out of Docker

Tags
docker
orchestration
dind
dood
Created
2024/09/06 08:33
Created time
2024/09/05 23:33
category
docker

개요

kind (Kubernetes in Docker)를 이용하기 앞 서, dind (Docker in Docker)와 dood (Docker out of Docker)라는 키워드를 들었고 이에 대해 리서치
둘다 외부 Docker와 내부 Docker가 있는 것은 동일하고, Container 내부에 Container가 있는 식이라서 서비스 단위를 묶는 클러스터 구성 (오케스트레이션)을 원하겠거니 했지만 차이와 가치 및 장단점이 궁금하여 탐색

Docker in Docker

# Docker가 공식적으로 지원하는 dind 버전 docker 이미지 docker run --privileged --name dind -d docker:dind
Shell
복사
호스트에 Docker Daemon이 있고 이를 이용하여 컨테이너를 구성했을 때, 컨테이너 내부에도 Docker Daemon이 존재하여 컨테이너 안의 컨테이너를 구성 가능한 방식이 Docker in Docker 방식
단점으로는 —-privileged 옵션을 이용하기 때문에 호스트 권한을 그대로 갖고 있고, 보안 측면에서 잠재적 위험이 있음

Docker out of Docker

docker run -v /var/run/docker.sock:/var/run/docker.sock ...
Shell
복사
Docker out of Docker는 호스트의 Docker Daemon을 볼륨 마운트로 공유 받아 컨테이너 안의 컨테이너를 구성할 수 있는 방식
—-privileged 권한은 없지만 호스트와 공유된 볼륨 덕분에 이를 이용한 공격이 가능한 여지가 존재

가치

두 방식은 보안적인 문제가 있다는 공통점이 있지만, 그럼에도 컨테이너가 컨테이너를 컨트롤 하는 방식이기 때문에 개발 및 운영에서의 장점이 존재
클라우드 서비스처럼 동적 프로비저닝을 구성
쿠버네티스와 같은 오케스트레이션 구성
가상화된 환경을 구분 지어 환경으 구축하고 싶다 → DinD
가상화된 환경을 통합하여 관리하고 싶다 → DooD

Reference