서론
Docker-in-Docker는 이미 존재하는 Docker Daemon에서 새로운 Container를 구동하고, 그 안에서 새로운 Daemon을 구동하는 기법이다.
기존에는 docker:dind
이미지와 --privileged
플래그를 이용하여 새로운 컨테이너를 생성하면 바로 가능한 간단한 문제였으나, Synology DSM 7.0에서는 기본 docker
의 storage-driver
가 aufs
로 설정되어 있고 overlay2
드라이버를 지원하지 않으므로 이러한 기본적인 접근방식은 불가능하였다.
해결 방법
기존에는 아래와 같이 dind
컨테이너를 생성하였다.
docker run \
--name jenkins-docker \
--rm \
--detach \
--privileged \
--network jenkins \
--network-alias docker \
--env DOCKER_TLS_CERTDIR=/certs \
--volume jenkins-docker-certs:/certs/client \
--volume jenkins-data:/var/jenkins_home \
--publish 2376:2376 \
docker:dind \
--storage-driver overlay2
위 명령어는 jenkins
컨테이너를 위한 dind
컨테이너 생성 명령어(링크)다. 이 마지막 부분에 보면 --storage-driver
인자가 있는데, 이 부분만 aufs
로 바꿔주면 바로 문제가 해결된다.
docker run \
--name jenkins-docker \
--rm \
--detach \
--privileged \
--network jenkins \
--network-alias docker \
--env DOCKER_TLS_CERTDIR=/certs \
--volume jenkins-docker-certs:/certs/client \
--volume jenkins-data:/var/jenkins_home \
--publish 2376:2376 \
docker:dind \
--storage-driver aufs