젠킨스는 CI/CD 환경을 구축하기 위한 도구이다.
CI/CD(Continuous integration, CI, continuous delivery, CD)
빌드, 베포를 자동으로 해주고 문제가 있을 시 바로 피드백을 준다.
나는 도커로 젠킨스를 띄우고 젠킨스를 이용해서 도커를 조작할 것이다.
DIND(도커 인 도커)
도커 컨테이너 안에 또 다른 도커를 설치해서 운용하는 구조
젠킨스가 도커 관련 명령을 실행할 수 있으려면 도커 호스트에 해당 명령을 전달할 수 있어야 한다.
호스트 OS에 젠킨스가 자체적으로 설치되어있다면 젠킨스가 도커랑 서로 정보를 주고 받는데, 무리가 없겠지만
도커로 젠킨스 컨테이너를 만들고, 이 컨테이너 안에는 또 다른 환경이고, 이 환경 안에는 도커가 없기 때문에
컨테이너로 올린 젠킨스와 컨테이너 밖에 있는 도커와는 연결할 수 없는 것이다.
이를 위해 도커인 도커
즉 도커 안에 또 다른 도커를 설치하는 방식이 생겨났는데, 이 구조는 보안, 파일 시스템, 메모리 공간 효율 등으로 인해
도커 측에서 권장하지 않는다.
그래서
DOOD(도커 아웃 오브 도커)
방식을 사용한다.
도커는 명령을 받는 docker-cli와 docker-api가 있다.
젤 안쪽의 서버가 있고, docker.sock 이 listening을 하고 있다.
docker.sock 도커 소켓인거 같다(잘모름)
무튼 도커소켓이 다 듣고 있다.
도커 소켓에 "컨테이너 만들어" 라고 명령하면 도커 호스트가 도커 소켓을 통해 듣고 , 컨테이너를 만든느 것이다.
volumes:
- /var/run/docker.sock:/var/run/docker.sock
도커 컴포즈에 이런 걸 많이 봐왔다.
이렇게 하면 도커 호스트와 이어지는 통로를 만드는 것이다.
근데 이렇게만 하면 통로만 만들어놨을 뿐 아무 명령도 내리지 않은 것이다.
명령은 결국 docker-cli를 통해서 내려야한다.
그렇기에 젠킨스에 docker-cli를 설치하고 이것을 통해 도커에 명령을 전달해야 한다.
이는 도커인 도커 방식과 다르게, cli만 설치해서 명령을 내린다고 보면 된다.
'MSA(마이크로 서비스 아키텍처)' 카테고리의 다른 글
젠킨스 시작 비밀번호 (0) | 2023.08.04 |
---|---|
swap 메모리 (0) | 2023.08.04 |
docker: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by docker) (0) | 2023.08.03 |
Docker (0) | 2023.08.03 |
데이터 동기화 처리(kafka) (1) | 2023.08.01 |