docker container에서 docker를 사용하는 방법을 알아보자
Docker in Docker(DinD)는 컨테이너 내부에서 docker를 사용할 수 있는 기술입니다. 저 같은 경우는 컨테이너 내부에서 knative function 빌드를 위해서 해당 방법이 필요했는데요. 이번 포스팅에서는 DinD가 무엇이고 어떤 장단점이 있는지 한 번 알아보도록 하겠습니다.
DinD에 대해 알아보자
먼저 Docker는 어떤 방식으로 작동할까요? 보통 Docker를 이용하기 위해 CLI를 이용하는데요. 우리가 Docker CLI 명령어를 입력한다면 해당 명령이 Socket을 통해 Docker Daemon에게로 전달됩니다. CLI 명령어는 /var/run/docker.sock이라는 파일 인터페이스를 통해서 도커 데몬에게 명령이 전달되는데, 이 얘기는 /var/run/docker.sock에만 접근할 수 있다면 docker 명령을 내릴 수 있다는 이야기입니다.
만약 컨테이너 내의 /var/run/docker.sock가 호스트의 /var/run/docker.sock를 공유한다면 똑같이 호스트에 설치된 Docker에게 명령을 내릴 수 있습니다.
사용방법
사용방법은 아주 간단합니다. 호스트의 소켓 인터페이스와 컨테이너의 소켓 인터페이스를 볼륨 마운트해주기만 하면 됩니다. 저 같은 경우는 docker-compose를 이용하여 컨테이너를 띄웠었는데 아래와 같이 설정해주면 컨테이너 내에서도 호스트의 Docker를 이용할 수 있습니다.
version: "1"
services:
test:
build: .
ports:
- "8080:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
...
참고자료
https://medium.com/dtevangelist/docker-in-docker-fb54252e3188
반응형
'Docker & Kubernetes' 카테고리의 다른 글
가볍게 읽는 도커 안내서 (0) | 2024.04.17 |
---|---|
Kubernetes context의 역할 알아보기 (0) | 2023.08.27 |
쿠버네티스를 구축할 때 swap 메모리를 꺼놓아야 하는 이유 - swap 메모리란/꺼놓아야 하는 이유 (3) | 2022.04.03 |
JSON과 비교를 통한 YAML 알아보기 (0) | 2022.03.31 |
kubeadm란? 쿠버네티스에서의 클러스터/역할 (2) | 2022.03.28 |