반응형
상황
- 회사 내부망에서 Docker 이미지를 빌드해야 함
- 보안 정책 상 HTTP(80번 포트) 접근이 차단됨
- 기본 Ubuntu 미러(http://archive.ubuntu.com)는 HTTP를 사용 → 접근 불가
해결 방법
- HTTPS(443번 포트) 미러 사용
- https://archive.ubuntu.com / https://security.ubuntu.com
- HTTPS는 보안 정책에서 허용되는 경우가 많음
- Dockerfile에서 sources.list와 .sources 파일 모두 HTTPS 주소로 변경
- 초기 빌드 시 CA 인증서가 없으면 SSL 검증 오류 발생 → 임시로 검증 OFF
- 이후 CA 설치 후 SSL 검증 정상화
Docker로 Ubuntu 24.04 이미지를 빌드할 때, apt 패키지 서버 연결 문제로 빌드가 실패하는 경우가 있습니다.
특히 HTTPS 미러를 사용하려고 하면 SSL 인증서가 없어 apt-get update가 오류를 내는 상황이 자주 발생합니다.
이 글에서는 Dockerfile에서 apt repository를 안전하게 우회하고 필수 패키지를 설치하는 방법을 단계별로 소개합니다.
문제 상황
기본 Ubuntu 24.04 Docker 이미지는 http://archive.ubuntu.com와 http://security.ubuntu.com을 사용합니다.
- HTTPS 미러로 전환 시 SSL 인증서가 없으면 apt-get update 실패
- 필수 패키지 설치 후 캐시를 정리하지 않으면 이미지가 불필요하게 커짐
- Deb822 스타일 .sources 파일도 있어 단순 sources.list 변경만으로는 충분하지 않음
해결 전략
Dockerfile에서 다음 순서로 처리하면 안정적입니다.
- HTTP → HTTPS 미러 전환
- /etc/apt/sources.list 및 Deb822 .sources 파일 모두 수정
- 초기 SSL 검증 비활성화
- CA 인증서가 없을 때 첫 apt-get update 실패 방지
- CA 인증서 설치 및 갱신
- ca-certificates 설치 후 update-ca-certificates
- 필수 패키지 설치
- SSH, Supervisor, sudo 등
- 캐시 정리
- 이미지 용량 최적화
FROM ubuntu:24.04
RUN set -eux; \
# 1️⃣ HTTPS 미러 전환
for f in /etc/apt/sources.list /etc/apt/sources.list.d/*.sources; do \
[ -f "$f" ] && sed -i \
's|http://archive.ubuntu.com|https://archive.ubuntu.com|g; s|http://security.ubuntu.com|https://security.ubuntu.com|g' "$f"; \
done; \
\
# 2️⃣ 초기 SSL 검증 OFF로 apt 업데이트
apt-get update -o Acquire::https::Verify-Peer=false -o Acquire::https::Verify-Host=false; \
\
# 3️⃣ CA 인증서 설치
DEBIAN_FRONTEND=noninteractive apt-get install -y \
-o Acquire::https::Verify-Peer=false \
-o Acquire::https::Verify-Host=false \
ca-certificates; \
update-ca-certificates; \
\
# 4️⃣ 필수 패키지 설치
apt-get update; \
DEBIAN_FRONTEND=noninteractive apt-get install -y \
openssh-server \
supervisor \
sudo; \
\
# 5️⃣ 캐시 정리
apt-get clean; \
rm -rf /var/lib/apt/lists/*
Tip
- set -eux : 빌드 과정에서 에러가 나면 바로 확인 가능
- Deb822 .sources 파일 처리 필수 : Ubuntu 24.04 이후부터 일부 소스가 이 방식으로 관리됨
- DEBIAN_FRONTEND=noninteractive : Docker 빌드 시 설치 질문 없이 자동 진행
- rm -rf /var/lib/apt/lists/* : 이미지 최적화
정리
- Docker 빌드 초기 apt repository 우회와 CA 설치를 처리하면 패키지 설치 실패를 예방할 수 있습니다.
- 한 RUN 명령에서 처리하면 Docker 레이어 최소화 및 이미지 최적화가 가능합니다.
- Ubuntu 24.04에서 Deb822 소스까지 대응하면 안정적으로 최신 패키지 서버를 사용할 수 있습니다.
반응형
'배운 내용 > Docker' 카테고리의 다른 글
| 리눅스 도커 런타임 문제와 재설치 과정 (0) | 2025.09.09 |
|---|---|
| [Docker]Docker 환경에서 회사 내부 네트워크용 Ubuntu 국내 미러 설정과 Python 설치 방법 (0) | 2025.09.05 |
| 도커 이미지 로드 용량 부족 에러 날 때 (0) | 2024.08.02 |
| Dockerfile 만들 때 필요한 패키지만 설치하기 (1) | 2024.04.12 |
| docker 기본 명령어 (0) | 2023.07.26 |
