ํ์ ์์ 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์์๋ ์ปจํ
์ด๋์ ํด๋นํ๋ค.
'์ปจํ ์ด๋'์ '์ปจํ ์ด๋๋ฅผ ํฌํจํ๊ณ ์๋ ์ปดํจํฐ'๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด ์ปจํ ์ด๋๋ฅผ ํฌํจํ๊ณ ์๋ ์ปดํจํฐ๋ฅผ 'ํธ์คํธ ์ปดํจํฐ'๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ปจํ ์ด๋์ ๋ ๋ฆฝ์ฑ
๐ ๋์คํฌ (์ ์ฅ ๊ณต๊ฐ): ๊ฐ ์ปจํ
์ด๋๋ง๋ค ์๋ก ๊ฐ์์ ์ ์ฅ ๊ณต๊ฐ์ ๊ฐ์ง๊ณ ์๋ค. ์ผ๋ฐ์ผ๋ก 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 ์๋ฒ๊ฐ ์ ์คํ๋๋์ง ํ์ธํ๊ธฐ
5. ์คํ๋๊ณ ์๋ ๋ชจ๋ ์ปจํ ์ด๋ ์ํ ํ์ธํ๊ธฐ
$ docker ps
6. ํน์ ์ปจํ ์ด๋ ์ ์ง
$ docker stop webserver