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 환경을 구축할 수 있습니다