๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Docker

[Docker] ๋„์ปค(Docker)๊ฐ€ ๋ญ”๋ฐ ์ด๋ ‡๊ฒŒ ๋งŽ์ด ์จ?

by carrot0911 2025. 5. 12.

ํ˜„์—…์—์„œ Docker๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ญ˜๊นŒ?

๐Ÿ‘‰  ์ด์‹์„ฑ: ํŠน์ • ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์‰ฝ๊ฒŒ ์˜ฎ๊ฒจ์„œ ์„ค์น˜ ๋ฐ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ

 

Docker์˜ ์žฅ์ 

๐Ÿ‘‰  ๋งค๋ฒˆ ๊ท€์ฐฎ์€ ์„ค์น˜ ๊ณผ์ •์„ ์ผ์ผ์ด ๊ฑฐ์น˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค!
๐Ÿ‘‰  ํ•ญ์ƒ ์ผ๊ด€๋˜๊ฒŒ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. (๋ฒ„์ „, ํ™˜๊ฒฝ ์„ค์ •, ์˜ต์…˜, ์šด์˜ ์ฒด์ œ ๋“ฑ)
๐Ÿ‘‰  ๊ฐ ํ”„๋กœ๊ทธ๋žจ์ด ๋…๋ฆฝ์ ์ธ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ ๊ฐ„์— ์„œ๋กœ ์ถฉ๋Œ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.

 

IP์˜ ๊ฐœ๋…

๐Ÿ’ก  ํ•œ ์ค„ ์š”์•ฝ: ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ์˜ ํŠน์ • ์ปดํ“จํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ

์•„๋ž˜์™€ ๊ฐ™์€ ๊ฐ’์ด IP ์ฃผ์†Œ์ด๋‹ค.

13.250.15.132

 

Port์˜ ๊ฐœ๋…

๐Ÿ’ก  ํ•œ์ค„ ์š”์•ฝ: ํ•œ ์ปดํ“จํ„ฐ ๋‚ด์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํŠน์ • ํ”„๋กœ๊ทธ๋žจ์˜ ์ฃผ์†Œ์ด๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์€ ๊ฐ’์—์„œ IP ๋’ค์— ์˜ค๋Š” ์ˆซ์ž๊ฐ€ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

13.250.15.132:3000

ํŠน์ • ์„œ๋ฒ„์™€ ํ†ต์‹ ์„ ํ•  ๋•Œ๋Š” IP ์ฃผ์†Œ์™€ ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํฌํŠธ ๋ฒˆํ˜ธ๊นŒ์ง€ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์— ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š”?

๋ถ„๋ช… ํŠน์ • ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” IP ์ฃผ์†Œ์™€ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ๋‘˜ ๋‹ค ์•Œ์•„์•ผ ๋œ๋‹ค.
ํ•˜์ง€๋งŒ ๋„๋ฉ”์ธ ์ฃผ์†Œ์—์„œ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฑด IP์ฃผ์†Œ๋ฟ์ด๋‹ค. ๊ทธ๋Ÿผ.. ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์ง€ ์•Š์•˜๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ์ •์ƒ์ ์œผ๋กœ ํ†ต์‹ ์„ ํ•œ ๊ฑฐ์ง€??

์ฃผ์†Œ์ฐฝ์— ๋„๋ฉ”์ธ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ด์„œ Enter๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ธŒ๋ผ์šฐ์ €(ํฌ๋กฌ, ์ต์Šคํ”Œ๋กœ๋Ÿฌ ๋“ฑ)๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 80๋ฒˆ ํฌํŠธ๋กœ ํ†ต์‹ ์„ ๋ณด๋‚ด๊ฒŒ ์„ค์ •๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์ง€ ์•Š์•„๋„ ํ†ต์‹ ์ด ์ž˜ ์ด๋ฃจ์–ด์กŒ๋˜ ๊ฒƒ์ด๋‹ค.
๋งŒ์•ฝ ๋‹ค๋ฅธ ํฌํŠธ ๋ฒˆํ˜ธ๋กœ ํ†ต์‹ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ง์ ‘ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.

 

์ž˜ ์•Œ๋ ค์ง„ ํฌํŠธ(well-known port)๋ž€?

ํฌํŠธ ๋ฒˆํ˜ธ๋Š” 0 ~ 65,535๋ฒˆ๊นŒ์ง€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ์ค‘์—์„œ 0 ~ 1023๋ฒˆ๊นŒ์ง€์˜ ํฌํŠธ ๋ฒˆํ˜ธ๋Š” ์ฃผ์š” ํ†ต์‹ ์„ ์œ„ํ•œ ๊ทœ์•ฝ์— ๋”ฐ๋ผ ์ด๋ฏธ ์ •ํ•ด์ ธ ์žˆ๋‹ค.
์ด๋ ‡๊ฒŒ ๊ทœ์•ฝ์ด ํ†ตํ•ด ์—ญํ• ์ด ์ •ํ•ด์ ธ ์žˆ๋Š” ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ž˜ ์•Œ๋ ค์ง„ ํฌํŠธ(well-known port)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

๊ทธ์ค‘์—์„œ๋„ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ํฌํŠธ ๋ฒˆํ˜ธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž!

๐Ÿ‘‰  22๋ฒˆ (SSH, Secure Shell Protocol): ์›๊ฒฉ ์ ‘์†์„ ์œ„ํ•œ ํฌํŠธ ๋ฒˆํ˜ธ, EC2 ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•  ๋•Œ 22๋ฒˆ ํฌํŠธ๋ฅผ ์‚ฌ์šฉ
๐Ÿ‘‰  80๋ฒˆ (HTTP): HTTP๋กœ ํ†ต์‹ ์„ ํ•  ๋•Œ ์‚ฌ์šฉ
๐Ÿ‘‰  443๋ฒˆ (HTTPS): HTTPS๋กœ ํ†ต์‹ ์„ ํ•  ๋•Œ ์‚ฌ์šฉ

ํŠน์ • ์„œ๋ฒ„์™€ HTTP ํ†ต์‹ ์„ ํ•  ๋•Œ 80๋ฒˆ ํฌํŠธ๋ฅผ ์“ฐ์ง€ ์•Š๊ณ  3000๋ฒˆ ํฌํŠธ๋‚˜ 8080๋ฒˆ ํฌํŠธ๋ฅผ ์จ๋„ ์ƒ๊ด€์—†๋‹ค.

 

๊ทธ๋ž˜์„œ Docker๊ฐ€ ๋ญ”๋ฐ?!

์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ๊ฐ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋ถ„๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ ๋ฐ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” Tool์ด๋‹ค.

 

๊ทธ๋Ÿผ ์ปจํ…Œ์ด๋„ˆ(Container)๋Š” ๋ญ์•ผ?

ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ ํ™˜๊ฒฝ์—์„œ ๋…๋ฆฝ์ ์ธ ์ปดํ“จํ„ฐ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•ด์„œ, ๊ฐ ํ™˜๊ฒฝ์— ํ”„๋กœ๊ทธ๋žจ์„ ๋ณ„๋„๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“  ๊ฐœ๋…์ด๋‹ค.
ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฏธ๋‹ˆ ์ปดํ“จํ„ฐ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฏธ๋‹ˆ ์ปดํ“จํ„ฐ๊ฐ€ Docker์—์„œ๋Š” ์ปจํ…Œ์ด๋„ˆ์— ํ•ด๋‹นํ•œ๋‹ค.

Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•œ ๊ทธ๋ฆผ

'์ปจํ…Œ์ด๋„ˆ'์™€ '์ปจํ…Œ์ด๋„ˆ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ์ปดํ“จํ„ฐ'๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ์ปดํ“จํ„ฐ๋ฅผ 'ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ'๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

์ปจํ…Œ์ด๋„ˆ์˜ ๋…๋ฆฝ์„ฑ

๐Ÿ‘‰  ๋””์Šคํฌ (์ €์žฅ ๊ณต๊ฐ„): ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋งˆ๋‹ค ์„œ๋กœ ๊ฐ์ž์˜ ์ €์žฅ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ผ๋ฐ˜์œผ๋กœ A ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ B ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ์žˆ๋Š” ํŒŒ์ผ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
๐Ÿ‘‰  ๋„คํŠธ์›Œํฌ (IP, Port): ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋งˆ๋‹ค ๊ณ ์œ ์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ์ž์˜ IP ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

์ด๋ฏธ์ง€(Image)๋ผ๋Š” ๊ฒƒ๋„ ์žˆ๋˜๋ฐ.. ๊ทธ๊ฑด ๋˜ ๋ญ์ง€?

๋‹Œํ…๋„์™€ ๊ฐ™์€ ๊ฒŒ์ž„๊ธฐ๋ฅผ ๋ณด๋ฉด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์นฉ์„ ๊ฝ‚์•„์„œ ๋‹ค์–‘ํ•œ ๊ฒŒ์ž„์„ ์ฆ๊ธธ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ์žˆ๋‹ค. Docker์—์„œ๋Š” ๋‹Œํ…๋„์˜ ์นฉ๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•˜๋Š” ๊ฐœ๋…์ด ์ด๋ฏธ์ง€(Image)์ด๋‹ค.

์ด๋ฏธ์ง€(Image)๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์„ค์น˜ ๊ณผ์ •, ์„ค์ •, ๋ฒ„์ „ ์ •๋ณด ๋“ฑ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.
ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.

 

Docker๋ฅผ ์กฐ์ž‘ํ•˜๋ ค๋ฉด?

ํ„ฐ๋ฏธ๋„์—์„œ ๋ช…๋ น์–ด(CLI)๋ฅผ ํ†ตํ•ด Docker๋ฅผ ์กฐ์ž‘ํ•œ๋‹ค.

 

Docker ๋ง›๋ณด๊ธฐ

1. Docker์—์„œ Nginx ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ

$ docker pull nginx

2. ๋‹ค์šด๋กœ๋“œ๋œ ์ด๋ฏธ์ง€ ํ™•์ธ

$ docker image ls

3. ์ด๋ฏธ์ง€๋ฅผ ์ปจํ…Œ์ด๋„ˆ์— ์˜ฌ๋ ค Nginx ์„œ๋ฒ„ ์‹คํ–‰์‹œํ‚ค๊ธฐ

$ docker run --name webserver -d -p 80:80 nginx

4. Nginx ์„œ๋ฒ„๊ฐ€ ์ž˜ ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ

Nginx๊ฐ€ ์ž˜ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธ

5. ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ ํ™•์ธํ•˜๊ธฐ

$ docker ps

6. ํŠน์ • ์ปจํ…Œ์ด๋„ˆ ์ •์ง€

$ docker stop webserver

๊ทธ๋ฆผ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ