-
4. ์์ค๋ฅผ ์์ ํ๋ฉด Docker๋ ์ด๋ป๊ฒ ๋์ํ ๊น?DevOps 2026. 7. 23. 09:18

๐ Docker & Kubernetes ์๋ฆฌ์ฆ
์ด์ ๊ธ์์๋ Dockerfile์ ์ด์ฉํด Spring Boot ์ ํ๋ฆฌ์ผ์ด์ ์ Docker Image๋ก ๋ง๋๋ ๊ณผ์ ์ ์์๋ดค๋ค.
๊ทธ๋ฐ๋ฐ ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ์์ฐ์ค๋ฝ๊ฒ ์ด๋ฐ ์๋ฌธ์ด ์๊ธด๋ค.
"์์ค๋ฅผ ์์ ํ๋๋ฐ ์คํ ์ค์ธ Docker Container์๋ ์๋์ผ๋ก ๋ฐ์๋ ๊น?"
์ ๋ต์ ์๋๋ค.
Docker๋ฅผ ์ดํดํ ๋ ๊ฐ์ฅ ์ค์ํ ๊ฐ๋ ์ Docker Image๋ ๋ณ๊ฒฝ๋์ง ์๋๋ค๋ ๊ฒ(Immutable) ์ด๋ค.
์ฆ, ์์ค๋ฅผ ์์ ํ๋ค๊ณ ํด์ ๊ธฐ์กด Image๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒ์ด ์๋๋ผ, ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ํ ์๋ก์ด Image๋ฅผ ์์ฑํด์ผ ํ๋ค.
์ด๋ฒ ๊ธ์์๋ ์ด ๊ฐ๋ ์ ์ค์ฌ์ผ๋ก Docker๊ฐ ์ค์ ๋ก ์ด๋ป๊ฒ ๋์ํ๋์ง ์์๋ณด์.
Docker Container๋ Image๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ค
Docker์ ์คํ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
Spring Boot ํ๋ก์ ํธ โ โผ Gradle Build โ โผ JAR ์์ฑ โ โผ docker build โ โผ Docker Image ์์ฑ โ โผ docker run โ โผ Container ์คํ์ฌ๊ธฐ์ ์ค์ํ ์ ์ Container๋ Docker Image๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ค๋ ๊ฒ์ด๋ค.
์ฆ,
- Dockerfile์ Image๋ฅผ ๋ง๋ค ๋๋ง ์ฌ์ฉ๋๋ค.
- Container๋ ์ด๋ฏธ ๋ง๋ค์ด์ง Image๋ฅผ ๊ทธ๋๋ก ์คํํ๋ค.
Container๊ฐ ์คํ๋ ์ดํ์๋ Dockerfile์ด๋ ํ๋ก์ ํธ ์์ค๋ฅผ ๋ค์ ํ์ธํ์ง ์๋๋ค.
์์ค๋ฅผ ์์ ํด๋ Container๋ ๋ณํ์ง ์๋๋ค
์๋ฅผ ๋ค์ด ํ์ฌ ์คํ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด์.
Spring Boot ํ๋ก์ ํธ ↓ Docker Image A ↓ Container A ์คํ์ด ์ํ์์ Controller์ ์ฝ๋๋ฅผ ์์ ํ๋ค๊ณ ํด๋ณด์.
๊ธฐ์กด ์ฝ๋
@GetMapping("/hello") public String hello() { return "Hello Docker!"; }์์ ํ
@GetMapping("/hello") public String hello() { return "Hello World!"; }์์ค๋ฅผ ์์ ํ๋๋ผ๋ ์คํ ์ค์ธ Container์๋ ์๋ฌด๋ฐ ๋ณํ๊ฐ ์๋ค.
์๋ํ๋ฉด ํ์ฌ ์คํ ์ค์ธ Container๋ ๊ธฐ์กด Docker Image A๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ก๊ธฐ ๋๋ฌธ์ด๋ค.
ํ๋ก์ ํธ ์์ค๋ฅผ ์์ ํ๋ค๊ณ ํด์ ์ด๋ฏธ ์์ฑ๋ Image๋ ์คํ ์ค์ธ Container๊ฐ ์๋์ผ๋ก ๋ณ๊ฒฝ๋์ง๋ ์๋๋ค.
๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ํ๋ ค๋ฉด?
์์ค๋ฅผ ์์ ํ๋ค๋ฉด ๋ค์ ๊ณผ์ ์ ๋ค์ ์ํํด์ผ ํ๋ค.
- ํ๋ก์ ํธ ๋น๋
- ์๋ก์ด Jar ์์ฑ
- ์๋ก์ด Docker Image ์์ฑ
- ๊ธฐ์กด Container ์ข ๋ฃ
- ์๋ก์ด Container ์คํ
ํ๋ฆ์ผ๋ก ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
Spring Boot ์์ค ์์ โ โผ Gradle Build โ โผ ์๋ก์ด JAR ์์ฑ โ โผ docker build โ โผ ์๋ก์ด Docker Image ์์ฑ โ โผ ๊ธฐ์กด Container ์ข ๋ฃ โ โผ ์ Container ์คํ์ฆ, ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ๋ ค๋ฉด ์๋ก์ด Image๋ฅผ ์์ฑํ ํ ์๋ก์ด Container๋ฅผ ์คํํด์ผ ํ๋ค.
์ docker build๋ฅผ ๋ค์ ํด์ผ ํ ๊น?
Docker๋ฅผ ์ฒ์ ์ ํ๋ฉด ์ด๋ฐ ์๊ฐ์ ํ๊ธฐ ์ฝ๋ค.
"Container๋ง ๋ค์ ์คํํ๋ฉด ๋๋ ๊ฑฐ ์๋๊ฐ?"
ํ์ง๋ง docker run์ Image๋ฅผ ์คํํ๋ ๋ช ๋ น์ด์ผ ๋ฟ์ด๋ค.
Image ์์ฒด๊ฐ ๋ณ๊ฒฝ๋์ง ์์๋ค๋ฉด ์๋ก์ด Container๋ฅผ ๋ง๋ค์ด๋ ์ด์ ์ฝ๋๊ฐ ๊ทธ๋๋ก ์คํ๋๋ค.
์๋ฅผ ๋ค์ด,
docker run my-app์ ๋ค์ ์คํํ๋๋ผ๋ ์ฌ์ฉ๋๋ ๊ฒ์ ์ฌ์ ํ ๊ธฐ์กด Image์ด๋ค.
๋ฐ๋ผ์ ๋จผ์ ์๋ก์ด Image๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
./gradlew bootJar docker build -t my-app .๊ทธ ํ ์๋ก์ด Image๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Container๋ฅผ ์คํํด์ผ ์์ ๋ ์ฝ๋๊ฐ ๋ฐ์๋๋ค.
๊ฐ๋ฐ ํ๊ฒฝ์์๋ ๋งค๋ฒ Build๋ฅผ ํ์ง ์์๊น?
๋งค๋ฒ Build๋ฅผ ์ํํ๋ฉด ๊ฐ๋ฐ ์๋๊ฐ ๋๋ ค์ง ์ ์๋ค.
๊ทธ๋์ ๊ฐ๋ฐ ํ๊ฒฝ์์๋ Bind Mount(๋ณผ๋ฅจ ๋ง์ดํธ) ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
Bind Mount๋ฅผ ์ฌ์ฉํ๋ฉด ํธ์คํธ์ ์์ค ์ฝ๋์ Container ๋ด๋ถ๋ฅผ ์ฐ๊ฒฐํ์ฌ ํ์ผ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ๋ก ํ์ธํ ์ ์๋ค.
๋ฐ๋ฉด ์ด์ ํ๊ฒฝ์์๋ ์์ค ์ฝ๋๋ฅผ ์ง์ ์ฐ๊ฒฐํ์ง ์๋๋ค.
ํญ์ ์๋ก์ด Docker Image๋ฅผ ์์ฑํ ๋ค ๋ฐฐํฌํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
์ฆ,
- ๊ฐ๋ฐ ํ๊ฒฝ → Bind Mount ๋ฑ์ ํ์ฉํด ๋น ๋ฅด๊ฒ ๊ฐ๋ฐ
- ์ด์ ํ๊ฒฝ → ์๋ก์ด Docker Image๋ฅผ ์์ฑํ์ฌ ๋ฐฐํฌ
๋ผ๋ ์ฐจ์ด๊ฐ ์๋ค.
์ค๋ฌด์์๋ ์ด๋ป๊ฒ ๋ฐฐํฌํ ๊น?
์ค๋ฌด์์๋ ๊ฐ๋ฐ์๊ฐ ์ง์ docker build ๋ช ๋ น์ ์คํํ์ฌ ์ด์ ์๋ฒ์ ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ๋ ๋ง์ง ์๋ค.
์ผ๋ฐ์ ์ผ๋ก CI/CD ํ์ดํ๋ผ์ธ์ ์ด์ฉํด ๋น๋์ ๋ฐฐํฌ๋ฅผ ์๋ํํ๋ค.
Git Push โ โผ Jenkins โ โผ Gradle Build โ โผ Docker Build โ โผ Docker Registry โ โผ Argo CD โ โผ Kubernetes โ โผ ์๋ก์ด Pod ์์ฑ โ โผ Health Check โ โผ ์๋น์ค ๋ฐ์๊ฐ๋ฐ์๊ฐ Git์ ์ฝ๋๋ฅผ Pushํ๋ฉด Jenkins๊ฐ ์๋์ผ๋ก ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๊ณ ์๋ก์ด Docker Image๋ฅผ ์์ฑํ๋ค.
์์ฑ๋ ์ด๋ฏธ์ง๋ Docker Registry์ ์ ์ฅ๋๊ณ , Argo CD๋ ๋ณ๊ฒฝ๋ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์งํ์ฌ Kubernetes์ ๋ฐฐํฌ๋ฅผ ์ํํ๋ค.
Kubernetes๋ ์๋ก์ด Pod๋ฅผ ์์ฑํ ๋ค Health Check๋ฅผ ์ํํ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์์ ์ผ๋ก ๊ธฐ๋๋ ๊ฒ์ด ํ์ธ๋๋ฉด ๊ธฐ์กด Pod๋ฅผ ์ข ๋ฃํ๊ณ ์๋ก์ด Pod๋ก ์๋น์ค๋ฅผ ์ ํํ๋ค.
์ด๋ฌํ ๋ฐฉ์ ๋๋ถ์ ์๋น์ค ์ค๋จ์ ์ต์ํํ๋ฉด์ ์์ ์ ์ผ๋ก ๋ฐฐํฌํ ์ ์๋ค.
์ ๋ฆฌ
Docker์์ ๊ฐ์ฅ ์ค์ํ ๊ฐ๋ ์ค ํ๋๋ Docker Image๋ ๋ณ๊ฒฝ๋์ง ์๋๋ค(Immutable) ๋ ๊ฒ์ด๋ค.
์์ค๋ฅผ ์์ ํ๋ค๊ณ ํด์ ์คํ ์ค์ธ Container๊ฐ ์๋์ผ๋ก ๋ณ๊ฒฝ๋์ง๋ ์๋๋ค.
๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ๋ ค๋ฉด ๋ค์ ๊ณผ์ ์ ๋ค์ ์ํํด์ผ ํ๋ค.
์์ค ์์ โ โผ ํ๋ก์ ํธ Build โ โผ ์๋ก์ด JAR ์์ฑ โ โผ docker build โ โผ ์๋ก์ด Docker Image ์์ฑ โ โผ docker run โ โผ ์๋ก์ด Container ์คํ์ฆ, Docker๋ ๊ธฐ์กด Image๋ฅผ ์์ ํ๋ ๋ฐฉ์์ด ์๋๋ผ ์๋ก์ด Image๋ฅผ ์์ฑํ๊ณ , ๊ทธ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ก์ด Container๋ฅผ ์คํํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค.
์ด๋ฌํ ๊ตฌ์กฐ ๋๋ถ์ ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ์ด์ ํ๊ฒฝ์์ ๋์ผํ ์คํ ํ๊ฒฝ์ ์ ์งํ ์ ์์ผ๋ฉฐ, ์์ ์ ์ธ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๋ค.
๋ค์ ๊ธ
์ง๊ธ๊น์ง Docker Image์ Container์ ๋์ ์๋ฆฌ๋ฅผ ์์๋ดค๋ค.
Docker์์ ์์ค๋ฅผ ์์ ํ๋ฉด ์๋ก์ด Docker Image๋ฅผ ์์ฑํด์ผ ํ๋ค๋ ๊ฒ๋ ํ์ธํ๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ ํ๋์ ๊ถ๊ธ์ฆ์ด ์๊ธด๋ค.
"์์ฑํ Docker Image๋ ์ด๋์ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ ๊น?"
๊ฐ๋ฐ ํ๊ฒฝ์์๋ ๋ก์ปฌ์ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ ์ ์์ง๋ง, ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ํจ๊ป ์์ ํ๊ฑฐ๋ ์ด์ ์๋ฒ์ ๋ฐฐํฌํ๋ ค๋ฉด ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๊ณ ๊ณต์ ํ ์ ์๋ ์ ์ฅ์๊ฐ ํ์ํ๋ค.
๋ค์ ๊ธ์์๋ Docker Registry๋ ๋ฌด์์ธ์ง, ๊ทธ๋ฆฌ๊ณ Docker Hub๋ฅผ ๋น๋กฏํ ์ด๋ฏธ์ง ์ ์ฅ์์ ์ญํ ๊ณผ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ๋ค.
'DevOps' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
6. Jenkins์ Argo CD๋ก ์ดํดํ๋ CI/CD (0) 2026.07.23 5. Docker Registry๋? Docker Hub์ ์ด๋ฏธ์ง ์ ์ฅ์ ์ดํดํ๊ธฐ (0) 2026.07.23 3. Dockerfile์ด๋? Spring Boot ์ด๋ฏธ์ง ๋ง๋ค๊ธฐ (0) 2026.07.22 2. Docker๋? ์ด๋ฏธ์ง(Image)์ ์ปจํ ์ด๋(Container) ์ดํดํ๊ธฐ (0) 2026.07.22 1. Docker, Kubernetes(K8s), K3s, K9s, kubectl, Terraform ๊ฐ๋ ์ ๋ฆฌ (0) 2026.07.21