`debian-slim` 컨테이너 이미지가 `alpine`을 사용할 때보다 훨씬 큰 이유는 무엇입니까?

`debian-slim` 컨테이너 이미지가 `alpine`을 사용할 때보다 훨씬 큰 이유는 무엇입니까?

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 ansible565MB가 추가되고 그 중 222MB는 fortinet(사용하는 사람이 거의 없다고 생각함) 패키지 관리자를 사용할 때 주의를 기울이고 광범위 nginx하거나 ansible더 구체적이고 명시적인 패키지를 사용하지 않는 것이 교훈이라고 생각합니다.

질문

왜 데비안은 훨씬 더 많이 성장하고, 애플리케이션 설치는 훨씬 더 느리게 진행되나요? 이는 특히 차이가 100MB와 1GB일 수 있는 대용량 컨테이너 이미지와 관련이 있습니다.

내가 온라인에서 읽은 바에 따르면 Alpine은 커뮤니티급 패키지를 갖춘 Arch와 비교할 수 있는 최첨단 제품인 반면 Debian 패키지는 더 신뢰할 수 있습니다. 기업용으로 보안이 중요한 환경에서는 데비안 패키지를 사용하는 것이 필요해 보이지만 이렇게 큰 이미지를 정당화하는 것도 어렵습니다. Alpine은 기업용으로 신뢰할 수 있나요? (이상적으로 모든 바이너리는 재현 가능하고 개발자가 서명하므로 독립적인 빌드는 신뢰할 수 있지만 우리는 그것과는 거리가 멀다는 것을 이해합니다.)

데비안 크기/빌드 시간을 줄이기 위해 할 수 있는 일이 있나요? 한 가지 옵션은 바이너리를 수동으로 설치하는 것입니다. apt-get update빌드 서버에서 apt-proxy를 사용하면 더 빨라질 수 있습니까?

한 가지 설명은 알파인 이미지에 많은 내장 종속성(busybox?)이 있는데 debian/ debian-slim에 이를 추가해야 한다는 것입니다.

관련 정보