Docker Buildx Bake Jenkins Pipeline 사용법 완벽 가이드! Jenkins 기반 Docker Build 자동화하기

서버 운영 환경에서는 CI/CD 자동화를 통해 코드 변경부터 Docker Image 생성, 배포까지 자동으로 처리하는 구조가 중요합니다.

GitHub Actions와 GitLab CI 외에도 기업 서버 환경에서는 여전히 Jenkins를 많이 사용합니다.

기본 수동 배포:

개발자 코드 수정

↓

서버 접속

↓

Docker Build 실행

↓

Image Push

↓

배포

문제:

  • 반복 작업 증가
  • 사람 실수 발생
  • 배포 시간 증가
  • 운영 관리 어려움

Jenkins Pipeline 사용:

Git Push

↓

Jenkins Trigger

↓

Buildx Bake 실행

↓

Docker Image 생성

↓

Registry Push

↓

자동 배포

Docker Buildx Bake와 Jenkins를 연결하면 다음 작업을 자동화할 수 있습니다.

  • Docker Image Build
  • Multi-platform Build
  • Cache 적용
  • Registry Push
  • Secret 관리
  • Production 배포

예:

Jenkinsfile

pipeline {

    agent any

    stages {

        stage('Build') {

            steps {

                sh 'docker buildx bake production --push'

            }

        }

    }

}

결과:

Git 변경

↓

Jenkins 실행

↓

Docker Build

↓

Registry 저장

이번 글에서는 Docker Buildx Bake Jenkins Pipeline 구성부터 Docker Buildx 설정, Registry 연결, Cache 최적화, Multi-platform Build, Production CI/CD 운영 방법까지 알아보겠습니다.

Docker Buildx Bake Jenkins Pipeline이란 무엇인가?

Docker Buildx Bake Jenkins Pipeline은 Jenkins 자동화 환경에서 Docker Buildx Bake를 실행하는 방법입니다.

구조:

Developer

↓

Git Repository

↓

Jenkins Server

↓

Docker Buildx Bake

↓

Container Registry

↓

Production Server

구성 요소:

  • Jenkins
  • Jenkins Pipeline
  • Docker Buildx
  • docker-bake.hcl
  • Docker Registry

Docker Buildx Bake Jenkins Pipeline이 필요한 이유

대규모 서버 환경에서는 반복적인 Build 작업을 자동화해야 합니다.

수동 방식:

코드 변경

↓

관리자 확인

↓

Docker Build

↓

배포

문제:

  • 시간 소요
  • 배포 오류 가능
  • 일관성 부족

자동화 방식:

Code Push

↓

Jenkins 실행

↓

자동 Build

↓

자동 Push

장점:

  • 안정적인 배포
  • 반복 작업 제거
  • 운영 표준화
  • 빠른 Release

Docker Buildx Bake Jenkins 기본 구성

프로젝트 구조:

project/

├── Dockerfile

├── docker-bake.hcl

└── Jenkinsfile

docker-bake.hcl:

target "production" {

  tags = [

    "registry.company.com/app:v1"

  ]

}

Jenkinsfile:

pipeline {

    agent any


    stages {


        stage('Checkout') {

            steps {

                checkout scm

            }

        }


        stage('Build Image') {

            steps {

                sh 'docker buildx bake production'

            }

        }

    }

}

실행 흐름:

Jenkins 실행

↓

Source Checkout

↓

Docker Build

↓

Image 생성

Jenkins에서 Docker Buildx 설정하기

Jenkins Server에는 Docker와 Buildx가 필요합니다.

확인:

docker buildx version

Builder 생성:

docker buildx create --use

확인:

docker buildx inspect

결과:

Builder 활성화

↓

Bake 실행 가능

Docker Buildx Bake Jenkins Registry Push

Production 환경에서는 Build 후 Registry Push가 필요합니다.

Jenkins Credential 사용:

stage('Login Registry') {

    steps {

        withCredentials([

        usernamePassword(

        credentialsId: 'docker-login',

        usernameVariable: 'USER',

        passwordVariable: 'PASS'

        )

        ]) {

            sh 'docker login -u $USER -p $PASS registry.company.com'

        }

    }

}

Build:

stage('Build Push') {

    steps {

        sh 'docker buildx bake production --push'

    }

}

흐름:

Jenkins

↓

Registry 인증

↓

Bake Build

↓

Image Push

Docker Buildx Bake Jenkins Cache 설정

Jenkins Build 속도를 높이기 위해 Cache를 사용할 수 있습니다.

docker-bake.hcl:

target "production" {


cache-from = [

"type=registry,ref=image:cache"

]


cache-to = [

"type=registry,ref=image:cache"

]


}

효과:

기존 Layer 확인

↓

변경 부분만 Build

↓

Build 시간 감소

Docker Buildx Bake Jenkins Multi-platform Build

Jenkins에서도 여러 Architecture Image를 생성할 수 있습니다.

설정:

target "production" {


platforms = [

"linux/amd64",

"linux/arm64"

]


}

Jenkins 실행:

sh 'docker buildx bake production --push'

결과:

Registry

app:v1

├── AMD64

└── ARM64

Docker Buildx Bake Jenkins Secret 관리

민감한 정보는 Jenkins Credentials를 활용합니다.

관리 대상:

  • Docker Password
  • API Key
  • SSH Key
  • Token

예:

withCredentials([string(

credentialsId: 'api-token',

variable: 'TOKEN'

)]) {


sh 'docker buildx bake production'


}

장점:

  • Secret 보호
  • 코드 노출 방지
  • 안전한 Build

Docker Buildx Bake Jenkins Attestation 적용

보안 중심 운영에서는 Image 검증 정보를 생성할 수 있습니다.

예:

sh '''

docker buildx bake production \

--push \

--attest type=provenance \

--attest type=sbom

'''

결과:

Image

+

SBOM

+

Provenance

↓

Registry 저장

Docker Buildx Bake Jenkins 실무 Jenkinsfile 예제

pipeline {


agent any


stages {


stage('Checkout') {

steps {

checkout scm

}

}


stage('Setup Buildx') {

steps {

sh 'docker buildx create --use'

}

}


stage('Build Image') {

steps {

sh 'docker buildx bake production --push'

}

}


}


}

구조:

Git Commit

↓

Jenkins 실행

↓

Buildx 생성

↓

Bake 실행

↓

Registry Push

Docker Buildx Bake Jenkins 확인 방법

Jenkins:

Dashboard

Build History

Console Output

확인:

docker buildx imagetools inspect image-name

확인:

  • Image Tag
  • Digest
  • Platform
  • Attestation

Docker Buildx Bake Jenkins 문제 해결

Buildx 명령어 오류

확인:

docker buildx version

Docker Buildx 설치 상태 확인

Jenkins Docker 권한 오류

확인:

docker ps

Jenkins User Docker 권한 확인

Registry Push 실패

확인:

  • Credential 설정
  • Registry 권한
  • Login 정보

Docker Buildx Bake Jenkins 사용 시 주의사항

첫 번째는 Jenkins Server에 Docker 권한을 안전하게 설정해야 합니다.

두 번째는 Credential을 Jenkins 내부 Secret으로 관리해야 합니다.

세 번째는 Build Node 환경을 동일하게 유지하는 것이 좋습니다.

네 번째는 Production Pipeline과 테스트 Pipeline을 분리하는 것이 좋습니다.

Best Practice

Docker Buildx Bake Jenkins 활용 방법:

  • Pipeline 자동화
  • Registry Push 자동화
  • Cache 적용
  • Multi-platform Build
  • Secret 관리
  • SBOM/Provenance 적용

자주 묻는 질문

Jenkins에서도 Docker Buildx Bake를 사용할 수 있나요?

가능합니다.

Jenkins Pipeline에서 Docker Build 자동화를 구성할 수 있습니다.

Jenkins와 GitHub Actions 차이는 무엇인가요?

Jenkins는 자체 서버 기반 자동화 도구이며 기업 내부 환경에서 많이 사용됩니다.

Multi-platform Build가 가능한가요?

가능합니다.

Buildx와 QEMU 환경을 활용할 수 있습니다.

Production 배포에도 사용할 수 있나요?

가능합니다.

Build → Registry Push → Deploy 구조로 확장할 수 있습니다.

마무리

Docker Buildx Bake Jenkins Pipeline은 기업 서버 환경에서 안정적인 Docker Build 자동화를 구축하는 중요한 방법입니다.

Jenkins의 강력한 Pipeline 기능과 Docker Buildx Bake를 결합하면 Image 생성, 검증, 저장, 배포 과정을 자동화할 수 있습니다.

특히 자체 서버 운영, Private Cloud, Kubernetes 환경에서는 Jenkins 기반 CI/CD 구조가 많이 활용되며 Docker Buildx Bake와 함께 사용하면 더욱 효율적인 DevOps 환경을 만들 수 있습니다.

댓글 남기기