Docker Buildx Bake Network 사용법 완벽 가이드! Build 네트워크 설정 관리하기

Docker Image를 Build할 때 대부분의 과정은 인터넷 또는 외부 서비스와 연결됩니다.

예:

  • Package 다운로드
  • Private Repository 접근
  • Dependency 설치
  • API 요청
  • 사내 Network 연결

하지만 Build 환경에 따라 네트워크 설정이 필요한 경우가 있습니다.

예:

Docker Build

↓

Package 설치 필요

↓

Network 연결 필요

또는 보안 환경에서는:

외부 Network 차단

↓

내부 Network만 사용

같은 구성이 필요합니다.

Docker Buildx Bake에서는 Network 옵션을 사용하여 Build 과정에서 사용할 네트워크 환경을 설정할 수 있습니다.

예:

docker-bake.hcl

target "app" {

  network = [
    "host"
  ]

}

실행:

docker buildx bake app

결과:

Build Network 설정

↓

Dockerfile 실행

↓

Image 생성

이번 글에서는 Docker Buildx Bake Network의 개념부터 Network 종류, Host Network 활용, CI/CD 환경 설정, 보안 관리까지 자세히 알아보겠습니다.

Docker Buildx Bake Network란 무엇인가?

Docker Buildx Bake Network는 Docker Build 과정에서 사용할 네트워크 환경을 지정하는 기능입니다.

기본 구조:

Docker Build

↓

Network 설정 적용

↓

RUN 명령 실행

↓

Image 생성

즉, Build 과정에서 Container가 어떤 Network를 사용할지 결정합니다.

Docker Buildx Bake Network가 필요한 이유

일반적인 Build에서는 기본 Network를 사용합니다.

예:

RUN apt update

RUN npm install

동작:

Container

↓

인터넷 연결

↓

Package 다운로드

하지만 기업 환경에서는 문제가 발생할 수 있습니다.

문제:

  • Proxy 환경
  • Private Network 필요
  • 외부 접근 제한
  • 보안 정책

Network 설정을 사용하면 환경에 맞게 조절할 수 있습니다.

Docker Buildx Bake Network 기본 설정

docker-bake.hcl:

target "app" {

  network = [
    "host"
  ]

}

실행:

docker buildx bake app

Build 과정에서 Host Network를 사용합니다.

Docker Buildx Bake Network 종류

Docker Build Network는 여러 방식으로 사용할 수 있습니다.

default

기본 Network 사용 방식입니다.

예:

network = [
  "default"
]

특징:

  • 일반 Docker Build 환경
  • 기본 설정

host

호스트 Network 사용 방식입니다.

예:

network = [
  "host"
]

특징:

  • Host와 동일한 Network 사용
  • Network 성능 향상
  • 특정 서비스 접근 가능

활용:

  • 내부 API 접근
  • 로컬 서비스 연결

none

Network 차단 방식입니다.

예:

network = [
  "none"
]

특징:

  • 외부 연결 차단
  • 보안 Build 환경

활용:

  • 완전 격리 Build
  • 보안 테스트

Docker Buildx Bake Network와 Dockerfile 활용

Dockerfile:

FROM ubuntu:22.04

RUN apt update

RUN apt install -y curl

Network 설정:

target "app" {

  network = [
    "host"
  ]

}

동작:

RUN 실행

↓

Host Network 사용

↓

Package 다운로드

Docker Buildx Bake Network Host 활용 예제

내부 서비스:

Private API Server

↓

Docker Build

↓

Dependency Download

설정:

target "internal" {

  network = [
    "host"
  ]

}

활용:

  • 사내 API
  • Private Package Server
  • 내부 인증 시스템

Docker Buildx Bake Network와 Proxy 환경

기업 환경에서는 Proxy 사용이 많습니다.

예:

Docker Build

↓

Proxy Server

↓

Internet

환경 변수:

HTTP_PROXY=http://proxy.company.com
HTTPS_PROXY=http://proxy.company.com

Bake:

target "app" {

  args = {

    HTTP_PROXY = "${HTTP_PROXY}"

  }

}

Proxy 환경에서도 안정적인 Build가 가능합니다.

Docker Buildx Bake Network와 CI/CD 활용

CI 환경에서는 Network 제한이 있을 수 있습니다.

GitHub Actions:

- name: Build Image

  run: |

    docker buildx bake production

Network 설정:

target "production" {

  network = [

    "host"

  ]

}

활용:

  • Private Registry 접근
  • 내부 서비스 연결
  • Build 환경 통제

Docker Buildx Bake Network 보안 활용

보안 환경에서는 Network 차단이 필요할 수 있습니다.

예:

target "secure" {

  network = [

    "none"

  ]

}

동작:

Build Container

↓

외부 Network 차단

↓

격리 Build

보안 검증 환경에서 활용됩니다.

Docker Buildx Bake Network 실무 예제

프로젝트:

project/

├── Dockerfile

├── docker-bake.hcl

└── deployment.yaml

docker-bake.hcl:

target "production" {

  tags = [

    "registry.company.com/app:v1"

  ]

  network = [

    "host"

  ]

}

실행:

docker buildx bake production --push

결과:

Host Network 사용

↓

Dependency 다운로드

↓

Image 생성

↓

Registry Push

Docker Buildx Bake Network 문제 해결

Package 다운로드 실패

확인:

curl https://google.com

Network 연결 상태를 확인합니다.


Host Network 동작하지 않는 경우

확인:

  • Docker Desktop 설정
  • Linux Network 권한
  • Builder 환경

CI 환경에서 접근 실패

확인:

  • Runner Network 정책
  • Proxy 설정
  • Firewall 규칙

Docker Buildx Bake Network 사용 시 주의사항

첫 번째는 Host Network 사용 시 보안 위험을 고려해야 합니다.

두 번째는 필요한 경우에만 Network 권한을 추가하는 것이 좋습니다.

세 번째는 보안 Build에서는 Network 차단 방식을 고려해야 합니다.

네 번째는 CI/CD 환경의 Network 정책을 확인해야 합니다.

Best Practice

Docker Buildx Bake Network 활용 방법:

  • 기본 Network 우선 사용
  • 필요한 경우 Host 적용
  • 보안 Build는 none 활용
  • Proxy 환경 설정
  • Private Network 관리
  • CI/CD 정책 반영

자주 묻는 질문

Docker Buildx Bake Network는 무엇인가요?

Docker Build 과정에서 사용할 Network 환경을 설정하는 기능입니다.

Host Network는 언제 사용하나요?

내부 서비스 접근이나 특정 Network 환경이 필요한 경우 사용합니다.

Network 없이 Build할 수 있나요?

가능합니다.

none 설정으로 외부 Network를 차단할 수 있습니다.

CI/CD에서도 사용할 수 있나요?

가능합니다.

Runner 환경에 맞춰 Network 설정을 적용할 수 있습니다.

마무리

Docker Buildx Bake Network는 Docker Build 환경의 연결 방식을 제어하는 중요한 기능입니다.

일반적인 Build에서는 기본 Network를 사용하지만, 기업 환경이나 보안 환경에서는 Host Network 또는 Network 차단 설정이 필요할 수 있습니다.

특히 Private Registry, CI/CD Pipeline, 내부 서버 연동 환경에서는 적절한 Network 설정을 적용하면 더욱 안정적이고 안전한 Docker Build 환경을 구축할 수 있습니다

댓글 남기기