๋์ปค๋?
- ์ปจํ ์ด๋ ๊ธฐ๋ฐ์ ์คํ์์ค ๊ฐ์ํ ํ๋ซํผ
- ๋ค์ํ ํ๋ก๊ทธ๋จ, ์คํํ๊ฒฝ์ ์ปจํ ์ด๋๋ก ์ถ์ํํ, ๋์ผํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํด ํ๋ก๊ทธ๋จ์ ๋ฐฐํฌ ๋ฐ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ๊ฒ ํด์ค
- ์ด๋์์๋ ์คํ ๊ฐ๋ฅํ๋๋ก ํด์ค(์กฐ๋ฆฝ์ปด, AWS, Google Cloud)
ํน์ง
ํ์ฅ์ฑ
- ์ด๋ฏธ์ง๋ง ๋ง๋ค์ด ๋์ผ๋ฉด ์ปจํ ์ด๋๋ ๊ทธ๋ฅ ๋์ฐ๋ฉด ๋จ
- ์๋ฒ์ ์๋น์ค ํ๋ ๋ ๋์ธ๋ผ๋ฉด
run
๋ช ๋ น์ด๋ก ๊ฐ๋จํ๊ฒ ํด๊ฒฐ
ํ์ค์ฑ
- ๋์ปค๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ ruby, nodejs, go, php๋ก ๋ง๋ ์๋น์ค๋ค์ ๋ฐฐํฌ ๋ฐฉ์์ ๊ฐ๊ฐ ๋ค๋ฆ
- ์ปจํ ์ด๋๋ผ๋ ํ์ค์ผ๋ก ์๋ฒ๋ฅผ ๋ฐฐํฌํ๋ฏ๋ก ๋ชจ๋ ์๋น์ค๋ค์ ๋ฐฐํฌ๊ณผ์ ์ด ๋์ผ
์ด๋ฏธ์ง
- ์ด๋ฏธ์ง์์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ์ด๋ฏธ์ง๋ฅผ ๋ง๋๋ ๊ณผ์ ์ด ํ์
- ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ ๊ณณ์ด ํ์
์ค์
- ๋ณดํต ํ๊ฒฝ๋ณ์๋ก ์ ์ด
- ํ๋์ ์ด๋ฏธ์ง๊ฐ ํ๊ฒฝ๋ณ์์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์ค์ ํ์ผ์ ์์ฑํ๋๋ก ๋ง๋ค์ด์ ธ์ผํจ
์ปจํ ์ด๋
- ๊ฒฉ๋ฆฌ๋ ๊ณต๊ฐ์์ ํ๋ก์ธ์ค๊ฐ ๋์ํ๋ ๊ธฐ์
- ๊ฐ์ํ ๊ธฐ์ ์ ํ๋
BUT. ๊ธฐ์กด์ ๋ฐฉ์๊ณผ๋ ์ฐจ์ด๊ฐ ์์
- ๊ธฐ์กด ๊ฐ์ํ ๋ฐฉ์์ ์ฃผ๋ก OS๋ฅผ ๊ฐ์ํ ํ ๊ฒ
- ํธ์คํธ OS ์์ ๊ฒ์คํธ OS ์ ์ฒด๋ฅผ ๊ฐ์ํํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ์
- ์ด ๋ฐฉ์์ ์ด์จ๋ ์ฑ๋ฅ์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ โฆ
- ๋๋ฌธ์ ํ๋ก์ธ์ค๋ฅผ ๊ฒฉ๋ฆฌํ๋ ๋ฐฉ์ ๋ฑ์ฅ
- ๋ฆฌ๋ ์ค์์๋ ํ๋ก์ธ์ค๋ง ๊ฒฉ๋ฆฌ์ํค๋ ๋ฆฌ๋ ์ค ์ปจํ ์ด๋ ์กด์ฌ
- ํ๋์ ์๋ฒ์ ์ฌ๋ฌ๊ฐ์ ์ปจํ
์ด๋๋ฅผ ์คํํ๋ฉด ์๋ก ์ํฅ์ ๋ฏธ์น์ง ์๊ณ ๋
๋ฆฝ์ ์ผ๋ก ์คํ ๊ฐ๋ฅ
- ์คํ์ค์ธ ์ปจํ ์ด๋์ ์ ์๋ ๋ช ๋ น์ด ์ ๋ ฅ ๊ฐ๋ฅ
- ํจํค์ง ์ค์น ๊ฐ๋ฅ
- ์ฌ์ฉ์ ์ถ๊ฐ ๊ฐ๋ฅ
- ์ฌ๋ฌ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์คํ ๊ฐ๋ฅ
์ด๋ฏธ์ง
- ์ปจํ ์ด๋ ์คํ์ ํ์ํ ๋ชจ๋ ํ์ผ๊ณผ ์ค์ ๊ฐ๋ฑ์ ํฌํจ
- ์ํ๊ฐ์ ๊ฐ์ง์ง ์๊ณ ๋ณํ์ง ์์
- ์ปจํ ์ด๋๋ ์ด๋ฏธ์ง๋ฅผ ์คํํ ์ํ
- ์ถ๊ฐ๋๊ฑฐ๋ ๋ณํ๋ ๊ฐ์ ์ปจํ ์ด๋์ ์ ์ฅ๋จ
- ๊ฐ์ ์ด๋ฏธ์ง์์ ์ฌ๋ฌ๊ฐ ์ปจํ ์ด๋๋ฅผ ์์ฑํ ์ ์๊ณ , ์ปจํ ์ด๋๊ฐ ์์ /์ญ์ ๋์ด๋ ์ด๋ฏธ์ง๋ ๋ณํ์ง ์์
- ex) MySQL์ด๋ฏธ์ง๋ MySQL์ ์คํํ๋๋ฐ ํ์ํ ํ์ผ๊ณผ ์คํ ๋ช ๋ น์ด, ํฌํธ ์ ๋ณด๋ฑ์ ๊ฐ์ง๊ณ ์์
- ๋์ปค ์ด๋ฏธ์ง๋ Docker hub์ ๋ฑ๋กํ๊ฑฐ๋ Docker Registry ์ ์ฅ์๋ฅผ ์ง์ ๋ง๋ค์ด ๊ด๋ฆฌํ ์ ์์
๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด ์ฉ๋์ด ์์ฒญ ํดํ ๋ฐโฆ
- ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ ์ด์ด ๋ผ๋ ๊ฐ๋ ๋์
๋ ์ด์ด
- ์ฌ๋ฌ๊ฐ์ ๋ ์ด์ด๋ฅผ ํ๋์ ํ์ผ ์์คํ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ํด์ค
- ์ด๋ฏธ์ง๋ ์ฌ๋ฌ๊ฐ์ ์ฝ๊ธฐ์ ์ฉ ๋ ์ด์ด๋ก ๊ตฌ์ฑ
- ํ์ผ์ด ์ถ๊ฐ๋๊ฑฐ๋ ์์ ๋๋ฉด ์๋ก์ด ๋ ์ด์ด๊ฐ ์์ฑ๋จ
- ์ด๋ค ์ด๋ฏธ์ง๋ฅผ ๋ฒ ์ด์ค๋ก ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ฐ๋๋ฉด ์ถ๊ฐ๋๋ ๋ ์ด์ด๋ง ๋ค์ด๋ฐ์ผ๋ฉด ๋จ
- ์ปจํ ์ด๋๋ฅผ ์์ฑํ ๋๋ ๊ธฐ์กด ์ด๋ฏธ์ง ๋ ์ด์ด ์์ ์ฝ๊ธฐ, ์ฐ๊ธฐ ๋ ์ด์ด๋ฅผ ์ถ๊ฐํ๋๋ฐ, ์ปจํ ์ด๋๊ฐ ์คํ์ค์ ์์ฑํ๋ ํ์ผ, ๋ณ๊ฒฝ ๋ด์ฉ์ ํด๋น ๋ ์ด์ด์๋ง ์ ์ฅ๋์ด ์ต์ํ์ ์ฉ๋๋ง ์ฌ์ฉ
์ด๋ฏธ์ง ๊ฒฝ๋ก
- ์ด๋ฏธ์ง๋ URL ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํ๋ฉฐ ํ๊ทธ๋ฅผ ๋ถ์ผ ์ ์์
Dockerfile
- ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํด DSL์ ํตํด ์ด๋ฏธ์ง ์์ฑ ๊ณผ์ ์ ์ ์
๋์ปค ์ค์น & ์ปจํ ์ด๋ ์คํ
๋ฆฌ๋ ์ค์ ๋์ปค ์ค์นํ๊ธฐ
curl -fsSL https://get.docker.com/ | sudo sh
sudo ์์ด ์ฌ์ฉํ๊ธฐ
- ๋์ปค๋ ๊ธฐ๋ณธ์ ์ผ๋ก root ๊ถํ์ด ํ์
- ๋ฃจํธ๊ฐ ์๋ ์ฌ์ฉ์๊ฐ sudo ์์ด ์ฌ์ฉํ๊ธฐ ์ํด ๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ฅผ docker ๊ทธ๋ฃน์ ์ถ๊ฐ
sudo usermod -aG docker $USER # ํ์ฌ ์ ์์ค์ธ ์ฌ์ฉ์์๊ฒ ๊ถํ์ฃผ๊ธฐ
์ปจํ ์ด๋ ์คํ
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
docker run --help
๋ช ๋ น์ด๋ฅผ ํตํด ๋ค์ํ ์ต์ ์ ์์๋ณด์- ์ฌ์ฉํ ์ด๋ฏธ์ง๊ฐ ์ ์ฅ๋์ด ์๋์ง ํ์ธํ๊ณ ์๋ค๋ฉด ๋ค์ด๋ก๋
pull
๋ฅผ ํ ํ ์ปจํ ์ด๋๋ฅผ ์์ฑcreate
ํ๊ณ ์์start
๋์ปค ๊ธฐ๋ณธ ๋ช ๋ น์ด
์ปจํ ์ด๋ ๋ชฉ๋ก ํ์ธํ๊ธฐ (ps)
- ์ปจํ ์ด๋ ๋ชฉ๋ก์ ํ์ธ
docker ps [OPTIONS]
์ปจํ ์ด๋ ์ค์งํ๊ธฐ (stop)
- ์คํ์ค์ธ ์ปจํ ์ด๋ ์ค์ง
docker stop [OPTIONS] CONTAINER [CONTAINER...]
์ปจํ ์ด๋ ์ ๊ฑฐํ๊ธฐ (rm)
docker rm [OPTIONS] CONTAINER [CONTAINER...]
์ด๋ฏธ์ง ๋ค์ด๋ก๋ํ๊ธฐ (pull)
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
์ด๋ฏธ์ง ์ญ์ ํ๊ธฐ (rmi)
docker rmi [OPTIONS] IMAGE [IMAGE...]
์คํ์ค์ธ ์ปจํ ์ด๋์ ๋ช ๋ น์ด ์คํ (exec)
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
๋์ปค ์ด๋ฏธ์ง ๋ง๋ค๊ธฐ
- ๋์ปค๋ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ปจํ ์ด๋์ ์ํ๋ฅผ ๊ทธ๋๋ก ์ด๋ฏธ์ง๋ก ์ ์ฅํจ
- ex) ์ด๋ค ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฏธ์ง๋ก ๋ง๋ ๋ค๋ฉด, ๋ฆฌ๋ ์ค๋ง ์ค์น๋ ์ปจํ ์ด๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์นํ๊ณ ์ด ์ํ๋ฅผ ๊ทธ๋๋ก ์ด๋ฏธ์ง๋ก ์ ์ฅ
-
๊ฐ์๋จธ์ ์ ์ค๋ ์ท๊ณผ ๋น์ทํ ๋ฐฉ์
- ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋
Dockerfile
์ด๋ผ๋ ์ด๋ฏธ์ง ๋น๋์ฉ DSLDomain Specific Language ํ์ผ ์์ฑ
์ด๋ฏธ์ง ๋น๋
docker build [OPTIONS] PATH | URL | -
- ์์ฑํ ์ด๋ฏธ์ง ์ด๋ฆ์ ์ง์ ํ๊ธฐ ์ํ
-t(--tag)
์ต์ ๋ง ์๋ฉด ๋น๋๊ฐ ๊ฐ๋ฅ
๋์ปค ์ด๋ฏธ์ง ์ ์ฅ์
- ๋์ปค๋ ๋น๋ํ ์ด๋ฏธ์ง๋ฅผ ์๋ฒ์ ๋ฐฐํฌํ๊ธฐ ์ํด ์ง์ ํ์ผ์ ๋ณต์ฌํ๋ ๋ฐฉ๋ฒ ๋์ ๋์ปค ๋ ์ง์คํธ๋ฆฌ(Docker Registry)๋ผ๋ ์ด๋ฏธ์ง ์ ์ฅ์๋ฅผ ์ฌ์ฉ
- ์ด๋ฏธ์ง๋ฅผ ๋ ์ง์คํธ๋ฆฌ์ ํธ์pushํ๊ณ ๋ค๋ฅธ ์๋ฒ์์ ํpull๋ฐ์ ์ฌ์ฉํ๋ ๊ตฌ์กฐ (like. git)
๋์ปค ํ๋ธ ์ฌ์ฉ
- ๊ธฐ๋ณธ ์ด๋ฏธ์ง ์ ์ฅ์๋ก ubuntu, centos, debian๋ฑ์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง์ ruby, golang, java, python ๋ฑ์ ๊ณต์ ์ด๋ฏธ์ง๊ฐ ์ ์ฅ๋์ด ์์
- ์ฌ์ฉ๋ฒ์ ์ฐธ๊ณ ์๋ฃ๋ฅผ ์ฐธ๊ณ ํ์
๋ฐฐํฌํ๊ธฐ
- ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ๋ ์ธ์ด, ํ๋ ์์ํฌ, ์น(or WAS)์๋ฒ, ๋ฆฌ๋ ์ค ๋ฐฐํฌํ, ๊ฐ๋ฐ์์ ์ทจํฅ์ ๋ฐ๋ผ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ฐฉ์์ ์ฌ์ฉ
- ์๋ก์ด ์๋ฒ๋ฅผ ์ ํ ํ๊ณ ํ ๋ฒ์ ๋ฐฐํฌ๋ฅผ ์ฑ๊ณตํ๋ค๋ ๊ฑด ๊ต์ฅํ ํ๋ ์ผ
- ๋ํ ์์กด์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๋๋ก ์ค์น๋์๋์ง ๊ฒ์ฆํ๊ธฐ๋ ๋งค์ฐ ์ด๋ ค์ ์
- ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ค ์ธ์ด, ์ด๋ค ํ๋ ์์ํฌ๋ฅผ ์ฐ๋ ์๊ด์์ด ๋ฐฐํฌ ๋ฐฉ์์ด ๋์ผํด์ง๊ณ ๊ณผ์ ๋ํ ๊ต์ฅํ ๋จ์ํด์ง
- ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ฐ๊ณ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ฉด ๋