[DevOps] ์ Docker๋ ์ปจํ ์ด๋ ๋น๋ ๋๊ตฌ ์ ํ์ง์์ ์ ์ ๋ฐฐ์ ๋ ๊น?
์ต๊ทผ ํ์ฌ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ๋ฐฉ์์ด ๋ณ๊ฒฝ๋๋ฉด์ ํ์ฌ์์ ๋งก๊ณ ์๋ ํ๋ก์ ํธ ๋ํ ๋ณ๋์ ๋ฐฐํฌ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ํ์ ๊ด๋ฆฌ ์์คํ (Github, Gitlab)์ ๋ฐฐํฌ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ฒ ๋์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ, ๋ง์ด๊ทธ๋ ์ด์ ํ๋ฉด์ ์ฌ์ฉํ๊ณ ์๋ CI/CD ๋๊ตฌ๊ฐ Docker executor๊ฐ ์๋ k8s executor๋ฅผ ์ฌ์ฉํ๊ณ ์์๊ณ , ์ฌ๊ธฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์ด๋๋ก ๋น๋ํ ๋ ์ฌ์ฉํ๋ ๋๊ตฌ ๋ํ Docker๊ฐ ์๋ Kaniko๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ์ ์ ์๊ฒ ๋์์ต๋๋ค.
Docker์ ๋จ์
๊ฐ๋ Docker๋ฅผ ์ฌ์ฉํ๋ฉด์ ์ด๋ฐ ์๊ฐ์ด ์ข ์ข ๋ค์์ต๋๋ค.
- ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ๋ฐฐํฌํ๊ธฐ ์ํด, ๊ตณ์ด Docker Engine์ ์ค์นํด์ผ ํ ๊น?
- Docker์์๋ ๋น๋๋ง์ ์ํ SDK๋ ์ ๊ณตํ์ง ์๋๊ฑธ๊น?
์ด๋ฐ ์๊ฐ์ ํ๊ฒ ๋ ๊ณ๊ธฐ๋ Github Actions, Jenkins๋ฅผ ์ด์ฉํด์ CI/CD ์๋ํ๋ฅผ ํ๋ฉด์๋ถํฐ์์ต๋๋ค. Docker Engine ์์ฒด๋ ๋ง์ ๊ถํ์ ์๊ตฌํ๊ณ , ์ค์น ๋ฆฌ์์ค๊ฐ ํฌ๊ธฐ ๋๋ฌธ์ ๋น๋๋ง์ ์ํ ๋๊ตฌ๋ผ๊ณ ๋ณด๊ธฐ๋ ์ด๋ ค์ ์ต๋๋ค. ๋ฐ๋ผ์ ๋์ ์ธ์คํด์ค ๋น์ฉ์ด ๋ค์ด๊ฐ๋ CI/CD ์์ ์๋ ๋๋ฌด ๊ณผ๋ํ ๋๊ตฌ์์ฃ .
Docker๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์นํ๊ฒ ๋๋ฉด ์์ ๊ฐ์ ๊ตฌ์กฐ์ ํํ๋ก ์ค์นํ๊ฒ ๋ฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Docker ๋ช ๋ น์ ์ํํ๊ธฐ ์ํ ํ๋ก๊ทธ๋จ์ธ Docker Client์ ๊ทธ ๋ช ๋ น์ ๋ฐ์์ฃผ๋ Docker Host๋ก ๋๋๋๋ฐ, ์ด Docker Host์๋ Docker Daemon์ด ํฌํจ๋์ด ์์ผ๋ฉฐ ์ด๋ ๋น๋ํ ๋ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ ์ค์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ์คํํ๋ ์ญํ ์ ํฉ๋๋ค. ๋ฟ๋ง ์๋๋ผ Host OS์ ๋ํด ๊ด๋ฆฌ์ ๊ถํ(Root Privileges)์ ์๊ตฌํ์ฌ ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ๋์ ํ๋ ๋ฐ ํ์ ์ด์์ ๊ถํ์ ์ถ์ถํ๊ธฐ ๋๋ฌธ์ ์๋ฌด๋๋ ๋น๋๋ง์ ์ํด ์ฌ์ฉํ๋ค๋ฉด ์กฐ๊ธ ๊บผ๋ ค์ง๊ฒ ๋ฉ๋๋ค.
Docker ์ด์ธ์ ์ปจํ ์ด๋ ๋น๋ ๋๊ตฌ
๊ทธ๋์ ๋ช ๊ฐ์ง ์กฐ์ฌ๋ฅผ ํด๋ดค๋๋ฐ, ์ด๋ฏธ ๋ค๋ฅธ ๊ณณ์์ ์ด๋ฌํ ๋จ์ ์ ์บ์นํ๊ณ ๋ค์ํ ์ปจํ ์ด๋ ๋น๋ ๋๊ตฌ๋ฅผ ๊ฐ๋ฐํด๋์ ๊ฒ์ด ์ฌ๋ฟ ์์์ต๋๋ค. ํนํ ์ฟ ๋ฒ๋คํฐ์ค(Kubernetes)๋ฅผ ๊ฐ๋ฐํ Google์์๋ ์ฟ ๋ฒ๋คํฐ์ค์ ์ปจํ ์ด๋ ํ๊ฒฝ์ Docker๋ก ์ฌ์ฉํ์ ๋ ์ถ๊ฐ ๋ฐ๋ชฌ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ๊ณ , ํ์ ์ด์์ ๊ถํ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ํด ๋ณด์ ์ทจ์ฝ์ ์ด ์๊ธธ ๊ฒ์ ์ฐ๋ คํ์๋์ง๋ ๋ชฐ๋ผ๋ ์ฟ ๋ฒ๋คํฐ์ค์์ Dockershim Container Runtime์ด ์ด๋์๊ฐ ์ ๊ฑฐ๋ ๊ฑธ ์ ์ ์์์ต๋๋ค.
์ฌ์ค ์ปจํ ์ด๋ ๊ธฐ์ ์ด ๊ฐ๊ด๋ฐ๊ธฐ ์์๋ ์ดํ ๊ฐ์๋จธ์ ๊ณผ ๋์ผํ๊ฒ ์ปจํ ์ด๋ ๋ํ ์ ๊ณ ๊ฐ๋ฐฉํ ํ์ค ๊ธฐ์ ๊ท์ฝ์ด ํ์ํ๋ค๊ณ ํ๋จํ์ฌ ์๊ธฐ๊ฒ ๋ ๊ฒ์ด ๋ฐ๋ก OCI(Open Container Initiative)์ธ๋ฐ, ๋น์ Docker์ Redhat์ด ์๋ก ๋ค๋ฅธ ์ปจํ ์ด๋ ๊ท๊ฒฉ์ ์ฌ์ฉํ๊ฒ ๋๋ฉด์ ์๋ก๊ฐ ์์ ๋ค์ ํ์คํ๋ฅผ ์ฃผ์ฅํ๋ ๋ฌด๋ ต 2016๋ 5์์ ๊ฐ์ต๋ DockerCon 2015์์ ์ด ํ์ค์ด ์ ์ธ๋์๊ณ , ์ดํ 2๋ ๋ค์ OCI v1.0์ด ๋์ค๊ฒ ๋์์ง์. ๊ณ ๋ก ์ฐ๋ฆฌ๋ ๊ตณ์ด Docker๋ฅผ ์ฌ์ฉํ์ง ์์๋ ์ปจํ ์ด๋ ๋น๋๊ฐ ๊ฐ๋ฅ.
(์ฐธ์กฐ: https://opencontainers.org/ )
๊ทธ๋ ๋ค๋ฉด Docker ์ด์ธ์ ์ปจํ ์ด๋ ๋น๋ ๋๊ตฌ์๋ ์ด๋ค ๊ฒ์ด ์์๊น์?
- Kaniko
- Buildkit
- Buildah
- Buildpack
Kaniko๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์์ ๋ด๋ถ์ Dockerfile์ ์ด์ฉํด ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋๊ตฌ๋ก ์์ง ๊ตฌ๊ธ์ ์ ์ ์ปจํ ์ด๋ ๋๊ตฌ๋ ์๋์ง๋ง GoogleContainerTools Github์ ๊ท์๋์ด ์๋ ๋น๋ ๋๊ตฌ์ ๋๋ค. Docker์ ๋ง์ฐฌ๊ฐ์ง๋ก root ๊ถํ์ ํ์๋ก ํ์ง๋ง Host OS๊ฐ ๊ฐ์ง root ๊ณ์ ์ ๊ถํ๊น์ง๋ ๊ท์ํ์ง ์์ ๋ณด์ ์ทจ์ฝ์ ๋ ธ์ถ์ Host OS์๋ ์ํฅ์ ๋ฐ์ง ์๋๋ค๋ ๊ฒ์ ์ฐจ์ด๊ฐ ์์ต๋๋ค. (https://github.com/GoogleContainerTools/kaniko)
Buildkit์ mody์์ ๊ฐ๋ฐํ ๋น๋ ๋๊ตฌ๋ก ๊ธฐ์กด์๋ Docker ํ์ ์์๋ค ๋ถ๋ฆฌ๋์ด, ์ปจํ ์ด๋ ๋น๋์ ์ด๋ฏธ์ง ๋ ์ด์ด ๋ณ๋ ฌ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ , ARM ํ๋ก์ธ์์ ๊ฐ์ ์ด๊ธฐ์ข ํ๋์จ์ด ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๋น๋๋ฅผ ์ง์ํ๋ ๋น๋ ๋๊ตฌ์ ๋๋ค. ์ค์ Docker์์๋ 18.09๋ฒ์ ์์ docker buildx ๋ช ๋ น์ด๋ก ์ ๊ณตํ๋ฉฐ ์ต๊ทผ์๋ Macbook M1๊ณผ ๊ฐ์ ๋น ์ธํ ํ๋ก์ธ์ ์ปดํจํฐ์์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋น๋ ๋๊ตฌ์ ๋๋ค. (https://github.com/moby/buildkit)
Buildah๋ ๋ณดํต podman๊ณผ ํจ๊ป ์ฌ์ฉํ๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๋น๋ ๋๊ตฌ๋ก Rootless ๋ฒ์ ์ ์ง์ํ์ฌ kaniko, buildkit๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก root ๊ถํ ์์ด ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ์ ์์ง๋ง ์๊ฒฉ ์บ์ ์ ์ฅ ๊ธฐ๋ฅ(Remote Caching)์ ์ง์ํ์ง ์์ ๋ก์ปฌ ํ๊ฒฝ ์ธ CI/CD ํ๊ฒฝ์์๋ ์ฌ์ฉํ๊ธฐ ์ ํฉํ์ง ์์ ๋น๋ ๋๊ตฌ์ ๋๋ค. (https://github.com/containers/buildah)
Buildpack์ 2011๋ heroku๊ฐ ์ฒ์ ๊ณ ์ํ ์ดํ Gitlab, Knative์ ๊ฐ์ PaaS์์ ์ ์์ผ๋ก ์ฑํํ ๋น๋ ๋๊ตฌ๋ก, ์ ์ผํ๊ฒ Dockerfile๊ณผ ๊ฐ์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๋น๋์ฉ ํ์ผ ์์ด ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก์ ํธ์ ์ค์ ์ฝ๋(requirements.txt, build.gradle.kts ๋ฑ)๋ง์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค. (https://github.com/buildpacks)
Docker๊ฐ ๋ฐฐ์ ๋๋ ์ด์ ๊ทธ๋ฆฌ๊ณ , ์ ํฉํ ๋น๋ ๋๊ตฌ๋ฅผ ๊ณ ๋ฅด๋ ค๋ฉด...
์์์ ๋ณด๋ค์ํผ ์ฌ๋ฌ ์ปจํ ์ด๋ ๋น๋ ๋๊ตฌ๋ค์ด ์์๊ณ , ํ์คํ ๋ก์ปฌ์์ Docker๋ฅผ ์ค์นํด ์ปจํ ์ด๋๋ฅผ ๋น๋ํด์ผ ํ ํ์ ์๊ณ , ๊ทธ๋ฐ ๊ณ ๋ฏผ๋ค์ด ์ด๋ฏธ ์์์ด ์ด๋ค์ง๊ณ ๊ทธ ํด๊ฒฐ์ฑ ์ด ๋์จ ์ํฉ์ ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ๋ด๊ฐ ์ด์ํ๊ณ ์๋ ์์คํ ์์ ๋ฐฐํฌ๋ฅผ ์ํด ์ฌ์ฉํด์ผ ํ ์ปจํ ์ด๋ ๋น๋ ๋๊ตฌ๋ฅผ ์ ํํด์ผ ํ๋ค๋ฉด ์๋์ ๊ฐ์ ์กฐ๊ฑด์ ๋ฐ์ ธ๋ณผ ํ์๊ฐ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
- ๋ฐฐํฌํ๋ ค๋ ์๋ฒ์ ํ๋ก์ธ์ ์ํคํ ์ฒ๊ฐ ๋ฉํฐ ์ํคํ ์ฒ์ธ๊ฐ?
- ๋ณ๊ฒฝ์ด ์ฆ์ ์์ฃผ ๋น๋๊ฐ ์ด๋ค์ ธ ์ธ์คํด์ค ๋น์ฉ์ด ๋์๊ฐ?
- ๋ฐฐํฌ ์๋ํ๋ฅผ ์ํ ๋น๋๋ผ๋ฉด, ์๋ํ ํ๊ธฐ ์ํ ์๋ฒ์ OS๊ฐ ๋ฌด์์ธ๊ฐ?
๋ฐฐํฌ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ ๊ฒ์ ๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ง์ ์์ ์ PC์์ ์๋์ผ๋ก ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ์ฌ ๋ ์ง์คํธ๋ฆฌ์ ํธ์(push)ํ ๋ค์ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ๋ ์๊ณ , Github Actions ํน์ Gitlab Runner, Jenkins์ ๊ฐ์ ์ธ๋ถ ๋ฐฐํฌ ์๋ฒ๋ฅผ ์ด์ฉํ์ฌ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ๋ ์์ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ฐ ๋ค์ํ ํ๊ฒฝ์์ ๋น๋๋ง์ ์ํด ์ปจํ ์ด๋๋ฅผ ์คํํ๊ธฐ ์ํ ์์ง, ๋ฐ๋ชฌ ํ๋ก์ธ์ค ๋ฑ์ ์ค์นํด์ ์ด์ํ๋ ๊ฒ์ ๋ฆฌ์์ค์์ผ๋ก๋ ๋นํจ์จ์ ์ธ๋ฐ๋ค root ๊ถํ, Privileged ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋ง์ฝ ํน์๋ผ๋ ๋ณด์ ์ทจ์ฝ์ ์ด ๋ฐ์ํ์ฌ ์์คํ ์ ๋ฐ์ ํผํด๋ฅผ ๋ฐ์์ํค๋ ์์ธ์ด ๋๊ธฐ ๋๋ฌธ์ ํ์ํ ๋น๋ ๋๊ตฌ๋ง ๋ฐ์ ์ ์๋ค๋ฉด ๊ทธ๊ฒ์ด ์ต๊ณ ์ ์ ํ์ผ ๊ฒ์ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ก์ปฌ PC์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ณ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ฒ ๋๋ฉด ์์ ์ ๋จธ์ ์ ๋ ์ด์ด๋ณ๋ก ์บ์๋ฅผ ๋จ๊ธฐ๊ณ ๋ค์์ ์ฌ๋น๋ํ ๋ ์ค๋ณต๋ ๋น๋ ๊ณผ์ ์ ์บ์์์ ๊ฐ์ ธ์ ๋น๋ ์๊ฐ์ ๋จ์ถํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฌํ ์บ์๋ ๋๋ถ๋ถ์ ๋น๋ ๋๊ตฌ์์ ์ง์ํ์ง๋ง ์๊ฒฉ ์๋ฒ์์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๊ฒฝ์ฐ ๋น๋ ๋๊ตฌ๊ฐ ์๊ฒฉ ์บ์ ์ ์ฅ ๊ธฐ๋ฅ์ ์ง์ํ๋์ง๋ฅผ ๊ฒํ ํด์ผ ํฉ๋๋ค.
ํ์์ ์์ค ์ฝ๋๋ฅผ ์ฌ๋ฆฐ ๋ค, ํ์ค ํ๊ฒฝ์์ ํ ์คํธ๋ฅผ ๋ง์น ํ ๋ฐฐํฌ ์ด๋ฏธ์ง๋ก ๋น๋ํ๋ ๊ฒฝ์ฐ ์์ ๊ฐ์ด ๋ณ๋์ ์๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ํ ์ ์์ต๋๋ค. ๊ฐ๋ น Github Actions ๋ด์ง Gitlab Runner์ ๊ฒฝ์ฐ, CI/CD์ฉ ์๋ฒ๊ฐ ์กด์ฌํ๊ณ ํ์ ๊ด๋ฆฌ ์์คํ ์์ ์ด๋ฒคํธ ๋ฐ์์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๋น๋๋ฅผ ์ํ ์ธ์คํด์ค๊ฐ ์์ฑ๋๋๋ฐ, ์ด ๋ ์ธ์คํด์ค๊ฐ ์์ฑ๋ ํ์๋ ํด๋น ์ธ์คํด์ค๋ ์๋ฉธ๋์ด ์์ด์ง๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์ ๋น๋ ์บ์๋ฅผ ์ฃผ์ ํ๋ ๊ฑด ๋ฌด์๋ฏธํ๋ฏ๋ก ๋ณ๋์ ์๊ฒฉ ์ ์ฅ์์ ๋น๋ ์บ์๋ฅผ ์ ์ฌํด์ผ ํฉ๋๋ค.
๋ฐ๋ผ์ ์ด๋ฐ ๊ฒฝ์ฐ Buildah ๋น๋ ๋๊ตฌ๋ ์ ํฉํ์ง ์์ผ๋ฉฐ ์ด ์ธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ๋ฌ ํ๊ฒฝ(๋ค๋ฅธ OS ํน์ ๋ค๋ฅธ CPU ์ํคํ ์ฒ)์์ ๋น๋๋์ด์ผ ํ๋ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ ํฉํ ๋น๋ ๋๊ตฌ๋ Buildkit์ ๋๋ค.
๋ง์น๋ฉฐ..
์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋ฐ๋ ์ฐ๋ฆฌ๊ฐ ๊ณผ๊ฑฐ๋ถํฐ ๋ณดํธ์ ์ผ๋ก ์ฌ์ฉํด์๋ Docker๊ฐ ์ฃผ๋ฅ๋ผ๊ณ ์๊ฐํ์ง๋ง OCI ํ์ค ๊ท์ฝ์ด ์๊ธฐ๋ฉด์ ๋ค์ํ ๋น๋ ๋๊ตฌ๋ก๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ์๋ฒ์ ๋ฐฐํฌํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
ํนํ Github Actions์ ๊ฐ์ ์๊ฒฉ ์๋ฒ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํ๊ณ ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ Docker๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ ๊ฒ์ ์๋์ง๋ง ๋ค์ํ ํ๊ฒฝ, ์ปดํ๋ผ์ด์ธ์ค ๋ฑ์ ๊ณ ๋ คํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค๋ฉด ์์ ๊ฐ์ ์ฌ๋ฌ ๋๊ตฌ๋ค์ ์ ๋น๊ตํด์ ์ฐ๋ ๊ฒ์ด ํ๋ช ํ ๊ฒ์ ๋๋ค. ๋ง์ฝ, ์ด๋ฌํ ์ผ์ด์ค๋ฅผ ๊ณ ๋ คํ๊ณ ์๋ค๋ฉด ์ด ๊ธ์ ํตํด์ ๋์์ ์ป์ด๊ฐ์ จ์ผ๋ฉด ํฉ๋๋ค.
'DevOps' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DevOps] M1 Macbook์์ Oracle Database ์ปจํ ์ด๋ ๋์ฐ๊ธฐ 1 (0) | 2023.10.22 |
---|