Docker Image를 Build하는 과정에서는 외부 인터넷 연결이나 특정 네트워크 환경이 필요한 경우가 있습니다.
예:
- Package 다운로드
- Private Repository 접근
- 내부 API 연결
- 사내 Network 환경 사용
- Proxy 서버 연결
일반적인 Build:
Docker Build
↓
기본 Network 사용
↓
Package 다운로드
하지만 기업 환경에서는 기본 Network만으로 원하는 작업이 어려운 경우가 있습니다.
예:
Private Package Server
↓
내부 Network 필요
↓
Build 실패
Docker Buildx Bake에서는 Network 설정을 통해 Build 과정에서 사용할 네트워크 환경을 관리할 수 있습니다.
예:
docker-bake.hcl
target "app" {
network = "host"
}
실행:
docker buildx bake app
결과:
Build Container
↓
지정 Network 사용
↓
Package 설치 가능
이번 글에서는 Docker Buildx Bake Network의 개념부터 Network 설정 방법, Host Network 활용, Private 환경 Build, CI/CD 적용까지 자세히 알아보겠습니다.
Docker Buildx Bake Network란 무엇인가?
Docker Buildx Bake Network는 Docker Build 과정에서 사용하는 Network 방식을 지정하는 기능입니다.
기본 구조:
Build Process
↓
Network 설정
↓
외부 연결
↓
Build 실행
Build 과정에서 실행되는 명령어는 Network 설정의 영향을 받습니다.
예:
Dockerfile:
FROM ubuntu
RUN apt update
RUN apt install curl -y
이 과정에서 Package Repository 접근이 필요합니다.
Docker Buildx Bake Network가 필요한 이유
기본 환경에서는 대부분 정상적으로 동작하지만 특정 환경에서는 문제가 발생합니다.
예:
사내 Package Server
↓
방화벽 존재
↓
기본 Network 접근 불가
문제:
- Package 다운로드 실패
- Private Server 접근 실패
- Build 오류 발생
Network 설정 사용:
Build Container
↓
내부 Network 연결
↓
필요한 리소스 접근
장점:
- Private 환경 Build 가능
- 내부 서비스 연결
- Network 제어 가능
- Build 환경 통일
Docker Buildx Bake Network 기본 설정
docker-bake.hcl:
target "app" {
network = "host"
}
실행:
docker buildx bake app
Build 과정에서 Host Network를 사용합니다.
Docker Buildx Bake Network 종류
대표적으로 사용하는 Network 방식:
host Network
설정:
network = "host"
특징:
- Host 시스템 Network 공유
- 빠른 접근 가능
- 내부 서비스 접근 가능
사용 환경:
- 내부 Package Server
- 개발 환경
- 테스트 환경
default Network
기본 Docker Network 사용:
network = "default"
일반적인 Build 환경입니다.
none Network
Network 차단:
network = "none"
특징:
- 외부 연결 차단
- 보안 Build 환경
활용:
- 보안 검사
- Offline Build
Docker Buildx Bake Network Host 사용 예제
docker-bake.hcl:
target "production" {
network = "host"
}
Dockerfile:
FROM ubuntu
RUN apt update
RUN apt install curl -y
실행:
docker buildx bake production
결과:
Host Network 연결
↓
Package 다운로드
↓
Build 완료
Docker Buildx Bake Network Private Repository 활용
Private Package Repository를 사용하는 경우 Network 설정이 필요할 수 있습니다.
예:
사내 Registry
↓
Package 요청
↓
인증
↓
다운로드
설정:
target "app" {
network = "host"
}
활용:
- 사내 npm Registry
- Private Maven Repository
- 내부 Git Server
Docker Buildx Bake Network와 Proxy 설정
기업 환경에서는 Proxy를 사용하는 경우가 많습니다.
예:
target "app" {
args = {
HTTP_PROXY = "http://proxy.company.com"
HTTPS_PROXY = "http://proxy.company.com"
}
}
흐름:
Build
↓
Proxy 연결
↓
외부 Package 접근
Network 설정과 함께 사용할 수 있습니다.
Docker Buildx Bake Network CI/CD 활용
CI 환경에서는 Runner Network 환경을 고려해야 합니다.
예:
GitHub Actions:
- name: Build
run: |
docker buildx bake production
Bake:
target "production" {
network = "host"
}
활용:
- Private Runner
- 내부 서비스 접근
- 사내 환경 Build
Docker Buildx Bake Network 보안 Build 활용
Network 차단 Build도 가능합니다.
예:
target "secure" {
network = "none"
}
동작:
Build 실행
↓
외부 Network 차단
↓
보안 강화
활용:
- 악성 Package 방지
- 재현 가능한 Build
- 보안 검증
Docker Buildx Bake Network 실무 예제
프로젝트:
project/
├── Dockerfile
├── docker-bake.hcl
└── config/
docker-bake.hcl:
target "production" {
tags = [
"registry.company.com/app:v1"
]
network = "host"
args = {
ENV = "production"
}
}
실행:
docker buildx bake production
결과:
Host Network 적용
↓
내부 Resource 접근
↓
Image Build 완료
Docker Buildx Bake Network 확인 방법
최종 설정 확인:
docker buildx bake --print production
확인:
- Network 설정
- Target 정보
- Build Args
- Output
Builder 확인:
docker buildx inspect
Docker Buildx Bake Network 문제 해결
Network 연결 실패
확인:
docker buildx inspect
Builder 환경을 확인합니다.
Private Server 접근 실패
확인:
- VPN 연결
- Proxy 설정
- Firewall 정책
Host Network 동작 안 하는 경우
확인:
- Builder 종류
- Docker Desktop 설정
- 운영체제 환경
Docker Buildx Bake Network 사용 시 주의사항
첫 번째는 Host Network 사용 시 보안 영향을 고려해야 합니다.
두 번째는 CI 환경에서는 Runner Network 환경을 확인해야 합니다.
세 번째는 민감한 내부 Network 접근 정보를 관리해야 합니다.
네 번째는 필요하지 않은 경우 기본 Network 사용을 권장합니다.
Best Practice
Docker Buildx Bake Network 활용 방법:
- 기본 Network 우선 사용
- 필요한 경우 Host Network 적용
- Private 환경은 별도 관리
- Proxy 설정 활용
- Secure Build는 Network 차단
- CI 환경 검증
자주 묻는 질문
Docker Buildx Bake Network는 무엇인가요?
Docker Build 과정에서 사용할 Network 환경을 설정하는 기능입니다.
Host Network는 언제 사용하나요?
내부 Server 접근이나 Package 다운로드 문제가 있을 때 사용합니다.
Network를 차단할 수도 있나요?
가능합니다.
none Network를 사용하면 외부 연결을 제한할 수 있습니다.
CI/CD에서도 사용할 수 있나요?
가능합니다.
Runner 환경에 맞게 Network 설정을 적용할 수 있습니다.
마무리
Docker Buildx Bake Network는 Build 과정에서 필요한 연결 환경을 관리하는 중요한 기능입니다.
기본 Network만으로 충분한 경우도 많지만, Private Repository, 사내 Package Server, Proxy 환경에서는 Network 설정이 필수적입니다.
특히 기업 환경과 CI/CD Pipeline에서는 Build 환경의 Network 구조를 이해하고 적절하게 설정하면 안정적인 Docker Image Build 환경을 구축할 수 있습니다.