본문 바로가기

리눅스

Jenkins 컨테이너에서 Docker를 실행하기 위해 Docker 이미지를 만들기(Jenkins in Docker)

반응형

Jenkins 컨테이너에서 Docker를 실행하기 위해 Docker 이미지를 만들기(Jenkins in Docker)

  • 도커 버전 확인
    • 현재 설치된 도커 버전을 확인합니다. BuildKit은 Docker 18.09 버전 이상에서 지원됩니다.
docker version
$ docker version
Client:
 Cloud integration: v1.0.35+desktop.5
 Version:           24.0.6
 API version:       1.43
 Go version:        go1.20.7
 Git commit:        ed223bc
 Built:             Mon Sep  4 12:28:49 2023
 OS/Arch:           darwin/arm64
 Context:           desktop-linux

Server: Docker Desktop 4.25.2 (129061)
 Engine:
  Version:          24.0.6
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.7
  Git commit:       1a79695
  Built:            Mon Sep  4 12:31:36 2023
  OS/Arch:          linux/arm64
  Experimental:     true
 containerd:
  Version:          1.6.22
  GitCommit:        8165feabfdfe38c65b599c4993d227328c231fca
 runc:
  Version:          1.1.8
  GitCommit:        v1.1.8-0-g82f18fe
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
  • BuildKit 활성화 확인
    • 현재 시스템에서 BuildKit이 활성화되어 있는지 확인합니다.
docker buildx version
$ docker buildx version
github.com/docker/buildx v0.11.2-desktop.5 f20ec1393426619870066baba9618cf999063886
  • DOCKER_BUILDKIT 환경 변수 확인
    • 환경 변수가 설정되어 있는지 확인합니다.
    • BuildKit을 사용하려면 $DOCKER_BUILDKIT 환경 변수는 1로 설정되어야 합니다.
echo $DOCKER_BUILDKIT
  • BuildKit을 사용하여 빌드
    • BuildKit을 사용하여 빌드합니다.
DOCKER_BUILDKIT=1 docker build -t your_image_name:tag .
728x90
  • Dockerfile 생성
    • Dockerfile을 생성합니다. 이 파일에는 Jenkins를 실행하기 위한 설정이 포함됩니다.
vim Dockerfile
### Docker-in-Docker
FROM jenkins/jenkins:lts

USER root

RUN apt-get update -qq \
    && apt-get install -qqy apt-transport-https ca-certificates curl gnupg2 software-properties-common \
    && curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg \
    && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null \
    && apt-get update -qq \
    && apt-get -y install docker-ce \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

RUN usermod -aG docker jenkins
  • Docker CLI 플러그인 설치
docker buildx create --use
  • Buildx로 다중 플랫폼 이미지 빌드 후 도커 허브에 이미지 업로드 (PUSH)
docker buildx build --platform linux/amd64,linux/arm64 -t anti1346/jenkinsindocker:latest --no-cache --push .
  • 도커 허브에서 이미지 다운로드 (PULL)
docker pull anti1346/jenkinsindocker:latest
  • 다중 플랫폼 이미지 정보 확인
docker inspect anti1346/jenkinsindocker:latest --format='{{.Architecture}}'
$ docker inspect anti1346/jenkinsindocker:latest --format='{{.Architecture}}'
arm64
$ docker inspect anti1346/jenkinsindocker:latest --format='{{.Architecture}}'
amd64
  • Docker 이미지 실행
    • 빌드한 Docker 이미지를 사용하여 Jenkins 컨테이너를 실행합니다.
docker run -p 8080:8080 -p 50000:50000 --name jenkins -d anti1346/jenkinsindocker:latest

 

위 명령어는 호스트의 8080 포트와 50000 포트를 Jenkins 컨테이너에 매핑하며 jenkins는 컨테이너의 이름입니다. 필요에 따라 포트나 컨테이너 이름을 변경할 수 있습니다.

 

728x90
반응형