HotFoxy
불여우의 전직 이야기
게임 서버 개발자가 되어 보죠!
전체 방문자
오늘
어제
  • 분류 전체보기 (135)
    • 연구한 이야기 (26)
      • 깊게 공부해보기 (7)
      • 문제 해결 이야기 (12)
      • 맡은 업무 이야기 (6)
    • 전직 이야기 (0)
      • 1년이라는 시간 (5)
      • 프로카데미 이야기 (5)
    • 공부한 이야기 (87)
      • 알고리즘 (7)
      • 리눅스 (11)
      • 클라우드 (24)
      • 윈도우 OS (17)
      • 윈도우 소켓 프로그래밍 (11)
      • 네트워크 (16)
      • Docker & K8S (0)
      • 기타 (1)
    • 자격증 이야기 (12)
  • MSB : Mad Square's Brawl
  • GITHUB

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
HotFoxy

불여우의 전직 이야기

연구한 이야기/문제 해결 이야기

jenkins(image) 에서 docker buildx를 사용하고 싶어요!

2023. 12. 22. 17:40

jenkins와 docker

jenkins 에서 도커 이미지를 빌드하는 것은 흔한 일이다.
하지만, jenkins 서버를 만약 docker container로 띄웠다면 조금 복잡해진다.

이 때, jenkins에서 도커를 사용하는 방식에 따라 dood, did 로 나뉘게 된다.

  • docker out of docker
    • 젠킨스의 docker가 아닌, 호스트의 docker를 젠킨스에서 사용할 수 있도록 한다.
  • docker in docker
    • 젠킨스의 docker image 내부에 docker를 추가로 설치한다.

둘 중 어떤 것을 쓸 지 고민해보고 찾아보다가, dood로 결정했다.
아무래도 호스트의 docker를 바로 쓰는 것이 did보다 더 쾌적할 것으로 보인다.
또한, 대부분이 dood를 권장한다. 정확히는, did를 권장하지 않는다 한다.


docker buildx와 dood

단, docker buildx 를 이용해서 dood 빌드하려는 경우 조금 일이 복잡해진다.

  • 젠킨스 docker 에 volume으로 dood를 위해 다음 폴더를 마운트한다.
    • /var/run/docker.sock:/var/run/docker.sock
    • /usr/bin/docker:/usr/bin/docker
  • 하지만, docker buildx를 사용하려면 추가적으로 다음 폴더를 마운트한다.
    • /usr/libexec/docker/:/usr/libexec/docker/

번외

이 때 docker buildx 명령어를 실행하려고 하면 빌드 인스턴스가 없다고 한다.

  • 따라서 jenkins 빌드 시 빌드 인스턴스를 체크하고 생성해준다.
# Set a variable for the builder instance name
BUILDER_NAME=jenkins-buildx-builder
# Check if the builder already exists
BUILDER_EXISTS=$(docker buildx ls | grep $BUILDER_NAME || true)
# If the builder does not exist, create it and use it
if [[ -z "$BUILDER_EXISTS" ]]; then
    docker buildx create --name $BUILDER_NAME --use
else
    docker buildx use $BUILDER_NAME
fi
  • 이후 기존 쓰던 docker buildx 명령어처럼 사용하면, 완료.
docker buildx build --push \\
    --platform $ARCHS \\
    -t $TAGS \\
    --build-arg SOURCE_BRANCH=$SOURCE_BRANCH \\
    --build-arg SOURCE_REVISION=$SOURCE_REVISION \\
    --build-arg RES_PROJECT=$RES_PROJECT \\
    --build-arg RES_REVISION=$RES_REVISION \\
    -f Dockerfile .

 

저작자표시 (새창열림)

'연구한 이야기 > 문제 해결 이야기' 카테고리의 다른 글

Android Studio NDK breakpoint가 잡히지 않아요!  (0) 2024.03.02
dockerfile은 죄가 없다.  (4) 2024.02.24
CMake 와 static library에서의 종속성 관리  (0) 2023.12.16
서버 스트레스테스트 시 일정 주기로 멈춰요!  (0) 2023.12.09
docker exec format error  (0) 2023.12.09
    '연구한 이야기/문제 해결 이야기' 카테고리의 다른 글
    • Android Studio NDK breakpoint가 잡히지 않아요!
    • dockerfile은 죄가 없다.
    • CMake 와 static library에서의 종속성 관리
    • 서버 스트레스테스트 시 일정 주기로 멈춰요!
    HotFoxy
    HotFoxy
    1년 동안의 고군분투 전직 이야기! ..가 완료되어, 게임개발자로 살아남는 이야기!

    티스토리툴바