DinD

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXLxyZ%2FbtroVr1OTaR%2F27VHLse6YwjcoEZ4vFqqj1%2Fimg.png

도커 컨테이너 내부에서 도커를 실행하는 방식이다.

DooD

docker.sock은 클라이언트 데몬 간의 통신을 위한 엔드포인트를 말한다.

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkG4Ee%2Fbtro6axPOc6%2FuO8iaewJXKDifLnx0y1Oxk%2Fimg.png

호스트 Docker 계층에서 실행하는 방식으로 docker.sock을 통해 데이터가 호스트 Docker로 전달된어 형제(sibling) 컨테이너로 구성되어진다.

docker run -it -p 8080:8080 --name <container_name> \\
  -v /var/run/docker.sock:/var/run/docker.sock \\
  -v <your worksspace> : /var/jenkins_home \\
  <image_name>:tag

여기서 핵심은 docker.sock Volume을 공유하는 것으로 컨테이너 내부에서도 저장된 Host 환경을 공유 할 수 있다는 점이다.

기본적으로 /var/run/docker.sock 파일을 통해 접근되는 IPC 소켓이지만, 도커는 네크워크 주소와 systemd 방식의 소켓으로 사용되는 TCP 소켓도 지원한다.

DinD vs DooD