티스토리 뷰

Docker 🐋

Docker - DinD DooD

절취선 2022. 6. 15. 20:42
반응형

DinD DooD

Jenkins CI 를 구성하는 중 Docker-compose를 실행하기 위해서는 Jenkins container 내부에 Docker를 다시한번 설치해야 한다는 것을 알았다.

도커가 컨테이너를 구성하기 위해서는 크게 2가지가 있음을 알았고 이를 정리한다.

DinD

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

  • 저체적인 캐시를 사용하게 되기 때문에 처음에는 빌드가 느리고 자신의 이미지 전체를 다시 끌어와야한다.
  • 컨테이너가 특별한 권한을 가진 모드(--privilige)에서 실행되어야 하기 때문에 DooD 방법보다 안전하지 않다.
  • DinD는 /var/lib/docker 디렉토리를 위해 볼륨을 사용하는데 컨테이너를 제거할 경우 같이 제거하지 않으면 빠르게 사용 가능한 디스크 공간이 줄어들 수 있다.

Jenkins + DInD - Docker Hub

DooD

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

호스트 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
  • 호스트 OS와 이미지 공유 가능
  • 이미지를 여러 번 저장하지 않아도 됩니다.
  • Jenkins가 로컬 이미지 생성을 자동화할 수 있도록 합니다.
  • 감독자의 필요성 제거(여러 프로세스를 의미함)
  • 가상화 계층(lxc) 제거
  • 런타임에 더 큰 유연성을 허용합니다.
  • 젠킨스(sudo) 사용자가 접두사 docker없이 실행되도록 허용한다.

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

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

Jenkins + DooD - Docker Hub

DinD vs DooD

그림에서 알 수 있듯이 사용자가 Container를 어디로 올리는 지에 따라 방향성이 다르다.

JenkinsExecute Shell로 Docker를 실행한다면 Jenkins Container 내부에 실행되고 있는 것이다.

DinD를 사용하는 주된 장점은 애플리케이션 실행을 위한 격리된 환경을 제공한다는 점 이지만 단점으로 보안성디스크 용량의 문제를 가지고 있어
사용자가 신경써야할 부분이 많다.

DinD 사용지 발생하는 Error Log

  1. Docker 실행 및 연결 문제
    cannot connect to the docker daemon at unix:///var/run/docker.sock. is the docker daemon running?
    해결 -> sudo /etc/init.d/docker start
system has not been booted with systemd as init system (pid 1). can't operate.
  해결 -> sudo /etc/init.d/docker start
  1. jenkins - Docker 권한 문제
#  cd /etc/sudoers

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
# 추가
jenkins ALL=(ALL)       NOPASSWD: ALL

Reference

반응형

'Docker 🐋' 카테고리의 다른 글

쿠버네티스?  (0) 2022.06.17
컴포넌트에서의 build 와 image의 차이  (0) 2022.06.16
Docker - Volume and Mount  (0) 2022.06.14
도커머신을 사용해 보자  (0) 2022.06.13
Docker  (0) 2022.06.12
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
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
글 보관함