ํ๋ DevOps์ ์์ง์ด์๋ Docker.
"์ปจํ
์ด๋"๋ผ๊ณ ํ๋ฉด ๊ณง "Docker"๋ฅผ ์๋ฏธํ๋ ์์ ์ด ์์์ฃ .
ํฌํฐ๋ธํ๊ณ ๋ฐ๋ณต ๊ฐ๋ฅํ๋ฉฐ, ๋ฏผ์ฒฉํ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ณตํ๋ ๋๊ตฌ๋ก ํ์ ์ ์ด๋์๋ Docker๋ ๊ฐ๋ฐยทํ
์คํธยท๋ฐฐํฌ ๋ฐฉ์์ ํฐ ๋ณํ๋ฅผ ๊ฐ์ ธ์์ต๋๋ค.
ํ์ง๋ง 2025๋
์ด ๋๊ณ ์๋ ์ปจํ
์ด๋ ์ํ๊ณ๋ ๋ ์ด์ Docker๋ง์ ๋
์ฃผ ๋ฌด๋๊ฐ ์๋๋๋ค.
๋ง์ ๊ธฐ์
๊ณผ ๊ฐ๋ฐ์๋ค์ด ์ด์ ๋ ๋ ๊ฐ๋ณ๊ณ , ๋ณด์์ ๊ฐํ๋ฉฐ, Kubernetes ์นํ์ ์ธ ๋์์ผ๋ก ๋์ ๋๋ฆฌ๊ณ ์์ฃ .
๊ทธ๋ผ Docker๋ ์ ๋ง ๋๋ฌ์๊น์?
์์ง์ ์๋๋๋ค.
ํ์ง๋ง ์ฑ๋ฅ, ๋ณด์, ์ ์ฐ์ฑ, ๋น์ฉ ์ธก๋ฉด์์ ๊ฒฝ์์๋ค์๊ฒ ๋ฐ๋ฆฌ๊ณ ์๋ ๊ฒ๋ ์ฌ์ค์
๋๋ค.
์ด๋ฒ ๊ธ์์๋, ์ ์ด๋ฐ ๋ณํ๊ฐ ์ผ์ด๋๊ณ ์๋์ง ๊ทธ ๋ฐฐ๊ฒฝ์ ํ๋์ฉ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๐ฅ Docker๊ฐ ํ๋ค๋ฆฌ๊ณ ์๋ ์ด์
1. ์ ๋ฃํ๋ Docker Desktop ๋ผ์ด์ ์ค ์ ์ฑ
Docker๋ ๊ฐ์ธ ์ฌ์ฉ์๋ ์๊ท๋ชจ ํ์๊ฒ ์ฌ์ ํ ๋ฌด๋ฃ์ง๋ง,
๊ธฐ์
์ฌ์ฉ์๋ Docker Desktop์ ์ฐ๊ธฐ ์ํด ์ ๋ฃ ๊ตฌ๋
์ ํด์ผ ํฉ๋๋ค.
์ด ์ ์ฑ
๋ณํ๋ ๋ง์ ํ์ ์ค๋ง์ ์๊ฒผ๊ณ ,
"๊ตณ์ด Docker์ ์์กดํ ํ์๊ฐ ์์๊น?"๋ผ๋ ์๋ฌธ์ ํ๊ฒ ๋ง๋ค์์ต๋๋ค.
๋น์ฉ ๋ถ๋ด ์์ด ์ฌ์ฉํ ์ ์๋ ์คํ์์ค ๋์์ ์ฐพ๊ธฐ ์์ํ ๊ฑฐ์ฃ .
2. macOS์ Windows์์์ ์ฑ๋ฅ ์ ํ
Linux์์ Docker๊ฐ ๋น ๋ฅด๊ฒ ์ ์๋ํ์ง๋ง,
macOS๋ Windows์์ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
Docker๋ ๋ด๋ถ์ ์ผ๋ก ๊ฐ์ ๋จธ์ (VM)์ ์ฌ์ฉํด Linux ์ปจํ
์ด๋๋ฅผ ์๋ฎฌ๋ ์ด์
ํ๋๋ฐ,
์ด๋ก ์ธํด ๋น๋ ์๋๊ฐ ๋๋ ค์ง๊ณ CPU ์ฌ์ฉ๋ฅ ์ด ๋์์ง๋ฉฐ ๋ฐฐํฐ๋ฆฌ๋ ๋นจ๋ฆฌ ๋ณ์ต๋๋ค.
๋ฐ๋ฉด ์ต๊ทผ ๋ฑ์ฅํ Finch, Lima ๊ฐ์ ๋์์ ๋ ํจ์จ์ ์ธ ๊ฐ์ํ ํ๊ฒฝ์ ์ ๊ณตํ๋ฉฐ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๊ฐ์ ํ๊ณ ์์ต๋๋ค.
3. ๋ณด์ ๋ฌธ์ : ๋ฃจํธ ๊ถํ ๋ฐ๋ชฌ ์ฌ์ฉ
Docker๋ ์ค์ ๋ฐ๋ชฌ(docker daemon)์ ๋ฃจํธ ๊ถํ์ผ๋ก ์คํํฉ๋๋ค.
์ด๋ ๋ณด์ ์ทจ์ฝ์ ์ ๋์ด๋ ๊ตฌ์กฐ๋ก, ์ด์ ํ๊ฒฝ์์ ํนํ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค.
๋ฌผ๋ก Docker๋ rootless ๋ชจ๋๋ฅผ ์ง์ํ๊ธด ํ์ง๋ง,
์ฒ์๋ถํฐ ๋น๋ฃจํธ(Non-root) ํ๊ฒฝ์ ์ผ๋์ ๋๊ณ ๊ฐ๋ฐ๋ Podman๊ณผ ๊ฐ์ ๋์์ด ๋ ์์ ํ ์ ํ์ด ๋๊ณ ์์ต๋๋ค.
4. ๋ชจ๋ํ ํ๋ฆ์ ๋ง์ง ์๋ ์ผ์ฒดํ ์ํคํ ์ฒ
Docker๋ ์์ฒด ์ค์ผ์คํธ๋ ์ด์
(Swarm), ๋ ์ง์คํธ๋ฆฌ(Docker Hub), CLI๊น์ง ๋ค ํตํฉ๋ ์ฌ์ธ์ ๋๊ตฌ์์ต๋๋ค.
์ด ๋์ ์ฒ์์๋ ํธํ์ง๋ง, ์์ฆ์ ํ๋ฆ์ด ๋ค๋ฆ
๋๋ค.
- ์ค์ผ์คํธ๋ ์ด์ ์ Kubernetes๊ฐ ๋์ธ
- ํจํค์ง์ Helm์ด ์ฒ๋ฆฌ
- ์ปจํ ์ด๋ ๋ฐํ์์ containerd๋ CRI-O๊ฐ ๋ด๋น
์์ฆ์ ํนํ๋ ๋๊ตฌ๋ค์ ์กฐํฉํด ์ฌ์ฉํ๋ ๋ฐฉํฅ(๋ชจ๋ํ)์ด ์ฃผ๋ฅ์ด๊ณ ,
Docker๋ ์คํ๋ ค ๋ฌด๊ฒ๊ณ ์ ์ฝ์ด ๋ง์ ๋๊ตฌ๋ก ์ฌ๊ฒจ์ง๊ธฐ ์์ํ์ต๋๋ค.
5. ๋ฒค๋ ์ข ์์ ๋ํ ์ฐ๋ ค
Docker๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์๋ค์ฌ์ง๊ณ ์์ง๋ง,
Dockerfile ๋ฌธ๋ฒ์กฐ์ฐจ๋ ์คํ ํ์ค์ด ์๋ Docker ๋
์ ํฌ๋งท์
๋๋ค.
๋ฐ๋ฉด ์ปจํ
์ด๋ ์ด๋ฏธ์ง(OCI Image), ๋ฐํ์(OCI Runtime) ๊ฐ์ ํ์ค ๊ธฐ๋ฐ์ ์คํ ํด์ฒด์ธ์ ๋ ๋ง์ ์ ์ฐ์ฑ๊ณผ ํธํ์ฑ์ ์ ๊ณตํฉ๋๋ค.
๊ฐ๋ฐ์๋ค์ ์ ์ ๋ ํ ๋ฒค๋์ ์ข
์๋์ง ์๋ ๋๊ตฌ๋ฅผ ์ ํธํ๊ฒ ๋์์ต๋๋ค.
๐ Docker์ ๋์์ผ๋ก ๋ถ์ ์ค์ธ ์ปจํ ์ด๋ ๋ฐํ์๋ค
์ด์ ๋ Docker ๋ง๊ณ ๋ ์ ํ์ง๊ฐ ๋ง์ต๋๋ค.
๊ฐ ๋ฐํ์์ ๋ณด์์ฑ, ์ฑ๋ฅ, ํ์ฅ์ฑ, ์คํ์ฑ ๋ฑ ์์ ๋ง์ ๊ฐ์ ์ ๋ฐํ์ผ๋ก ์๋ฆฌ ์ก๊ณ ์์ด์.
โ Podman โ ๋ฐ๋ชฌ์ด ์๋ ๋ณด์ ์ค์ฌ ์ปจํ ์ด๋
Red Hat์ด ๋ง๋ Podman์ Docker์ CLI๊ฐ ๊ฑฐ์ ๋์ผํ๋ฉด์๋
๋ฐ๋ชฌ ์์ด ๋์ํ๊ณ , ๋ฃจํธ ๊ถํ์ด ํ์ ์๋ ๊ตฌ์กฐ์
๋๋ค.
- ๋ณด์์ ๋ฏผ๊ฐํ ํ๊ฒฝ์ ์ ํฉ
- ๊ธฐ์กด Docker ๊ธฐ๋ฐ ์ํฌํ๋ก์ฐ๋ ์์ฝ๊ฒ ๋ง์ด๊ทธ๋ ์ด์ ๊ฐ๋ฅ
โ containerd โ Kubernetes์ ๊ธฐ๋ณธ ๋ฐํ์
Docker์์ ๋ถ๋ฆฌ๋์ด CNCF๊ฐ ๊ด๋ฆฌํ๋ containerd๋
Kubernetes 1.24๋ถํฐ ๊ณต์ ์ง์๋๋ ๊ธฐ๋ณธ ์ปจํ
์ด๋ ๋ฐํ์์
๋๋ค.
- ์ค์ง ์ปจํ ์ด๋ ๋ผ์ดํ์ฌ์ดํด ๊ด๋ฆฌ์ ์ง์ค
- AWS(EKS), GCP(GKE), Azure(AKS)์์๋ ์ฑํ
- ๊ฐ๋ณ๊ณ ์์ ์ , ํ์ฅ ๊ฐ๋ฅ
โ CRI-O โ Kubernetes์ ์ต์ ํ๋ ๋ฐํ์
CRI-O๋ ์ด๋ฆ์ฒ๋ผ Container Runtime Interface์๋ง ์ง์คํ ๋ฐํ์์ ๋๋ค.
- Kubernetes ์ธ ์ํฌ๋ก๋๋ ์ง์ํ์ง ์์
- ๋ถํ์ํ ๊ธฐ๋ฅ์ ์ ๊ฑฐํด ๊ฐ๋ณ๊ณ ๋ณด์์ ์ต์ ํ๋ ํ๊ฒฝ ์ ๊ณต
- Red Hat OpenShift์ ๊ธฐ๋ณธ ๋ฐํ์
โ Lima & Finch โ macOS ๊ฐ๋ฐ์๋ฅผ ์ํ ์ต์ ๋์
Docker Desktop์ ์ฑ๋ฅ ๋ฌธ์ ๋ก ์ธํด ๋ฑ์ฅํ macOS์ฉ ๋์:
- Lima: macOS์์ ๊ฒฝ๋ VM ๊ธฐ๋ฐ์ Linux ํ๊ฒฝ ์ ๊ณต
- Finch: AWS๊ฐ ํ์ํ๋ ํ๋ก์ ํธ. Lima ๊ธฐ๋ฐ + nerdctl ์ฌ์ฉ
- Docker Desktop์ ๋์ฒดํ๋ฉด์๋ ์ฑ๋ฅ๊ณผ ๊ฐ๋ฒผ์ ๋ชจ๋ ํ๋ณด
๊ธฐํ ๋๊ตฌ๋ค๋ ์ฃผ๋ชฉํ ๋งํฉ๋๋ค
- nerdctl: Docker์ ๊ฑฐ์ ๊ฐ์ CLI๋ก containerd๋ฅผ ์ ์ดํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ
- Buildah: ๋ฐ๋ชฌ ์์ด ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ์ ์๋ ๋๊ตฌ (CI/CD ํ์ดํ๋ผ์ธ์ ์ ํฉ)
- Firecracker (AWS): ์๋ฒ๋ฆฌ์ค ํ๊ฒฝ์ ์ํ ์ด๊ฒฝ๋ MicroVM ๋ฐํ์ (Lambda, Fargate ๊ธฐ๋ฐ)
๐ฌ ๊ทธ๋ผ Docker๋ ์ด์ ์ ์จ๋ ๋ ๊น?
๊ผญ ๊ทธ๋ ์ง ์์ต๋๋ค.
์์ง๋ Docker๋ ๋ก์ปฌ ๊ฐ๋ฐ ๋ฐ ํ
์คํธ ํ๊ฒฝ์์ ๋งค์ฐ ํธ๋ฆฌํ๊ณ ,
Docker Compose๋ ์ฌ์ ํ ์ ์ฉํฉ๋๋ค.
ํ์ง๋ง ์๋์ ๊ฐ์ ๊ฒฝ์ฐ์ ๋์์ ๊ณ ๋ คํ ๊ฐ์น๊ฐ ์์ต๋๋ค:
์ํฉ | ๊ถ์ฅ ๋์ |
---|---|
Kubernetes ํด๋ฌ์คํฐ ์ด์ ์ค | containerd, CRI-O |
๋ณด์์ด ์ค์ํ ํ๊ฒฝ | Podman (๋น๋ฃจํธ ์คํ) |
macOS ์ฌ์ฉ์ | Finch ๋๋ Lima |
CI/CD์์ ์ด๋ฏธ์ง ๋น๋๋ง ํ์ | Buildah |
์คํ์์ค & ํ์ค ๊ธฐ๋ฐ ๋๊ตฌ ์ ํธ | Docker โ ํ์ค ๋ฐํ์์ผ๋ก ์ ํ ๊ณ ๋ ค |
๐งญ ์ปจํ ์ด๋์ ๋ฏธ๋๋?
Docker๋ ์ฌ๋ผ์ง๊ณ ์๋ ๊ฒ ์๋๋ผ ์งํํ๊ณ ์๋ ์ค์
๋๋ค.
์ปจํ
์ด๋ ์ํ๊ณ๋ ์ด์ ํ์คํ, ๊ฒฝ๋ํ, ์คํ ํด ์ค์ฌ์ผ๋ก ์ด๋ํ๊ณ ์์ต๋๋ค.
Docker๊ฐ ๋ฌธ์ ์ด์๋ ์ปจํ
์ด๋ ์ธ์์ ์ด์
๋ ๋ง์ ํ๋ ์ด์ด๊ฐ ํจ๊ป ๋ง๋ค์ด๊ฐ๋ ์ฑ์ํ ์ํ๊ณ๋ก ์ฑ์ฅํ์ต๋๋ค.
๊ฒฐ๋ก :
์ปจํ ์ด๋์ ๋ฏธ๋๋ ํ ๊ฐ์ง ํด์ด ๋ ์ ํ๋ ๊ฒ์ด ์๋๋ผ,
๋ชฉ์ ์ ๋ง๊ฒ ์ต์ ์ ์กฐํฉ์ ์ ํํ๋ ๋ชจ๋ํ ๊ตฌ์กฐ์ ์์ต๋๋ค.
๐ฌ ์ฌ๋ฌ๋ถ์ ์ ํ์?
ํน์ ์ด๋ฏธ Docker ๋์ Podman์ด๋ containerd๋ฅผ ์ฌ์ฉํ๊ณ ๊ณ์ ๊ฐ์?
์ด๋ค ๋๊ตฌ๊ฐ ๊ฐ์ฅ ํจ์จ์ ์ด์๋์ง, ๊ฒฝํ์ ๊ณต์ ํด์ฃผ์ธ์!
์ปจํ
์ด๋ ๊ธฐ์ ์ ๋ฏธ๋๋ ๊ฐ๋ฐ์๋ค์ด ํจ๊ป ๋ง๋ค์ด๊ฐ๋๋ค.
๋น์ ์ ์ ํ์ด ๊ทธ ๋ฐฉํฅ์ ๊ฒฐ์ ํ๊ฒ ๋ ์ง๋ ๋ชจ๋ฆ
๋๋ค.