인프런 커뮤니티 질문&답변

kingbj0429님의 프로필 이미지
kingbj0429

작성한 질문수

[2024] [DevOps] 빠르고 안전한 어플리케이션 배포 파이프라인(CI/CD) 만들기

DooD, DinD 또는 Kaniko 외 다른 방법은 없는걸까요?

해결된 질문

작성

·

263

2

안녕하세요 지식 공유자님 :)

 

또 이렇게 질문을 남깁니다 ㅜㅜ (질문이 많아 죄송합니다...)

 

이미지를 빌드할 때 DooD, DinD 을 섞어서 사용하거나 Kaniko 를 사용한다고 하셨는데,

DooD + DinD 는 privileged 문제, Kaniko 는 빌드 속도 문제를 보완한 프로젝트 같은 것이 아예 없는 것인지 궁금합니다.

 

DooD + DinD 를 사용해도 privileged 문제가 완전히 해결되지 않을텐데, 이를 감안하고 사용하나요?

답변 1

1

천강민님의 프로필 이미지
천강민
지식공유자

안녕하세요.

일단 조금 분리해서 생각할 필요가 있을 것 같습니다. 간단히 설명부터 드리면,

  1. DooD

    1. DooD는 --privileged가 아닌 도커 소켓을 공유해서 특정 요청(강의에서는 파이프라인을 동작시킬 추가 컨테이너를 띄우는 것)을 처리해주는 형태입니다.

  2. DinD

    1. DinD는 --privileged를 부여해서 DooD를 통해 생성된 컨테이너 이미지 내에서 도커 데몬을 활용하기 위한 형태입니다.

  3. Kaniko

    1. DinD 형태를 활용함으로써 부여되는 --privileged를 제거하기 위해 도커 데몬을 활용하지 않고, 로컬에 직접 다운로드한 후에 스냅샷을 만들어 이미지를 만드는 도구입니다.

결국, DinD + DooD를 섞는다는 의미는 파이프라인에서 사용할 컨테이너 이미지를 띄워주는 서비스(DooD)와 그 서비스를 통해 .gitlab-ci.yml에 정의된 이미지를 띄워서 컨테이너 이미지를 빌드하기 위한 이미지를 띄우는 거다 라고 봐주시면 좋을 것 같습니다.(이때 형태가 DinD) (쓰면서도 조금 헷갈리실 수 있을 것 같네요.)

 

어찌됐던, 말씀하신 내용을 모두 커버할 수 있는 방법이 없는건 아닙니다.

rootless docker daemon을 사용하는건데요. 이게 방법도 복잡(?)하고 여러 제한도 있어서 사용을 추천드리기가 조금 그렇습니다.

대신 추천드리는 도구는 builtkit 인데요. buildkitd를 rootless로 띄워서 사용하면 되긴 하지만 당연하게도 은탄환은 없기 때문에 추가로 희생되는 것들이 있긴 합니다.(도입하시기 전에 여러방면으로 꼭 테스트 많이 해보시길 권해드립니다.)

 

참고 부탁드립니다.

감사합니다.

kingbj0429님의 프로필 이미지
kingbj0429
질문자

강의 뿐만 아니라 질문에 대한 답변도 여러 방면으로 정말 큰 도움이 되었습니다 ㅜㅜ

감사합니다 ㅜㅜㅜ

 

kingbj0429님의 프로필 이미지
kingbj0429

작성한 질문수

질문하기