티스토리 뷰
반응형
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
를 어디로 올리는 지에 따라 방향성이 다르다.
Jenkins
의 Execute Shell
로 Docker를 실행한다면 Jenkins Container 내부에 실행되고 있는 것이다.
DinD
를 사용하는 주된 장점은 애플리케이션 실행을 위한 격리된 환경을 제공한다는 점 이지만 단점으로 보안성
과 디스크 용량
의 문제를 가지고 있어
사용자가 신경써야할 부분이 많다.
DinD 사용지 발생하는 Error Log
- 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
- 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
링크
TAG
- kakao
- 스프링부트
- 릿코드
- Solid
- CS
- C언어
- 면접
- Matlab
- JPA
- java
- interview
- OOP
- nginx
- 디자인패턴
- 자격증
- springboot
- 수학
- Spring
- ajax
- spring-cloud
- security
- 스프링
- 프로그래머스
- 그래프
- docker
- 자바
- 알고리즘
- Algorithm
- 백준
- 매트랩
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함