Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

낙서장

Docker in Docker 본문

개발/Kubernetes, Docker

Docker in Docker

공티스토리 2021. 5. 10. 18:36

요즈음 사내 인프라를 EKS로 이전하는 작업을 진행하고 있다. 클러스터 세팅을 마치고 이제 서버를 도커 이미지로 만들어 ECR에 올리는 작업을 하고있었는데, 몇 가지 애로사항이 있었다.

 

현재 상황

Teamcity 이용 중.

Teamcity Agent 들은 사내 유휴 서버에서 Docker Container로 구동중.

 

하고 싶은 것.

서버 이미지 빌드 및 ECR Push

 

테스트로 Docker 빌드를 하려고 하니, 어째선지 아래와 같은 에러와 함께 빌드가 되지 않았다.

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

말 그대로 Agent에 도커 대몬이 실행중이지 않다는 말인데, 그렇다면 어떻게 해야할까?

 

당연히 나와 같은 고민을 하는 선지자들이 많았고, Docker in Docker라는 키워드로 검색해 보니 이를 피할 수 있는 방법에 대해 나와있었다.

 

1. 도커 이미지 실행 시 /var/run/docker.sock 파일을 함께 마운트 한다.

docker run -d -it -v /var/run/docker.sock:/var/run/docker.sock ...

2. /var/run/docker.sock 파일의 유저그룹에 buildagent 유저도 추가한다.

# root 유저로 docker에 접근해야 함.
root@7380f2c65e9d:/# ls -al /var/run/docker.sock
srw-rw----. 1 root root 0 Mar 16 05:58 /var/run/docker.sock
root@7380f2c65e9d:/# usermod -a -G root buildagent

3. teamcity agent를 재실행한다.

docker restart #container_name

이후 buildagent로 docker container에 접속 후 docker 관련 커맨드들이 잘 동작하는 지 확인한 후, 하고자 하는 작업을 할 수 있다.