도커를 사용하다보면 모종의 목적으로 도커 컨테이너 안에서 도커를 사용할 일이 생길 수 있다. 이것을 Docker in Docker (DinD)라고 부르는데, 이를 위한 방법은 크게 2가지로 나뉜다.
- 호스트의 도커 데몬을 사용(마운트)하여 도커 컨테이너 내부에서 호스트의 도커 데몬을 사용하는 방법
- 도커 컨테이너 내부에서 '실제' 도커를 사용하는 방법
이 방법은 도커 컨테이너 내부에서 도커를 사용할 때, 도커 컨테이너 내부의 도커가 아닌, 호스트의 도커 데몬을 사용해서 도커를 사용하는 방법이다.
도커 데몬에게 명령을 내릴 수 있는 인터페이스인 'docker.sock' 파일을 마운트해서 실행하면 된다. 이렇게 설정해주면 도커 컨테이너 내부의 도커 데몬 명령어를 실행할 때 호스트의 docker.sock을 같이 사용하도록 한다.
-v /var/run/docker.sock:/var/run/docker.sock
도커 컨테이너 내부에서 실제 도커를 사용하는 방법도 존재한다. 다음과 같이 수행하면 된다.
docker run --privileged -d docker:dind