Joo's
반응형

회사 내부 환경에서는 보안 정책 때문에 해외 apt 레포지토리에 접근할 수 없는 경우가 많습니다.
이럴 때 Docker 이미지 빌드를 진행하면 apt update나 apt install 단계에서 오류가 발생하게 됩니다.

이 문제를 해결하려면 Ubuntu 기본 미러를 국내 미러로 변경해야 합니다.
아래 예제는 이를 Dockerfile에 반영한 방법을 보여줍니다.

 

1. Dockerfile 예제

# Ubuntu 국내 미러로 교체 후 Python3-pip 설치
RUN find /etc/apt/ -type f \( -name "*.list*" -o -name "*.sources" \) -exec sed -i \
    -e 's|http://archive.ubuntu.com/ubuntu/|http://kr.archive.ubuntu.com/ubuntu/|g' \
    -e 's|http://security.ubuntu.com/ubuntu|http://kr.archive.ubuntu.com/ubuntu/|g' {} + \
    && apt update \
    && apt install -y python3-pip \
    && apt clean

🔹 설명

  1. APT 미러 변경
    • /etc/apt/sources.list와 /etc/apt/sources.list.d/*.sources 파일에서
      글로벌 서버(archive.ubuntu.com, security.ubuntu.com) 주소를
      국내 미러(kr.archive.ubuntu.com)로 일괄 교체합니다.
    • find -type f 옵션을 사용하여 정규 파일만 선택하고, 디렉토리가 포함되어 발생할 수 있는 오류를 방지합니다.
  2. 패키지 목록 업데이트
    • apt update를 통해 변경된 미러의 패키지 목록을 최신 상태로 가져옵니다.
  3. 필요 패키지 설치
    • Python3용 pip를 설치합니다.
    • -y 옵션으로 자동으로 설치를 진행합니다.
  4. 캐시 정리
    • apt clean으로 불필요한 캐시를 삭제하여 Docker 이미지 용량을 줄입니다.

 

2. 개선 포인트

  • 기존에는 sed 명령어를 반복해서 여러 파일에 적용했지만,
    find ... -exec sed -i ... {} + 방식으로 한 번에 안전하게 처리하도록 개선했습니다.
  • 이렇게 하면 Docker 이미지 빌드 과정에서 오류가 발생하지 않고,
    코드도 훨씬 깔끔하고 유지보수하기 쉬워집니다.
  • 회사 내부 환경에서도 안정적으로 Docker 이미지 빌드가 가능합니다.

3. 마무리

이 방법을 적용하면:

  • 해외 apt 서버 접근이 막혀 있는 환경에서도 패키지를 설치할 수 있습니다.
  • Dockerfile이 간결해지고, 유지보수가 용이합니다.
  • 필요한 패키지를 안정적으로 설치하면서 이미지 용량도 최적화할 수 있습니다.

회사 내부 환경에서 Docker를 사용할 때 반드시 국내 미러를 활용하는 습관을 추천드립니다.

반응형
profile

Joo's

@JooJY

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!