
debian:bookworm
기본 컨테이너 이미지로 사용하고 싶습니다 . 하지만 dive
.apt-get
면책 조항: 이러한 "벤치마크" 결과는 내 컴퓨터에서 몇 번 반복 실행하여 평균을 낸 것이지만 문제를 광범위하게 대표한다고 생각합니다.
단일 앱 비교
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends nginx
FROM alpine:3.18.2
RUN apk add --no-cache nginx
결과는 다음과 같습니다.
베이스 | 빌드 시간 | 크기 |
---|---|---|
알파인 | 2.3초 | 9.2MB |
데비안 슬림 | 5.1초 | 132MB |
debian-slim
속도가 느리기 때문에 시간이 더 오래 걸리지 apt-get update
만 단일 애플리케이션의 경우 기본 이미지 차이가 상당합니다.
여러 앱과 비교
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends nginx curl wget git iputils-ping rsync unzip && \
apt-get clean && \
rm -rf /var/cache/apt/archives /var/lib/apt/lists/*
FROM alpine:3.18.2
RUN apk add --no-cache nginx curl wget git iputils-ping rsync unzip
베이스 | 빌드 시간 | 크기 |
---|---|---|
알파인 | 3.2초 | 23MB |
데비안 슬림 | 9.0초 | 201MB |
알파인은 0.9초, 13.8MB 증가했습니다. 데비안은 3.9초, 69MB 증가했습니다.
파일 목록
사용docker run --rm -it <tag> du -h > debian.txt
알파인:https://pastebin.com/mHTHDFwW 데비안 슬림:https://pastebin.com/wTpuYGDD
약 50MB가 perl
?
극단적인 경우의 예
여러 빌드 도구(Java, Go, NodeJS 등)가 포함된 이미지가 있는데, 분명 무거울 것 같지만 그 크기가 7.1GB에 달한다는 사실에 여전히 놀랐습니다. 하지만 이는 데비안/apt의 잘못이 아닐 수도 있습니다. 실행만 하면 pip3 install ansible
565MB가 추가되고 그 중 222MB는 fortinet
(사용하는 사람이 거의 없다고 생각함) 패키지 관리자를 사용할 때 주의를 기울이고 광범위 nginx
하거나 ansible
더 구체적이고 명시적인 패키지를 사용하지 않는 것이 교훈이라고 생각합니다.
질문
왜 데비안은 훨씬 더 많이 성장하고, 애플리케이션 설치는 훨씬 더 느리게 진행되나요? 이는 특히 차이가 100MB와 1GB일 수 있는 대용량 컨테이너 이미지와 관련이 있습니다.
내가 온라인에서 읽은 바에 따르면 Alpine은 커뮤니티급 패키지를 갖춘 Arch와 비교할 수 있는 최첨단 제품인 반면 Debian 패키지는 더 신뢰할 수 있습니다. 기업용으로 보안이 중요한 환경에서는 데비안 패키지를 사용하는 것이 필요해 보이지만 이렇게 큰 이미지를 정당화하는 것도 어렵습니다. Alpine은 기업용으로 신뢰할 수 있나요? (이상적으로 모든 바이너리는 재현 가능하고 개발자가 서명하므로 독립적인 빌드는 신뢰할 수 있지만 우리는 그것과는 거리가 멀다는 것을 이해합니다.)
데비안 크기/빌드 시간을 줄이기 위해 할 수 있는 일이 있나요? 한 가지 옵션은 바이너리를 수동으로 설치하는 것입니다. apt-get update
빌드 서버에서 apt-proxy를 사용하면 더 빨라질 수 있습니까?
한 가지 설명은 알파인 이미지에 많은 내장 종속성(busybox?)이 있는데 debian
/ debian-slim
에 이를 추가해야 한다는 것입니다.