Distroless 알파인
8285 단어 javasecuritykubernetesdocker
distroless/base
에 대한 아래 Snyk 출력 참조). 우리의 SDLC가 작고 투박하며 scratch
(Graal, Golang 등) 이미지에 대한 준비가 아직 되지 않았기 때문에 당분간 무엇을 할 수 있습니까? 🤔이로 인해 distrolessAlpine Linux 이미지에 대해 생각하게 되었습니다. 빠른 Google은 최근Medium article이 증명한 것처럼 내가 유일한 사람이 아니라는 것을 보여줍니다. 그러나 우리는 라이브러리별로 라이브러리를 가져와 작동하는 이미지를 얻기 위해 대부분 Java를 다루기 때문에 다소 어리석은 일입니다. 다행히 APKO 구조에.
APKO는 필요한 것만 Alpine을 사용하여 린 이미지를 만드는 도구입니다.
데모
작성 당시 Alpine 3.15 이미지는 5.57MB였습니다. 꽤 작지만 여전히
sh
셸과 같이 필요하지 않은 일부 항목이 포함되어 있습니다. 그래서 저는 APKO의 예시를 통해 다음과 같은 결론을 내렸습니다.contents:
repositories:
- https://dl-cdn.alpinelinux.org/alpine/v3.15/main
packages:
- musl
- zlib
accounts:
groups:
- groupname: nonroot
gid: 10000
users:
- username: nonroot
uid: 10000
run-as: nonroot
os-release:
version-id: '3.15' # defaults to 3.16/edge
여기서 참고할 몇 가지 사항:
3.15
가 아닌 edge
repos를 사용하여, musl
: 거의 모든 것에 필요합니다. zlib
: JRE 17에 필요하며 JRE 17이 없으면 충돌합니다. PS ...> docker run --rm `
-v $pwd/:/app:rw `
-w /app ghcr.io/chainguard-dev/apko:v0.3.3 `
build rootless.yaml alpine:3.15-apko apko.tar
2022/05/10 09:21:44 loading config file: rootless.yaml
2022/05/10 09:21:45 apko (x86_64): building image 'alpine:3.15-apko'
...
PS ...> docker load -i .\apko.tar
Loaded image: alpine:3.15-apko
결과는 매우 작은 이미지입니다.
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine 3.15 0ac33e5f5afa 4 weeks ago 5.57MB
alpine 3.15-apko 5a3ea808f8ed 52 years ago 709kB
크기의 거의 1/8(12.7%)이며 총 2개의 패키지(14개에서 감소)입니다.
PS ...> docker scan alpine:3.15-apko
Testing alpine:3.15-apko...
Package manager: apk
Project name: docker-image|alpine
Docker image: alpine:3.15-apko
Platform: linux/amd64
✔ Tested 2 dependencies for known vulnerabilities, no vulnerable paths found.
이는 대략적으로 동등한 것
distroless/base
보다 훨씬 작습니다.REPOSITORY TAG IMAGE ID CREATED SIZE
gcr.io/distroless/base nonroot 555ca12a9222 52 years ago 20.3MB
28배 이상 크며 잠재적인 문제가 있습니다.
PS ...> docker scan gcr.io/distroless/base:nonroot
Testing gcr.io/distroless/base:nonroot...
...
Package manager: deb
Project name: docker-image|gcr.io/distroless/base
Docker image: gcr.io/distroless/base:nonroot
Platform: linux/amd64
Tested 6 dependencies for known vulnerabilities, found 11 vulnerabilities.
Netty 및 gRPC에 많은 JLink를 통해 existing project으로 새 이미지를 시험해 보았습니다.
grpc-자바#9083 자바는 어떻습니까?
좋아, JLink 최소 JRE를 사용하고 싶지 않습니다. Java 17 JRE의 차이점은 무엇입니까?
REPOSITORY TAG IMAGE ID CREATED SIZE
gcr.io/distroless/java17-debian11 nonroot 678ed8ce3ba5 52 years ago 231MB
alpine jre17-apko d2302101850c 52 years ago 202MB
29MB 이하, 그게 다야!
결론
따라서 공격 표면이 더 작은 Google보다 더 작은 배포 없는 Alpine 이미지를 가질 수 있습니다. 🔥
APKO의 메인테이너는 아직 출시되지 않았고 변경될 가능성이 있지만 좋은 시작이라고 강조합니다.
Reference
이 문제에 관하여(Distroless 알파인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dansiviter/distroless-alpine-ci8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)