๋ณ๋ค๋ฅธ ์๋ก์ด ๋ด์ฉ์ ์์
Docker ์ ์ญ์ฌ
- ๋์ปค, ์ฟ ๋ฒ๋คํฐ์ค์ ๋ํ ๊ฐ๋ตํ ๊ฐ๊ด
์ถ๋ฐ
- chroot
- ๊ฒ์คํธ User์๊ฒ ๋ ๋ฆฝ๋ ๋ฃจํธ ์ ๊ณต
- namespace, cgroup
- Namespace : ํ๋ก์ธ์ค ๋ ๋ฆฝ => pid๊ฐ ๊ฐ์ ์ ์๋ค.
- Cgroup : control group, ํ๋์จ์ด ์์ ๋ถ๋ฐฐ
- Hypervisor ์ข ๋ฅ
- Virture Box
- Xen
- KVM -> OVS
- VMWARE.. -> NSX
- Hyper-V
- OS/๋ฌผ๋ฆฌ๋จธ์ ๊ฐ์ํ => Hypervisor
- ๋คํธ์ํฌ ๊ฐ์ํ => VXLAN, Overlay Network
- OSI 1~ 7๋ ์ด์ด
- 2๋ ์ด์ด์ ํ๋กํ ์ฝ์ 3๋ ์ด์ด์ ๊ตฌํ
- 1๋ ์ด์ด -> 2๋ ์ด์ด ->
- ์ ์ก๊ณ์ธต์ IP๊ณ์ธตโฆ
- Flannel. Weeave, calico โฆ.=> ์ฟ ๋ฒ๋คํฐ์ค์์ ์ฐ์ด๋ ๊ฐ์ ๋คํธ์ํฌ Ingressโฆ
- ํ์ผ์์คํ ๊ฐ์ํ
- ์ผ์ชฝ๊บผ์์
- App1 ์ด printf() -> ๊ธฐ๊ณ์ด
- LXC ๋?
- ๋ฆฌ๋ ์ค์์, ๋จ์ผ ํธ์คํธ์ ์ฌ๋ฌ ๊ฐ ๊ณ ๋ฆฝ๋ ๋ฆฌ๋ ์ค ์์คํ ์ ์คํํ๊ธฐ ์ํ ์ด์์ฒด์ ๋ ๋ฒจ์์์ ๊ฐ์ํ ๋ฐฉ๋ฒ.
- ์ด์ ํ๊ฒฝ์ ๋ํด ์๋ฒฝํ ๊ณ ๋ฆฝ์ ์ ๊ณต
- ๋ค์ํ ์คํ ๋๋ผ์ด๋ฒ ์กด์ฌ (์ด๋ฐ์๋ ๋์ปค๋ LXC ๊ธฐ๋ฐ)
- ๊ตฌ์ฑ์์
- liblxc ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- API์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋ฐ์ธ๋ฉ :
- ์ปจํ ์ด๋ ์ ์ด๋ฅผ ์ํ ํ์ค ๋๊ตฌ ์ธํธ
- ๋ฐฐํฌํ์ฉ ์ปจํ ์ด๋ ํ ํ๋ฆฟ
- https://www.44bits.io/ko/keyword/linux-container#%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EB%9F%B0%ED%83%80%EC%9E%84
- ์ปจํ ์ด๋ ๋ฐํ์
- ๋์ปค vs LXC
- ๋์ปค์๋ ์บก์ฒ ๊ธฐ๋ฅ ์กด์ฌ(์ปจํ ์ด๋ ์ด๋ฏธ์ง)
- LXC -> libcontainer๋ก ๋ณ๊ฒฝ
- ์ข ๋ฅ
- ๋์ปค(containerd)
- Runc
- ๊ฒฝ๋ ์ปจํ ์ด๋ ๋ฐํ์
- CRI-O
- ํฌ๋ฆฌ-์ค
- ์ฟ ๋ฒ๋คํฐ์ค์ฉ ๊ฒฝ๋ ์ปจํ ์ด๋ ๋ฐํ์
- Podman
- Docker engine ์ ๋ ์ญํ .
- Rancherโฆ RKS => K3S
- Minicube => ๋ ธ๋ 1๋๋ก ๋ชจ๋ ์ญํ ..
- OCI์คํ
- ์ปจํ ์ด๋ ๊ด๋ฆฌ๋๊ตฌ ํ์ค
- ๋์ปค๋?
- Dockerd (๋์ปค ๋ฐ๋ชฌ), docker(๋์ปค ํด๋ผ์ด์ธํธ), ์ด๋ฏธ์ง ์ ์ฅ์ ๋ฑ์ผ๋ก ๊ตฌ์ฑ
- ํ๊ณ
- Docker Daemon์ ์กด์ฌ
- ํธ์คํธ์ ๋ค๋ฅธ ์ด์ ๋ก OS ์์ ํ ๋น์ด ์ด๋ ค์ธ ๋, ๋์ปค ์์ ์ดํ๋ฆฌ์ผ์ด์ ๋ชจ๋ ๋์ํ์ง ์์.
- ๋์ : Podman ๋ฑ
- Podman : Daemonless, ๋ฐ๋ชฌ ์์ด ์ปจํ ์ด๋ ๋์ ๊ฐ๋ฅ
- Dockerd์ ์ญํ ?
Docker Daemon์ HTTP ๊ธฐ๋ฐ REST API๋ฅผ ์ ๊ณตํ์ฌ Docker Client๊ฐ Container๋ฅผ ์ ์ดํ๊ณ ์ด์ฉํ ์ ์๊ฒํ๋ค. Docker Client๋ก๋ถํฐ ๋ฐ์ ์์ฒญ์ค์์ ๋๋ถ๋ถ์ dockerd๊ฐ ๊ตฌ๋์ํจ containerd์๊ฒ ์ฒ๋ฆฌ๋ฅผ ์์ํ๊ณ , ์ผ๋ถ ์์ฒญ๋ง ์ง์ ์ฒ๋ฆฌํ๋ค. dockerd๋ containerd ๊ตฌ๋, Docker Image Build (Dockerfile), Container Network ์ค์ (Bridge, iptables), Container Log ๊ธฐ๋ก, docker-proxy ๊ตฌ๋ ๋ฑ์ ์ญํ ์ ์ํํ๋ค.
Docker Daemon์ REST API๋ ๊ธฐ๋ณธ์ ์ผ๋ก "/var/run/docker.sock" ํ์ผ์ Unix Domain Socket์ ํตํด์ ์ ๊ณต๋๋ฉฐ Docker Daemon์ Opiton์ ๋ณ๊ฒฝ์ ํตํด์ TCP Socket์ ์ด์ฉํ๋๋ก ๋ณ๊ฒฝํ ์๋ ์๋ค.
- UDS => TCP/UDP๋ฅผ ํ์ผ๋ก Local์์ ํ์ฉํ ์ ์๊ฒ ํด์ฃผ๋โฆ.
- Docker Swarm?
- ์์์ ๋งํ TCP Socket์ ์ด์ฉํ๋๋ก ํ์ฌ, Rest API ํ๊ฒฝ์์ ์ฌ๋ฌ Docker ์คํ ํธ์คํธ๋ค์ ๊ด๋ฆฌ, ์ปจํ ์ด๋๋ค์ ๋ํ ๊ฐ๋จํ Orchestration ์ ๊ณต
- ๋ ํ๋ฆฌ์นด, Rolling ๋ฐฐํฌ ๋ฑ ๊ธฐ๋ฅ ์ง์
- ์ค๋ฒ๋ ์ด ๋คํธ์ํฌ (ingress) ์ ๊ณต
- Docker Compose?
- Docker ์ด๋ฏธ์ง๋ฅผ ์ฝ๊ฒ ์ ์ํ ์ ์๋๋ก ํ ์๋ํ ํ๊ฒฝ
- Docker ํ๊ฒฝ์ ๋ํ ์ค์ , Execution ํฌ์ธํธ ๋ฑ ์ ๊ณต
- ์ฟ ๋ฒ๋คํฐ์ค?
- ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ํด
- ์์ธํ๊ฑด ๋ฐฐ์๋๊ฐ์!
ย