๊ฐ๋ฐ์ผ์ง
[๋์ปค] ๋์ปค ์ต์ ํ - ๋ฒ ์ด์ค ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ์ค์ด๋ฉด ๋ฌด์กฐ๊ฑด ์ข์๊น?(alpine, musl libc, JNI) ๋ณธ๋ฌธ
[๋์ปค] ๋์ปค ์ต์ ํ - ๋ฒ ์ด์ค ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ์ค์ด๋ฉด ๋ฌด์กฐ๊ฑด ์ข์๊น?(alpine, musl libc, JNI)
doublejune 2025. 4. 24. 15:09
ํ๋ก์ ํธ ๊ฐ๋ฐ์ ๋์ปค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ๋ฅผ ํ๋ฉฐ, ๊ณผ์ ์ ์ข ๋ ์ต์ ํํ๊ณ ์ถ์ ์๊ฐ์ด ๋ค์๋ค.
์ค์ ์๋น์ค๋ฅผ ์ด์ํ๊ฒ ๋๋ค๋ฉด, ๋์ปค๋ก ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ๋ฐฐํฌํ๋ ๊ณผ์ ์ด ์ ์์ด ๋ฐ๋ณต๋ ํ ๋ฐ,
์ด๋ฏธ์ง ์ฉ๋์ ์ค์ด๊ณ ๋น๋์๊ฐ์ ๋จ์ถํ๋ ๊ฒ์ด ์๊ฐ๊ณผ ์ปดํจํ ์์์ ๋ญ๋น๋ฅผ ์์ ์ค ๊ฒ์ด๋ผ ์๊ฐํ๋ค.
๊ทธ๋์, ๋์ปค ์ต์ ํ๋ฅผ ์์ํ๋ฉฐ ์ฒซ ๋ฒ์งธ๋ก ์๋ ๋ณผ ๊ฒ์ JDK, JRE ์ด๋ฏธ์ง ๊ฒฝ๋ํ์๋ค.
์๋ฐ๊ธฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๊ณ ์คํํ ๋ ์ฌ์ฉํ๋ JDK์ JRE์ ๋์ปค ์ด๋ฏธ์ง์ ์ฉ๋์ ๋ฎ์ถ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ์๊ณ , ์ด ๋ฐฉ๋ฒ์ ์ ์ฉํ๋๊ฒ ํฉ๋ฆฌ์ ์ธ์ง๋ฅผ ๋ฐ์ ธ๋ณด๊ณ ์ ํ๋ค.
๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด, ์ด๋ฏธ์ง ์ฉ๋์ ๋ฎ์ถ๋๋ฐ์ ์ค๋ ์ฅ์ ๋ณด๋ค ๋จ์ (์ฑ๋ฅ์ด์, ํธํ์ฑ ๋ฌธ์ )์ด ํฌ๋ค๊ณ ์๊ฐํ๋ค.
์ฉ๋์ ์ ํ์ด ์ค์ํ(์๋ฒ ๋๋ ์์คํ ๊ฐ์) ์์คํ ์ด ์๋๋ผ๋ฉด ๊ทธ๋ฅ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ซ๋ค๊ณ ์๊ฐํ๋ค.
1. JDK, JRE ๋ฒ ์ด์ค ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ์ค์ฌ๋ณด์!
# ๋น๋ ๋จ๊ณ
# ๋ฒ ์ด์ค ์ด๋ฏธ์ง ์์ฑ. ๋์ปค ์ปจํ
์ด๋๋ฅผ ํน์ ์ด๊ธฐ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ธํ
.
FROM eclipse-temurin:21-jdk AS builder
WORKDIR /back
COPY . .
RUN ./gradlew clean build
# ์คํ ๋จ๊ณ
FROM eclipse-temurin:21-jre
WORKDIR /back
COPY --from=builder /back/build/libs/weddy-0.0.1-SNAPSHOT.jar /back/weddy.jar
# ๋์ปค ์ปจํ
์ด๋๊ฐ 8080ํฌํธ๋ฅผ ์ฌ์ฉํ ๊ฒ์์ ์ ์ธ
EXPOSE 8080
# ๋์ปค ์ปจํ
์ด๋๊ฐ ์์๋ ๋ ์คํ๋ ๊ธฐ๋ณธ ๋ช
๋ น์ด
CMD ["java", "-Dspring.profiles.active=local", "-jar", "weddy.jar"]
์๋ ํ์ฌ ๋ด ๋์ปคํ์ผ ์ด๋ค.
๋งจ ์ฒซ์งธ์ค์ ๋ณด๋ฉด, eclipse-temurin:21-jdk ๋ฅผ ๋น๋๋ก ์ฌ์ฉํ๊ณ ์์์ ์ ์ ์๋ค. ๊ตฌ์ฒด์ ์ผ๋ก๋ ๋์ปคํ๋ธ์์ ์ ๊ณตํ๋ jdk ๊ณต์ ์ด๋ฏธ์ง๋ฅผ pull๋ฐ๋ ๊ฒ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ jdk, jre์ ๊ฒฝ๋ ๋ฒ์ ์ ์ด๋ฏธ์ง๋ ์กด์ฌํ๋ค. ๋ฐ๋ก alpine๋ฒ์ ์ด๋ค.
๋์ปคํ๋ธ์์ eclipse-temurin ์ด๋ฏธ์ง์์ alpine๋ฒ์ ๋ํ ์ค๋ช ์ด๋ค.
์ค๋ช ์ ๋ณด๋ฉด, ์ํ์ธ ๋ฆฌ๋ ์ค ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ด eclipse-temurin์ด๋ฏธ์ง๋ฅผ ๋ง๋ค์๋ค๊ณ ๋์จ๋ค.
์ฐธ๊ณ ๋ก, ๋ฆฌ๋ ์ค๋ ์คํ์์ค์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฆฌ๋ ์ค์ ํต์ฌ์ ์ธ ์๋ฏธ๋ '์ปค๋'์ด๋ค. ๊ทธ ์ปค๋์ ์ด๊ฒ์ ๊ฒ(ํ์ผ ์์คํ , ํจํค์ง ๋งค๋์ ๋ฑ) ์ถ๊ฐํ์ฌ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ์ผ๋ก ๋ง๋ ๊ฒ์ด ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด๋ค.
- Ubuntu: Canonical(ํ์ฌ)์ด ๊ฐ๋ฐ.
- Debian: ์ปค๋ฎค๋ํฐ ์ค์ฌ.
- Red Hat Enterprise Linux (RHEL): Red Hat(ํ์ฌ)์ด ๊ฐ๋ฐ.
- Alpine Linux: ์ปค๋ฎค๋ํฐ ์ค์ฌ, ํน์ ํ์ฌ๊ฐ ์๋๋ผ ๋ ๋ฆฝ์ ์ธ ๊ฐ๋ฐ์ ๊ทธ๋ฃน์ด ์ฃผ๋.
alpine์ ์ปค๋ฎค๋ํฐ ์ค์ฌ์ผ๋ก ๋ง๋ค์ด์ก์ผ๋ฉฐ, ํน์ง์ small, simple, secure์ด๋ค. ๊ณต์๋ฌธ์ ์ฐธ์กฐ
ํน์ง ๊ทธ๋๋ก, ๋ค๋ฅธ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ๋ค๊ณผ๋ ๋ค๋ฅด๊ฒ ์๊ณ ๊ฐ๋ณ๋ค. ๋ฆฌ๋ ์ค ๋ฒ ์ด์ค ์ด๋ฏธ์ง๊ฐ 5MB๋ฏธ๋ง์ด๋ค.
Alpine Linux | ~5-8 MB | alpine:latest. musl libc, BusyBox ์ฌ์ฉ. ์ปจํ ์ด๋์ ์ต์ ํ๋ ๊ฒฝ๋ ์ด๋ฏธ์ง. |
Ubuntu | ~70-80 MB | ubuntu:latest. glibc ๊ธฐ๋ฐ. ์ต์ ์๋ฒ ๊ตฌ์ฑ, ์ถ๊ฐ ํจํค์ง๋ก ์ฉ๋ ์ฆ๊ฐ ๊ฐ๋ฅ. |
Debian | ~50-60 MB | debian:slim. glibc ๊ธฐ๋ฐ. Slim ๋ฒ์ ๊ธฐ์ค, ๊ธฐ๋ณธ Debian์ ~100 MB ์ด์. |
Fedora | ~150-200 MB | fedora:minimal. glibc ๊ธฐ๋ฐ. ์ต์ ๊ตฌ์ฑ์ด๋ผ๋ ์๋์ ์ผ๋ก ๋ฌด๊ฑฐ์. |
CentOS Stream | ~200-220 MB | centos:stream9. glibc ๊ธฐ๋ฐ. ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์ ๋ง์ถ ๊ธฐ๋ณธ ํจํค์ง ํฌํจ. |
2. ์์ผ๋๊น ์จ๋ ๋ ๊น?
์๋ฅผ ๋ณด๋ฉด jre-alpine์ด๋ฏธ์ง์ ์ผ๋ฐ jre-alpine์ด๋ฏธ์ง(์ฐ๋ถํฌ๋ฅผ ์ฌ์ฉํ)์ ์ฐจ์ด๋ฅผ ๋ณด๋ฉด ์ฉ๋์ด 82mb์ฐจ์ด๊ฐ ๋๋ค.
์ฉ๋์ด ์๊ณ ์ปดํ์ผ ์๊ฐ์ ์ค์ฌ์ฃผ๋ alpine๋ฒ์ ์ ์ฐ๊ณ ์ถ์ง๋ง,
์ฐ๋ฆฌ๋ ๋จ์ ์ ์ดํดํ๊ณ ์ฌ์ฉํ ๋งํ์ง ํ๋จํ ํ์๊ฐ ์๋ค.
๊ทธ๋ฌ๊ธฐ ์ํด, ์ด alpine๋ฒ์ ์ด ๋ค๋ฅธ OS(Ubuntu, debian ๋ฑ)๋ค๊ณผ์ ์ฐจ์ด์ ์ด ๋ฌด์์ธ์ง ์ดํดํด๋ณด์.
3. alpine ๋ฒ์ ์ ๋ค๋ฅธ ๋ฒ์ ๋ค๊ณผ์ ์ด๋ค ์ฐจ์ด๊ฐ ์์๊น?
๊ฒฐ๋ก : ์ํ์ธ ๋ฒ์ ์ glibc ๋์ musl libc๋ฅผ ์ฌ์ฉํ์ฌ ๋ณด๋ค ๊ฐ๋ณ๋ค.
alpine๋ฒ์ ๊ณผ ๋ค๋ฅธ OS์์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์
C ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ(libc, standard C library)์ ๊ตฌํ์ฒด๊ฐ ๋ค๋ฅด๋ค๋ ๊ฒ์ด๋ค.
C ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ(libc, standard C library)
: C์ธ์ด๋ฅผ ์ํ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ. ํ์ค ์ธํฐํ์ด์ค๋ผ๊ณ ์๊ฐํ์.
- ํ์ผ ์ ์ถ๋ ฅ: ํ์ผ ์ฝ๊ธฐ/์ฐ๊ธฐ(fopen, fwrite ๋ฑ).
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ: ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น(malloc, free ๋ฑ).
- ์์คํ ํธ์ถ ๋ํผ: ์ด์ ์ฒด์ ์ ์์คํ ํธ์ถ(์: open, read)์ ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ ๊ณต.
(์์ผ๋ก Cํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ libc๋ผ๊ณ ํ๊ฒ ๋ค.)
libc๋ ์ฐ๋ฆฌ๊ฐ ํํ ์๊ณ ์๋ stdio.h, string.h, stdlib.h ๋ฑ์ด ํฌํจ๋์ด์๋ค.
์ด libc๋ ISO(๊ตญ์ ํ์คํ๊ธฐ๊ตฌ)์์ ์ฑํ์ด ๋์๋ค.
์ด๋ฌํ ํ์ค ๋๋ถ์, ๊ฐ๋ฐ์๊ฐ mac os์์ printf๋ฅผ ์ฌ์ฉํ๋ window os์์ prinf๋ฅผ ์ฌ์ฉํ๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค. ์ด์์ฑ์ด ์ข์์ก๋ค.
๋ค๋ง, mac์์ printf๋ฅผ ํ์ ๋์ window์์ printf๋ฅผ ํ์ ๋ ์ค์ ๋ก ๋ด๋ถ์์ ์๋๋๋ ๋ฐฉ์์ ๋ค๋ฅผ ๊ฒ์ด๋ค. ์๋๋ฉด, mac์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์ ๋ช ๋ น์ด ์คํ ๊ตฌ์กฐ ๋ฑ window์ ๊ทธ๊ฒ๊ณผ๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ OS๋ณ๋ก libc์ ์ข ๋ฅ๊ฐ ๋ค๋ฅด๋ฉฐ, ์๋ฅผ ๋ค๋ฉด
- Windows: Visual C++ Runtime
- mac :libSystem
- linux : glibc, musl libc
์ด๋ ๋ค.
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ์ฃผ๋ชฉํด์ผ ํ ๋ฆฌ๋ ์ค์ฉ libc ๊ตฌํ์ฒด๋ glibc์ musl libc๊ฐ ์๋๋ฐ,
๋์ ์ฐจ์ด์ ์ ์ ๋ง ๊ฐ๋ตํ๊ฒ ์์ฝํ์๋ฉด,
- glibc : ๋ฌด๊ฑฐ์. / ์ฑ๋ฅ ์ต์ ํ. ์์ ์ .
- musl libc: ๋จ์ํ๊ณ ๊ฐ๋ฒผ์. ํต์ฌ ๊ธฐ๋ฅ ์์ฃผ./ ์ฑ๋ฅ์ด ์กฐ๊ธ ๋๋ฆผ. ํธํ์ฑ ์ด์ ์์.
์ค๋๋ ๋๋ถ๋ถ์ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ(Ubuntu, Debian Fedora ๋ฑ)์ด glibc๋ฅผ ์ฌ์ฉํ๋ค.
linux alpine์ ๋ฐ๋ก ์ด musl libc๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ์ฉ๋์ผ๋ก ๋ฐฐํฌํ์ ๋ง๋ค์ด๋๋ค.
4. ๋จ์ ์ด ๋ญ๊ณ , ์ฌ์ฉํด๋ ๋ ๊น?
musl libc๋ฅผ ์ด์ฉํ Linux alpine์ ๊ฐ๋ณ๊ณ ์ข์ง๋ง, ๋น์ฐํ๊ฒ๋ ๋จ์ ์ด ์๋ค.
ํฌ๊ฒ 2๊ฐ์ง๋ฅผ ๊ผฝ์๋ฉด,
1. ์ฑ๋ฅ ์ด์
2. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด์
๊ฐ ์๋ค.
์ฒซ ๋ฒ์งธ๋ก, ์ฑ๋ฅ ์ด์์ ๊ด๋ จํด์๋ ์ด๋ค ํน์ ๋ถ๋ถ์ ๋ํด์ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ๋งํ๊ธฐ๋ ์ด๋ ต๋ค.
musl libc๊ฐ glibc๋ณด๋ค ์ฌ์ฉํ๋ ์ค๋ ๋ ์คํํฌ๊ธฐ๊ฐ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐํ์ ์ฑ๋ฅ์์ ๋ ์ต์ ํ ๋์๋ค๋ ์ด์ผ๊ธฐ๊ฐ ์ข ์ข ๋ณด์ธ๋ค. ํ์ง๋ง ์ง๊ธ๊น์ง ํ์ธํ์ ์ ๊ฐ๊ด์ ์ด๊ณ ๋ช ํํ ํ๋ก๊ทธ๋จ ์ฑ๋ฅ์ฐจ์ด๋ฅผ ํ ์คํธํ ์๋ฃ๋ ํ์ธํ์ง ๋ชปํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ๋ง๋ ํ๋ก๊ทธ๋จ์ ์ ํ์ ๋ฐ๋ผ์๋ ์ฑ๋ฅ ์ฐจ์ด๊ฐ ์์ ์ ์๊ธฐ ๋๋ฌธ์, ๊ฒฐ๊ตญ glibc์ musl libc๋ฅผ ์ฌ์ฉํ์ ๋์ ๋ด ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ์ง์ ํ ์คํธํด๋ณด์์ผ ์ ํํ๋ค.
๋ ๋ฒ์งธ๋ก, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด์์ด๋ค.
๊ธฐ๋ณธ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ๋์ง ์์ง๋ง,
์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ๋ช๋ช ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค, ๋ด๋ถ์์ ์ฐธ์กฐํ๋ ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ libc์ ์์กดํ ์๋ ์๋๋ฐ, ๋ง์ฝ glibc์ ์์กดํด์๋ค๋ฉด 'UnsatisfiedLinkError (๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ก๋ ์คํจ)' ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Native Library)๋?
์๋ฐ๊ฐ "์ด๊ฑฐ ๋น ๋ฅด๊ฒ ๊ณ์ฐํด์ค!"๋ผ๊ณ ๋ถํํ๋ฉด C๋ก ์ง ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ OS์ ์ง์ ๋ํํ๋ฉฐ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํด์ค.
ํน์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(java, python)์ด ์๋, ์ด์ ์ฒด์ ์์ ์ง์ ์คํ๋๋ ๊ธฐ๊ณ์ด(๋ฐ์ด๋๋ฆฌ)๋ก ์ปดํ์ผ๋ ์ฝ๋. ์ฃผ๋ก C๋ C++๋ก ์์ฑ๋๋ฉฐ, ์ฃผ๋ก C๋ C++๋ก ์์ฑ๋๋ฉฐ, OS ์ ์์ค ๊ธฐ๋ฅ์ ์ ๊ทผํ๊ฑฐ๋ ๊ณ ์ฑ๋ฅ ์์ ์ํํ ๋ ์ฌ์ฉ.
์ฌ๋ฌ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
์๋ฐ ๊ฐ์ ๊ฒฝ์ฐ JNI(Java Native Interface)๋ฅผ ํตํด .so(๋ฆฌ๋ ์ค)๋ .ddl(์๋์ฐ) ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํ๋ค. ๋๋ DB ๋๋ผ์ด๋ฒ, ์ํธํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๊ทธ๋ํฝ ์ฒ๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ผ๋ถ ๊ตฌํ ๋์ด์๋ค.
์๋ฅผ ๋ค๋ฉด, ์๋ฐ์์ Thread๋ฅผ ์์ฑ์์ ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํ๋ค. ์ค๋ ๋ ์ฌ์ฉ์ OS์ ์ต์ ํํ์ฌ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฒ์ด๋ผ๊ณ ์ถ์ธก๋๋ค. ์ฐธ๊ณ
Java์ Thread๊ฐ์๊ฒฝ์ฐ,
Thread.start0 -> JNI ๋ฅผ ํตํด JVM์ ๋ค์ดํฐ๋ธ ์ฝ๋(libjvm.so, libjava.so)ํธ์ถ
์ ๊ณผ์ ์ ๊ฑฐ์น๋๋ฐ JVM์ ๋ค์ดํฐ๋ธ ์ฝ๋๋ alpine ํ๊ฒฝ์ ๋ง๊ฒ musl libc๋ก ์ปดํ์ผ๋๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ์๋ค.
ํ์ง๋ง, ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ๋ค์ดํฐ๋ธ ์ฝ๋๊ฐ glibc์ ์์กดํ๋๊ฒฝ์ฐ์๋ ๋ฌธ์ ๊ฐ ๋๋ค.
์๋ฅผ๋ค์ด Oracle JDBC Driver๋ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก DB์ฐ๊ฒฐ์ ์ต์ ํํ๋ค. ์ด ๋ค์ดํฐ๋ธ ์ฝ๋๋ glibc์ ์์กดํด์๋ค.
์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฝ์ฐ, ๋ค์ดํฐ๋ธ ์ฝ๋๊ฐ ์ด๋ฏธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌํจ๋ ์ํ๋ก ๋ฐฐํฌ๋๊ธฐ ๋๋ฌธ์, ์ฌ์ปดํ์ผํ์ง ์๊ณ ๊ทธ๋๋ก ๊ฐ์ ธ์์ ์ฌ์ฉํ๋ค. ์ด ๋, ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
5. ๊ทธ๋ฌ๋ฉด ์ฐ์ง๋ง๊น?
์ฉ๋์ ์ค์ฌ์ ์ป๋ ์ด์ ์ด
- ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ํธํ์ฑ ์ด์
- glibc๋ฅผ ์ฌ์ฉํ๋ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ๋ณด๋ค ์ฑ๋ฅ์ด ๋๋ฆด ์ ์๋ ์ด์.
๋ณด๋ค ํฌ๋ค๋ฉด, ๋๋ ์ฌ์ฉํด๋ ๋๋ค๊ณ ๋ณธ๋ค.
์๋ฅผ ๋ค๋ฉด, ์ฉ๋ ์ ํ์ด ๋งค์ฐ ์ค์ํ ์๋ฒ ๋๋ ์์คํ ์ด๋ผ๋ฉด ์ ์ฉํด๋ณผ ์ ์๊ฒ ๋ค.
ํ์ง๋ง, ์ค๋ฌด์์๋ ์ฉ๋ ์ต๋ ๋ช GB๋ฅผ ์ค์ด์๊ณ ์์๊ฐ์ ๋ฆฌ์คํฌ๋ฅผ ์ง ํ์๊ฐ ์๋ค๊ณ ์๊ฐํ๋ค.
๊ทธ๋ฅ glibc๋ฅผ ์ฌ์ฉํ๋ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ์ ์ฌ์ฉํ๋๊ฒ ํจ์ฌ ์์ ์ ์ด๋ค.
๊ทธ๋ฌ๋ ์ฌ์ด๋ํ๋ก์ ํธ๋ก์๋ ์ฌ์ฉํด๋ ์ข๋ค๊ณ ์๊ฐํ๋ค.
- ์ด์๊ฐ ๋ ๋งํ ์ธ๋ถ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ผ์ด ์ ์.
- ํ๋ฆฌํฐ์ด ์ปดํจํ ์์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฉ๋์ด ์ ์๊ฒ ์ ๋ฆฌ.
- ์ฑ๋ฅ์ด ๋๋ ค๋ ํฌ๊ฒ ๋ฌธ์ ๊ฐ ๋์ง ์์.
๊ทธ๋์, ๋ด ์ฌ์ด๋ ํ๋ก์ ํธ์๋ ๋์ ํ๊ธฐ๋ก ๊ฒฐ์ฌํ๋ค.
์ฐธ์กฐ
https://jofestudio.tistory.com/138
https://blog.lablup.com/en/posts/2023/09/20/diet-of-containers/