Docker - innovationacademy-kr/slabs-munetic GitHub Wiki
๋์ปค๋ ์ปจํ ์ด๋ ๊ธฐ๋ฐ์ ๊ฐ์ํ ํ๋ซํผ์ ๋๋ค. ์ด๋ ํ๋ก์ธ์ค๋ค์ ๋ถ๋ฆฌ์์ผ ํ๋์ ๊ฒฉ๋ฆฌ๋ OS์ ํ์ผ ์์คํ ์์์ ์คํํ๋ค๋ ๊ฒ ์ ๋๋ค. ์ฆ, ์๋ก ๋ค๋ฅธ OS์ ํ๊ฒฝ์์๋ docker๋ก ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ ํ๊ฒฝ์ด ๋ณด์ฅ๋ฉ๋๋ค. ์ปจํ ์ด๋ ๋ด๋ถ์๋ ์ผ๋ฐ OS์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ๋ฌ ํ๋ก์ธ์ค๋ค์ด ๋์ํ ์ ์์ต๋๋ค.
๋์ปค๋ฅผ ์ด์ฉํ๋ ์ด์ ์ค ํ๋๋ ์๋ก ๋ค๋ฅธ ๊ฐ๋ฐ ํ๊ฒฝ์์๋ ํ๋ก์ธ์ค์ ๋์ผํ ํ๊ฒฝ์ ์ ๊ณตํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ ํ๋์ ์ด์ ๋ ํ๋ก์ธ์ค๊ฐ ์ํธ์์ฉ์ ์ฐจ๋จํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์๋ฉด ์ผ๋ฐ์ ์ผ๋ก๋ ๋์์ ์ฌ์ฉํ ์ ์๊ฑฐ๋ ๊ทธ๋ฌ๋ฉด ์๋๋ ํ๋ก์ธ์ค๋ ๋์ปค๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ฒ ๋ฉ๋๋ค.
์ปจํ
์ด๋๋ foreground์ ์คํ๋์ด์๋ ํ๋ก์ธ์ค๊ฐ ์์ผ๋ฉด ์๋์ ์ค์งํฉ๋๋ค. ์ฒ์ ๋์ปค๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋์ด ๊ฐ์ฅ ์ฃผ์ํ ์ ์
๋๋ค. ์ปจํ
์ด๋๋ฅผ ์ผ๋จ ์คํ์ํจ ํ ์ปจํ
์ด๋ ๋ด๋ถ์ ์ ์ํด ๋ช
๋ น์ด๋ฅผ ์คํํ๋ ค๋ ๊ฒฝ์ฐ๋ background์์ ์คํ๋๋ ํ๋ก๊ทธ๋จ์ ์๋์ํค๋ ค๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ปจํ
์ด๋๊ฐ ์์ํ์๋ง์ ์ ์งํ๊ธฐ ๋๋ฌธ์ ์ ์ ํ ์์ ๋ช
๋ น์ด(entrypoint์ cmd ์ฐธ๊ณ )๋ก ์ปจํ
์ด๋๋ฅผ ์์์์ผ์ผํฉ๋๋ค.
์ปจํ
์ด๋๊ฐ ์ญ์ ๋๋ ๊ฒฝ์ฐ, ๋์ปค ๋ณผ๋ฅจ์ ํตํด ์ ์ฅ๋์ง ์์ ๋ชจ๋ ๋ฐ์ดํฐ๋ ์ญ์ ๋ฉ๋๋ค.
๊ฐํน ํ ์ปจํ
์ด๋์ ์ฌ๋ฌ ์๋น์ค๋ฅผ ์คํ์ํค๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ, ์ด๋ ์ผ๋ฐ์ ์ธ ์๋น์ค์ ์ฌ์ฉ๋ฒ์ ์๋์ง๋ง ์ผํ์ฑ ์์
์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์๋น์ค๋ฅผ ์ ์ง์ํฌ ๋ ํ๋์ ์ปจํ
์ด๋ ์์๋ ํ๋์ ์๋น์ค๊ฐ pid 1๋ก ์คํ๋๋ ๊ฒ์ด ์ด์์ ์
๋๋ค.
์ปจํ ์ด๋๋ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํ๋ฉ๋๋ค. ๋จ์ผ ์ด๋ฏธ์ง์๋ ๋ณดํต ๋จ์ผ ์๋น์ค๊ฐ ์ค์น๋์ด์ ๋ฐฐํฌ๋ฉ๋๋ค. ์ปจํ ์ด๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ ํ๋ก์ธ์ค๊ณ ์ด๋ฏธ์ง๋ ๋์คํฌ์ ํ์ผ์ด๋ฏ๋ก ์ผ๋ฐ์ ์ธ ํ๋ก์ธ์ค์ ์คํํ์ผ์ ๊ด๊ณ์ ๋น์ทํ๋ค๊ณ ์๊ฐํ๋ฉด ๋๊ฒ ์ต๋๋ค. ์ด๋ฐ ์ด๋ฏธ์ง์๋ OS ๊ฐ์ํ์ ํ์ํ ๋ชจ๋ ์ ๋ณด์ ๊ทธ๋ฐ์ ํ์ํ ์๋น์ค์ ์ ๋ณด์ ์ค์ ๋ค์ด ๋ค์ด์์ต๋๋ค.
์ด๋ฏธ์ง๋ ๋ค์ํ linux OS๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง๋๋ค. ์๋ฌด๊ฒ๋ ์ค์น๋์ง ์์ ๊ฐ OS์ ์ด๋ฏธ์ง๋ฅผ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ผ๊ณ ํฉ๋๋ค. ์ด๋ฌํ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ํตํด ์ํ๋ ์๋น์ค๊ฐ ์ค์น๋ ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๊ฐ์ฅ ํํ ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ Dockerfile์ ํตํด ๋ง๋๋ ๊ฒ์ผ๋ก ๋ฒ ์ด์ค ์ด๋ฏธ์ง์์ Dockerfile์ ๊ธฐ์ ๋ ๋จ๊ณ๋ฅผ ํ๋ ํ๋ ๊ฑฐ์ณ๊ฐ๋ฉด์ ๋ชฉํ๋ ์ด๋ฏธ์ง๊น์ง ๋น๋๋ฅผ ํ๋ ๊ฒ์ ๋๋ค. ๋ค๋ฅธ ๋ฐฉ๋ฒ์ docker commit ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์คํ๋์ด์๋ ์ปจํ ์ด๋๋ฅผ ์ด๋ฏธ์งํํ๋ ๊ฒ์ธ๋ฐ, ์ด ๋ฐฉ๋ฒ์ ๋๋ฒ๊ทธ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์ปจํ ์ด๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฏธ์ง ๋ด๋ถ์ ์ ์ฅ๋์ด์๋ ํ์ผ๋ค ๊ธฐ๋ฐ์ผ๋ก ๋ด๋ถ ์ ์ฅ์๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ปจํ ์ด๋์ ์ ์ฅ๋ ํ์ผ์ ์ฝ๊ฒ ๊ต์ฒดํ๊ณ ์ถ์ ๊ฒฝ์ฐ, ์ปจํ ์ด๋๋ฅผ ์ญ์ ํด๋ ๋ฐ์ดํฐ๋ฅผ ๋จ๊ธฐ๊ณ ์ถ์ ๊ฒฝ์ฐ ๋ณผ๋ฅจ์ ์ด์ฉํ ์ ์์ต๋๋ค. ๋ณผ๋ฅจ์ ํธ์คํธ์ ํ์ผ ์์คํ ์ ์ ์ฅ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์ปจํ ์ด๋์์ ์ด์ฉํ๋ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
์ปจํ ์ด๋๋ ํธ์คํธ์ ํฌํธ์๋ ๋ณ๊ฐ๋ก ์๊ธฐ ์์ ๋ง์ ip์ ํฌํธ๋ฅผ ๊ฐ์ง๋๋ค. ์ด๋ ๋ชจ๋ ์ปจํ ์ด๋์ ์ ์ฉ๋ฉ๋๋ค. ์ด๋ฌํ ip์ ํฌํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ๋ถ๋ก ๋ ธ์ถ๋์ง ์์ต๋๋ค. ์ปจํ ์ด๋๊ฐ์๋ ์๋ก ํต์ ์ ํ๊ธฐ ์ํ์ฌ ๋์ปค ๋คํธ์ํฌ๋ผ๋ ๊ฒ์ ์ฌ์ฉํฉ๋๋ค. ๋์ปค ๋คํธ์ํฌ์๋ ์ปจํ ์ด๋์ ์ด๋ฆ์ด DNS์ ๋ฑ๋ก๋์ด์์ด ํธ๋ฆฌํ๊ฒ ์๋ก ํต์ ํ ์ ์์ต๋๋ค. ์ปจํ ์ด๋๋ ์ฌ๋ฌ ๊ฐ์ ๋คํธ์ํฌ๋ฅผ ๊ฐ์ง ์ ์๋๋ฐ, ์ด๋ ์๋ก ๊ณต์ ํ๋ ๋คํธ์ํฌ๊ฐ ์๋ ์ปจํ ์ด๋๋ผ๋ฆฌ๋ ํต์ ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๊ฐ ๋ช ๋ น์ด ์์ ๋ชฉ์ ๋์ปค ๋ฌธ์๋ก ์ฐ๊ฒฐ๋์ด์์ต๋๋ค.
- id
๋์ปค๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ์ฒด๋ค ๋๋ถ๋ถ, ๊ทธ๋ฌ๋๊น ์ด๋ฏธ์ง, ์ปจํ ์ด๋, ๋ณผ๋ฅจ, ๋คํธ์ํฌ ๋ฑ์ ๋๋ค์ผ๋ก ์์ฑ๋๊ฑฐ๋ ์ง์ ๋ ์ผ์ ํ ๊ธธ์ด์ id๋ฅผ ๊ฐ์ต๋๋ค. ๊ฐ ๊ฐ์ฒด๊ฐ ๊ฐ๋ ๊ณ ์ ํ ์ด๋ฆ์ผ๋ก ๊ฐ์ฒด์ ์ ๊ทผํ ์๋ ์์ผ๋, ์์ด๋๋ฅผ ํตํด์ ์ ๊ทผํ ์๋ ์์ต๋๋ค. ์ด๋, ์์ด๋ ์ ๋ถ๊ฐ ํ์ํ ๊ฒ์ ์๋๊ณ , ํ์ฌ ๋์ปค ๋ด๋ถ์์ ๊ตฌ๋ถ๋๊ธฐ ์ํด ์ต์๊ธธ์ด๋ก ์๋ถ๋ถ์ ์ ๋ ฅํ๋ฉด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด์ ํ์ฌ ๋์ปค ์์ 1๋ก ์์ํ๋ ์ปจํ ์ด๋๊ฐ ํ๋ ๋ฐ์ ์๋ค๋ฉด ํ ๊ธ์๋ง์ผ๋ก๋ ์ปจํ ์ด๋์ ์ ๊ทผํ ์ ์์ต๋๋ค.
Docker์ ์ด๋ฏธ์ง ๋ฐฐํฌ๋ ๋์ปค ํ๋ธ๋ฅผ ์ด์ฉํด์ ์ด๋ฃจ์ด์ง๋๋ค. github์ ๋์ปค ๋ฒ์ ์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. ์ด๋ฏธ์ง์ id๋ ์์ฑ์ ์ ํด์ง๋ฉฐ, ์
๋ก๋๋ ๋ค์ด๋ก๋ ๋์ด๋ ๋ณํ์ง ์์ต๋๋ค. ๋์ปค ํ๋ธ์์ ํ์ํ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ฐ๊ธฐ ์ํด์๋ docker pull ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ์ผ ํฉ๋๋ค.
-
๐ฅ docker pull
$ docker pull [OPTIONS] NAME[:TAG|@DIGEST]
pull ๋ช
๋ น์ด์ ๋ฐ๋์ ๋ช
์๋์ด์ผํ๋ ๋ถ๋ถ์ ์ด๋ฏธ์ง์ ์ด๋ฆ์ธ NAME์
๋๋ค. ๋ฒ ์ด์ค ์ด๋ฏธ์ง์ธ ๊ฒฝ์ฐ์๋ OS์ ์ด๋ฆ์ด, ์๋น์ค ์ด๋ฏธ์ง์ธ ๊ฒฝ์ฐ์๋ ์๋น์ค์ ์ด๋ฆ์ด ๋ค์ด๊ฐ๋๋ค.
[TAG|@DIGEST]๋ ํด๋น ์ด๋ฏธ์ง์ ๋ฒ์ ์ ๋ปํฉ๋๋ค. ๊ฐ์ OS๋ ์๋น์ค๋ ๋ฒ์ ์ ๋ฐ๋ผ ์ด๋ฏธ์ง๊ฐ ๋ค๋ฅผ ์ ์์ต๋๋ค. ๋ช
์๋์ง ์์ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ต์ ์ ์์ ํ ๋ฒ์ ์ ๋ปํ๋ ํ๊ทธ์ธ :latest๊ฐ ์ ํ๋ฉ๋๋ค. latest ํ๊ทธ๊ฐ ์ต์ ์ ์์ ํ ๋ฒ์ ์ ๋ฐ๋ผ์ ๋ฐ๋๋ฏ์ด ํ๊ทธ๊ฐ ๋ปํ๋ ์ด๋ฏธ์ง๋ ๋ฐ๋ ์ ์์ต๋๋ค. ์ด๋ฏธ์ง๋ ์์ฑ๋ ๋๋ง๋ค ์ ํด์ง๋ sha256 ๊ฐ์ ํตํด์ ๋ณํ์ง ์๋ ์๋ณ์๊ฐ ๋ง๋ค์ด์ง๋๋ค. [@DIGEST]์ ๊ฒฝ์ฐ๋ ์ด ์๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ค๋ ๊ฒ์ ๋ณด์ฅํ ์ ์์ต๋๋ค. ๋ค๋ง ๋๋ถ๋ถ์ ์ด๋ฏธ์ง๋ latest, ํน์ lts๊ฐ ๋ถ์ง ์์ ํ๊ทธ์ ๊ฒฝ์ฐ ๊ฑฐ์ ๋ณ๊ฒฝ๋์ง ์๊ธฐ ๋๋ฌธ์ ํ๊ทธ๋ง ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
TAG๋ ํ ์ด๋ฏธ์ง์ ์ฌ๋ฌ ๊ฐ๊ฐ ์กด์ฌํ ์ ์์ต๋๋ค. ์ด๋, ์ด ์ด๋ฏธ์ง๋ค์ ์์ด๋๋ ๋ชจ๋ ๊ฐ์ต๋๋ค.
ํ๋ก์ ํธ์ latest ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์ฒํ์ง ์์ต๋๋ค. latest ์ด๋ฏธ์ง๋ ๋ด์ฉ์ด ๋ณ๊ฒฝ๋ ์ ์๊ธฐ ๋๋ฌธ์, ํ์ฌ latest์ ํด๋นํ๋ ๋ฒ์ ์ด๋ฆ์ ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
[OPTIONS]์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค. --quite, -q ์ต์
์ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ฌ ๋ ๋์ค๋ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ์ง ์๊ฒ ํ๋ ์ต์
์
๋๋ค. ๊ธฐํ ์ต์
์ ๋ํด์๋ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํด์ฃผ์ธ์.
-
๐ docker images / docker image ls
$ docker images [OPTIONS] [REPOSITORY[:TAG]]
$ docker image ls [OPTIONS] [REPOSITORY[:TAG]]
๋ ๋ช ๋ น์ด๋ ๋์ผํฉ๋๋ค. ์ด ๋ช ๋ น์ด๋ฅผ ํตํด์ ๋ฐ์์จ ์ด๋ฏธ์ง์ ๋ชฉ๋ก์ ๋ณผ ์ ์์ต๋๋ค. ์ต์ ์ ํตํด ์ฌ๋ฌ ๋ฐฉ์์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ํ์ํ ์ ์์ต๋๋ค.
-
๐ docker rmi / docker image rm
$ docker rmi [OPTIONS] IMAGE [IMAGE...]
$ docker image rm [OPTIONS] IMAGE [IMAGE...]
docker rmi๋ ์ด๋ฏธ์ง๋ฅผ ์ ๊ฑฐํ๋ ๋ช
๋ น์ด์
๋๋ค.
ํ์ฌ ๋์๊ฐ๊ณ ์๋ ์ปจํ
์ด๋์ ์ด๋ฏธ์ง๋ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ๋ง์ฝ ์ ๊ฑฐํ๊ณ ์ถ๋ค๋ฉด -f, --force ์ต์
์ ์จ์ผํฉ๋๋ค.
- docker image ๊ทธ ๋ฐ์ ์ด๋ฏธ์ง์ ๊ด๋ จ๋ ๋ช ๋ น์ด๋ docker image์ ํ์ ๋ช ๋ น์ด์ ๋ชฉ๋ก์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค.
-
๐ฃ docker ps
$ docker ps [OPTIONS]
์ปจํ
์ด๋๋ค์ ๋ชฉ๋ก์ ๋ณผ ์ ์๋ ๋ช
๋ น์ด์
๋๋ค. ๊ฐ ์ปจํ
์ด๋๋ค์ด ํ๋ก์ธ์ค์ด๊ธฐ ๋๋ฌธ์ ps ๋ช
๋ น์ด๋ฅผ ๋ฐ์ ์ง์ด์ก์ต๋๋ค.
์ด ๋ช
๋ น์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฌ ์๋์ค์ธ ์ปจํ
์ด๋์ ์ ๋ณด๋ค์ ๋ณด์ฌ์ค๋๋ค. -a์ต์
์ ํตํด ๋ฉ์ถฐ์๋ ์ปจํ
์ด๋๊น์ง๋ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ ๋ฐ์ ์ต์
์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํด์ฃผ์ธ์.
๋ณด์ฌ์ฃผ๋ ์ ๋ณด๋ค์ CONTAINER ID, IMAGE, COMMAND, CREATED, STATUS, PORTS, NAMES์
๋๋ค.
-
CONTAINER ID๋ ์ปจํ ์ด๋๊ฐ ์์ฑ๋ ๋ ๋ถ์ฌ๋ ๊ณ ์ ID์ ๋๋ค. -
IMAGE๋ ์ปจํ ์ด๋๋ฅผ ๋๋ฆฌ๊ธฐ ์ํด ์ฌ์ฉ๋ ์ด๋ฏธ์ง์ ๋๋ค. -
COMMAND๋ ์ปจํ ์ด๋๋ฅผ ์์ฑํ ๋ ์ฌ์ฉ๋ ์ปค๋งจ๋์ ๋๋ค.docker run๋ช ๋ น์ด์Dockerfile์CMD์์ ์์ธํ ์ค๋ช ํ ๊ฒ์ ๋๋ค. -
STATUS๋ ์ปจํ ์ด๋์ ์ํ๋ฅผ ๋ํ๋ ๋๋ค. ์๋ ์ค์ด๋ผ๋ฉด ์ปจํ ์ด๋๊ฐ ์์๋๊ฑฐ๋ ์ฌ์์๋๊ณ ๋์ ํ์ฌ๊น์ง์ ์๊ฐ์ ํ์ํฉ๋๋ค. -
PORTS๋ ์ปจํ ์ด๋์์ ํธ์คํธ(๋์ปค๋ฅผ ์๋์ค์ธ ์ปดํจํฐ)์ ๋ ธ์ถ๋ ํฌํธ๋ฅผ ํ์ํฉ๋๋ค. ์ปจํ ์ด๋๋ ์์ ๋งํ๋ฏ ํธ์คํธ์ ๋ณ๊ฐ์ ํฌํธ๋ฅผ ๊ฐ์ง๋๋ค. ์ด ํฌํธ๋ ์ด๋ฏธ์ง ๋น๋ ์๋ ์ปจํ ์ด๋ ์คํ ์์ ํธ์คํธ์ ํฌํธ๋ฅผ ์ง์ ํ์ฌ ๋ง์ดํธํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๊ฒฝ์ฐ localhost ๋๋ ํธ์คํธ์ ip์ฃผ์์ ํฌํธ ๋ฒํธ๋ฅผ ํตํด ์ปจํ ์ด๋์ ํด๋น ํฌํธ๋ก ์ฐ๊ฒฐ ๊ฐ๋ฅํฉ๋๋ค. -
NAMES๋ ์ปจํ ์ด๋๋ฅผ ์๋ณํ๋ ์ด๋ฆ์ ๋๋ค. ์ด๋ฆ์ ์ฌ๋ฌ ๊ฐ์ผ ์ ์์ต๋๋ค. ์ด๋ฆ์ ๋์ปค์์ ์ปจํ ์ด๋๋ฅผ ์๋ณํ ๋, ๋์ปค ๋คํธ์ํฌ์ DNS์ ์ฌ์ฉ๋ฉ๋๋ค. -
๐ docker run
$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-
docker run๋ช ๋ น์ด๋ ์ด๋ฏธ์ง์์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ ๋์ปค์ ํต์ฌ์ ์ธ ๋ช ๋ น์ด์ ๋๋ค. ๋ค๋ฅธ ๋ช ๋ น์ด์ ์ปค๋งจ๋์ ๋นํด ๊ต์ฅํ ๋ง์ ์ต์ ์ด ์์ต๋๋ค. ์์ฃผ ์ฐ๋ ์ต์ ๋ง ๋์ดํด๋ณด๊ฒ ์ต๋๋ค. -
--attach ARG,-a:-d์ต์ ๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ช ๋ น์ด๋ฅผ ์คํํ ํฐ๋ฏธ๋์ ์ปจํ ์ด๋์ ํ์ค์ ๋ ฅ์ด๋ ํ์ค์ถ๋ ฅ, ํ์ค์ค๋ฅ์ ์ฐ๊ฒฐ์ํต๋๋ค.[arg]๋ก stdin, stdout, stderr๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ค ์ถ๋ ฅ๊ณผ ํ์ค ์๋ฌ๊ฐ ํฐ๋ฏธ๋๋ก ์ ๋ฌ๋ฉ๋๋ค. -
--detach,-d:-a์ต์ ๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ปจํ ์ด๋๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ์ํต๋๋ค. ์ปจํ ์ด๋์ ํ์ค์ถ๋ ฅ์ด๋ ํ์ค์ค๋ฅ๋ ๋์๋ณด๋๋docker logs๋ช ๋ น์ด๋ฅผ ํตํด ํ์ธํ ์ ์์ต๋๋ค. -
--entrypoint ARG: ์ด๋ฏธ์ง์ entrypoint๋ฅผ ๋ฎ์ด์์๋๋ค. entrypoint๋ ์ด๋ฏธ์ง๊ฐ ์ปจํ ์ด๋๋ก ์คํ๋ ๋ ์คํ๋๋ ๋ช ๋ น์ด๋ฅผ ๋งํฉ๋๋ค.[COMMAND]๋ entrypoint์ ์ธ์๋ก ์ ๋ฌ๋ฉ๋๋ค. -
--env KEY=VALUE,-e: ์ปจํ ์ด๋์ ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค. -
--env-file: ํ๊ฒฝ๋ณ์ ๋ชฉ๋ก์ด ๋ค์ด์๋ env-file์ ์ค์ ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก.env์ ๋๋ค. -
--expose HOST_PORT:CONTAINER_PORT,-p: ์ปจํ ์ด๋์ ํฌํธ๋ฅผ ๋ ธ์ถ์ํต๋๋ค.-p host-port-number:container-port-number๊ณผ ๊ฐ์ ํํ๋ก ์ฌ์ฉํฉ๋๋ค. -
--interactive,-i: ์ปจํ ์ด๋์ stdin์ ์ด์ด๋์ต๋๋ค.-d๋ช ๋ น์ด์ ๊ฐ์ด ์ฌ์ฉํ ์๋ ์์ผ๋ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ๋ณดํต-t์ต์ ๊ณผ ๊ฐ์ด ์ฌ์ฉํฉ๋๋ค. -
--name NAME: ์ปจํ ์ด๋์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ์ง์ ํ์ง ์๋ ๊ฒฝ์ฐ ์์์ ๋จ์ด ์กฐํฉ์ผ๋ก ๋ง๋ค์ด์ง๋๋ค. -
--network NETWORK: ์ ์ธ๋ ๋์ปค ๋คํธ์ํฌ์ ์ฐ๊ฒฐํฉ๋๋ค. -
--restart POLICY: ๋์ปค๊ฐ ์ข ๋ฃ๋์์ ๋ ์ฌ์์ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.on-failure[:max-retries],unless-stopped,always,no์ POLICY๊ฐ ์๊ณ , ๊ธฐ๋ณธ๊ฐ์ no์ ๋๋ค. -
--rm: ์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋ ๊ฒฝ์ฐ ์ปจํ ์ด๋๋ฅผ ์ญ์ ํฉ๋๋ค. -
--tty,-t: pseudo-tty๋ฅผ ํ ๋นํฉ๋๋ค. ์ปจํ ์ด๋์ stdin์ด ์ด๋ ค์๋ค๋ฉด ํฐ๋ฏธ๋์ ํตํด ์ปจํ ์ด๋์ ๋ช ๋ น์ด๋ฅผ ์จ๋ฃ์ ์ ์์ต๋๋ค. ์ฃผ๋ก-i์ต์ ๊ณผ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค. -
--volume VOLUME_DECLARE...,-v: ์ปจํ ์ด๋์ ๋ณผ๋ฅจ์ ์ค์ ํฉ๋๋ค. docker volume ํํธ์์ ์์ธํ ๋ค๋ฃจ๊ฒ ์ต๋๋ค. -
--volumes-from CONTAINER: ๋ค๋ฅธ ์ปจํ ์ด๋๊ฐ ์ฌ์ฉ ์ค์ธ ๋ณผ๋ฅจ์ ํ์ฌ ์ปจํ ์ด๋์ ๋ง์ดํธํฉ๋๋ค. -
--workdir DIR,-w: ์ปจํ ์ด๋ ๋ด๋ถ์์ entrypoint๋ cmd๊ฐ ์คํ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์ง์ ํด์ค๋๋ค. -
๐งโ๐ง docker build
$ docker build [OPTIONS] PATH | URL | -
๋์ปคํ์ผ๊ณผ ์ปจํ ์คํธ๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋ช ๋ น์ด์ ๋๋ค. Dockerfile ํญ๋ชฉ์์ ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
-
๐ค docker exec
์๋์ค์ธ ์ปจํ ์ด๋ ๋ด๋ถ์์ ๋ช ๋ น์ด๋ฅผ ์คํ์ํค๋ ๋ช ๋ ์ด์ ๋๋ค.
$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
์ต์
์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋๋ฐ, ๋ชจ๋ docker run์ ์๋ ์ต์
๋ค์
๋๋ค. --detach, -d ์ต์
, --env, -e ์ต์
, --env-file ์ต์
, --interactive, -i ์ต์
, --tty, -t ์ต์
, --workdir, -w ์ต์
๋ฑ์ด ์์ต๋๋ค. ์์ธํ ์ค๋ช
์ docker run ํญ๋ชฉ์ด๋ ๊ณต์ ๋ฌธ์๋ฅผ ๋ด์ฃผ์ธ์.
$ docker container cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
$ docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
docker container cp์ docker cp ๋ช
๋ น์ด๋ ์ปจํ
์ด๋ ๋ด๋ถ์์ ํธ์คํธ๋ก, ๋๋ ๊ทธ ๋ฐ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ด๋์ํค๋ ๋ช
๋ น์ด์
๋๋ค. ๋์ปค ๋ด๋ถ ํ๋ก๊ทธ๋จ์ ๋๋ฒ๊น
ํ๊ฑฐ๋ ๋ก๊ทธ ํ์ผ์ ๊บผ๋ผ ๋ ์ ์ฉํ ๋ช
๋ น์ด์
๋๋ค.
docker container cp๋ช
๋ น์ CONTAINER:SRC_PATH๊ฒฝ๋ก์ ํด๋/ํ์ผ์ DEST_PATH, ํน์ stdout / tar archive ํ์ผ๋ก ๋ณต์ฌํฉ๋๋ค. docker cp๋ช
๋ น์ ๋ฐ๋๋ก ์ปจํ
์ด๋ ๋ฐ์ SRC_PATH๊ฒฝ๋ก, ํน์ stdin / tar archive ํ์ผ์ CONTAINER:DEST_PATH๊ฒฝ๋ก๋ก ๋ณต์ฌํ๊ฒ ๋ฉ๋๋ค.
--follow-link, -L๋ฅผ ์ฌ์ฉํ๋ฉด SRC_PATH์ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
-
๐ docker logs
$ docker logs [OPTIONS] CONTAINER
์ปจํ
์ด๋ ๋ด๋ถ ํ๋ก๊ทธ๋จ์ ๋ก๊ทธ๋ฅผ ํฐ๋ฏธ๋์ ๋์๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ์ปจํ
์ด๋๋ฅผ ์์ํ ๋๋ถํฐ ํ์ฌ๊น์ง์ด๋ฉฐ, ์ต์
์ผ๋ก ์กฐ์ ํ ์ ์์ต๋๋ค.
--follow, -f์ต์
์ ์ปจํ
์ด๋์ stdout๊ณผ stderr๋ฅผ ํฐ๋ฏธ๋์ ์ค์๊ฐ์ผ๋ก ์ถ๋ ฅํฉ๋๋ค. --tail, -n ์ต์
์ ํ๋์ ์์๋ฅผ ์ธ์๋ก ๊ฐ์ง๋ฉฐ, ๋ง์ง๋ง n๊ฐ์ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
-
๐ณ docker rm
$ docker rm [OPTIONS] CONTAINER [CONTAINER...]
์ปจํ
์ด๋๋ฅผ ์ญ์ ํ๋ ๋ช
๋ น์ด์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ง๋ ์ปจํ
์ด๋๋ง ์ญ์ ํ ์ ์์ง๋ง --force, -f์ต์
์ ์ฌ์ฉํ๋ฉด ํ์ฌ ๊ฐ๋ ์ค์ธ ์ปจํ
์ด๋๋ ์ค์ง ํ ์ญ์ ํ ์ ์์ต๋๋ค. --volumes, -v ๋ช
๋ น์ด๋ฅผ ํตํด ์ง์์ง ์ปจํ
์ด๋์ ๋ถ์ด์๋ ์ต๋ช
๋ณผ๋ฅจ์ ํ ๋ฒ์ ์ญ์ ํ ์ ์์ต๋๋ค.
๐ ๋ณผ๋ฅจ
๋์ปค ๋ณผ๋ฅจ์ ์ฌ์ฉ ๋ฐฉ์์๋ ํฌ๊ฒ ์ธ ๊ฐ์ง ๋ฐฉ์์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ ๋์ปค ๋ณผ๋ฅจ, ๋ ๋ฒ์งธ๋ ๋ฐ์ธ๋ ๋ง์ดํธ, ์ธ ๋ฒ์งธ๋ ๋ณผ๋ฅจ ์ปจํ
์ด๋์
๋๋ค.
๋์ปค ๋ณผ๋ฅจ์ ๋์ปค ๋ด๋ถ์ ๊ฒฝ๋ก๋ฅผ ๋ช
์ํ๋ ๊ฒ์ผ๋ก ์ ์ธํ ์ ์์ต๋๋ค. ์ด๋, ์ด ๊ฒฝ๋ก๋ ๋จ์ผ ํ์ผ์ด ๋ ์๋ ์์ต๋๋ค. docker run ๋ช
๋ น์ด ์คํ ์์ -v ๋ค์ ์ปจํ
์ด๋ ๋ด๋ถ์ ์ ๋ ๊ฒฝ๋ก๋ฅผ ๋ถ์ฌ์ฃผ๋ ๊ฒ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ์ด๋, ๋์ปค๋ ์๋ณ ๊ฐ๋ฅํ ์์์ ์ด๋ฆ์ ๋ณผ๋ฅจ์ ์ง์ ํด์ค๋๋ค. ์ด ์ด๋ฆ์ docker volume ๋ช
๋ น์ด๋ก ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ฆ์ ์ง์ ์ง์ ํด์ค ์๋ ์์ต๋๋ค. ์ด๋๋ -v NAME:CONTAINER_PATH ํ์์ผ๋ก ์ต์
์ ์ ์ธํ๋ฉด ๋ฉ๋๋ค.
์ด ๋ฐฉ์์ผ๋ก ๋ณผ๋ฅจ์ ์ ์ธํ๊ฒ ๋๋ฉด, ๋์ปค๋ ํธ์คํธ์ ํ์ผ ์์คํ
์ด๋๊ฐ์ ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ์ฌ ์ปจํ
์ด๋๊ฐ ์ง์ ๋ ํด๋๋ฅผ ์ฌ์ฉํ ๋ ๋ฉ๋ชจ๋ฆฌ ๋์ ์ ํด๋น ๋์คํฌ ๊ณต๊ฐ์ ๋์ ์ฌ์ฉํ ์ ์๋๋ก ํด์ค๋๋ค.
๋ฐ์ธ๋ ๋ง์ดํธ๋ ํธ์คํธ์ ๊ฒฝ๋ก์ ๋์ปค ๋ด๋ถ์ ํ์ผ์ ์ ์ธํด์ผํฉ๋๋ค. ๋ ์ค ํ๋๊ฐ ํ์ผ์ด๊ณ ๋ค๋ฅธ ํ๋๊ฐ ๋๋ ํ ๋ฆฌ๋ฉด ๋ ์ค ํ๋์ ๋๋ ํ ๋ฆฌ ์์ ํ์ผ์ด ์์ฑ๋์ด ๋ง์ดํธ๋ฉ๋๋ค. -v HOST_PATH:CONTAINER_PATH์ ํํ๋ก ์์ฑํ ์ ์๊ณ , HOST_PATH๋ ์๋ ๊ฒฝ๋ก์ ์ ๋ ๊ฒฝ๋ก ๋ ๋ค ๊ฐ๋ฅํฉ๋๋ค. ํธ์คํธ ๋๋ ํ ๋ฆฌ๊ฐ ์์คํ
๋๋ ํ ๋ฆฌ์ผ ๊ฒฝ์ฐ๋, ๊ธฐํ ์ด์ ๋ก ์ปจํ
์ด๋๊ฐ ์์ ํ๊ธธ ์ํ์ง ์๋๋ค๋ฉด ์ฝ๊ธฐ์ ์ฉ ์ต์
์ ๋ถ์ผ ์๋ ์์ต๋๋ค. -v /etc/localtime:/etc/localtime:ro์ ๊ฐ์ด ๋ง์ง๋ง์ :ro๋ฅผ ๋ถ์ด๋ ๊ฒ์ผ๋ก ๊ฐ๋ฅํฉ๋๋ค.
๋ณผ๋ฅจ ์ปจํ
์ด๋๋ ๋ค๋ฅธ ์ปจํ
์ด๋์ ๋ง์ดํธ ๋์ด์๋ ๋ณผ๋ฅจ์ ๊ณต์ ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. --volumes-from CONTAINER_NAME๊ณผ ๊ฐ์ ํํ๋ก ์ฌ์ฉํ๋ฉฐ, ๋ง์ดํธ ๋๋ ํ ๋ฆฌ๋ ๋์ผํ๊ฒ ์ค์ ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ํ๋์ ๋ณผ๋ฅจ์ ์ฌ๋ฌ ๊ฐ์ ์ปจํ
์ด๋๊ฐ ๊ณต์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
-
๐งบ docker volume
docker volume ํ์ ๋ช ๋ น์ด์ ๊ฐ๋ตํ ์ค๋ช ์ ๋๋ค.
-
docker volume create VOLUME- ํด๋น ๋ช ๋ น์ด๋ฅผ ํตํด ๋์ปค๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ๋ณผ๋ฅจ์ ์์ฑํ ์ ์์ต๋๋ค.
-
docker volume ls [OPTIONS]- ํด๋น ๋ช ๋ น์ด๋ฅผ ํตํด ํ์ฌ ์กด์ฌํ๋ ๋ณผ๋ฅจ์ ๋ฆฌ์คํธ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
-
--quiet,-q์ต์ ์ ํตํด ๋ณผ๋ฅจ ID๋ง์ ์ถ๋ ฅํ๊ฒ ํ ์ ์์ต๋๋ค.
-
docker volume prune [OPTIONS]- ์ด๋ ํ ์ปจํ ์ด๋์๊ฒ๋ ์ฌ์ฉ๋๊ณ ์์ง ์์ ๋ชจ๋ ๋ณผ๋ฅจ์ ์ ๊ฑฐํฉ๋๋ค.
-
-f์ต์ ์ผ๋ก ํ์ธ ๋ฉ์์ง๋ฅผ ๋์ฐ์ง ์๊ฒ ํ ์ ์์ต๋๋ค.
-
docker volume rm [OPTIONS] VOLUME [VOLUME...]- ์ฌ์ฉ ์ค์ด์ง ์์ ๋ณผ๋ฅจ์ ์ ๊ฑฐํฉ๋๋ค.
-
--force,-f๋ช ๋ น์ด๋ก ์ฌ์ฉ ์ค์ธ ๋ณผ๋ฅจ๋ ๊ฐ์ ๋ก ์ ๊ฑฐํ ์ ์์ต๋๋ค.
๋์ปค์ ์ปจํ ์ด๋๋ค์ ๊ฐ์ํ๋ OS๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ํฌํธ์ DNS ๋ฑ์ด ํธ์คํธ์๋ ๋ณ๊ฐ๋ก ์ค์ ๋์ด์์ต๋๋ค. ์ด๋ค์ ํ๋ฐ ๋ฌถ์ด์ ๊ด๋ฆฌํ ์ ์๋ ๊ธฐ๋ฅ์ด ๋์ปค ๋คํธ์ํฌ์ ๋๋ค. ๋์ปค ๋คํธ์ํฌ๋ ๋๋ผ์ด๋ธ์ ๋ฐ๋ผ ์ฌ๋ฌ ์ข ๋ฅ์ ๊ฐ์ฒด๋ก ๋๋ฉ๋๋ค. ๋๋ผ์ด๋ฒ๋ bridge, host, ipvlan ๋ฑ์ด ์์ต๋๋ค.
bridge ๋๋ผ์ด๋ฒ๋ ๊ธฐ๋ณธ ๋๋ผ์ด๋ฒ๋ก, ์๋ฌด ๋๋ผ์ด๋ฒ๋ ์ค์ ํ์ง ์์ผ๋ฉด bridge ๋๋ผ์ด๋ฒ๋ก ์ค์ ์ด ๋ฉ๋๋ค. ํ๋์ bridge ๋คํธ์ํฌ์ ํฌํจ๋ ์ปจํ
์ด๋๋ค์ ์๋ก๊ฐ์ ์ง์ ์ ์ธ ํต์ ์ด ๊ฐ๋ฅํ์ง๋ง ์๋ก ๋ค๋ฅธ bridge ๋คํธ์ํฌ์ ์๋ ์ปจํ
์ด๋๋ค์ ๊ทธ๋ ์ง ์์ต๋๋ค.
host ๋๋ผ์ด๋ฒ๋ ํธ์คํธ์์ ๋คํธ์ํฌ ๋ถ๋ฆฌ๋ฅผ ์ ์งํ์ง ์๊ณ , ์ปจํ
์ด๋๊ฐ ์ฆ๊ฐ์ ์ผ๋ก ํธ์คํธ์ ๋คํธ์ํฌ๋ฅผ ์ด์ฉํ ์ ์๊ฒ ํฉ๋๋ค.
ipvlan ๋๋ผ์ด๋ฒ๋ ์ ์ ๊ฐ IPv4์ IPv6์ ์ฃผ์ ๊ด๋ฆฌ๋ฅผ ์ง์ ์ ์ผ๋ก ํ ์ ์๊ฒ ํด์ฃผ๋ ๋๋ผ์ด๋ฒ์
๋๋ค.
๊ทธ๋ฐ์ macvlan, overlay ๋ฑ์ ๋๋ผ์ด๋ฒ๊ฐ ์๊ณ , ์๋ํํฐ์ ํ๋ฌ๊ทธ์ธ์ ๋๋ผ์ด๋ฒ๋ก ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
none์ผ๋ก ์ค์ ํ์ฌ, ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ธ๋ถ์ ๋คํธ์ํฌํ์ง ์๊ฒ ์ปจํ
์ด๋๋ฅผ ๋ถ๋ฆฌ์์ผ๋ ์๋ ์์ต๋๋ค.
-
๐ช docker network
docker network ํ์ ๋ช ๋ น์ด์ ๊ฐ๋ตํ ์ค๋ช ์ ๋๋ค.
-
docker network create [OPTIONS] NETWORK- NETWORK์ ์ด๋ฆ์ ๊ฐ์ง ๋คํธ์ํฌ๋ฅผ ์์ฑํฉ๋๋ค. ์ต์ ์ ์ฃผ์ง ์์ผ๋ฉด bridge ๋คํธ์ํฌ๊ฐ ์์ฑ๋ฉ๋๋ค.
-
--driver DRIVER,-d๋คํธ์ํฌ์ ๋๋ผ์ด๋ฒ๋ฅผ ์ ํํฉ๋๋ค. - ๊ธฐํ ์ฌ๋ฌ ๊ฐ์ง ์ต์ ๋ค์ด ์์ผ๋ฉฐ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
-
docker network ls [OPTIONS]- ๋์ปค ๋คํธ์ํฌ์ ๋ชฉ๋ก์ ๋ณด์ฌ์ค๋๋ค.
-
-quiet,-q์ ์ต์ ์ ์ฃผ๋ฉด ID๋ง ๋ณด์ฌ์ค๋๋ค.
-
docker network prune [OPTIONS]- ๋จ ํ๋์ ์ปจํ ์ด๋์์๋ ์ฐ์ด์ง ์๋ ๋คํธ์ํฌ๋ฅผ ์ญ์ ํฉ๋๋ค.
-
-f์ต์ ์ ์ฌ์ฉํ๋ฉด ํ์ธ ๋ฉ์์ง๋ฅผ ๋์ฐ์ง ์์ต๋๋ค.
-
docker network rm NETWORK [NETWORK...]- ๋์ปค ๋คํธ์ํฌ๋ฅผ ์ญ์ ํฉ๋๋ค.
-
-f์ต์ ์ด ์์ต๋๋ค.
๋์ปค๋ฅผ ํตํด์ ์๋น์ค๋ฅผ ๋์ฐ๊ธฐ ์ํด์๋ ์ด๋ฏธ์ง๊ฐ ํ์ํฉ๋๋ค. ๋์ปค ํ๋ธ์ ์ฌ๋ผ์ ์๋ ์ด๋ฏธ์ง๋ก ์ถฉ๋ถํ ๊ฒฝ์ฐ๋ ๋๋ถ๋ถ์ด์ง๋ง ์ง์ ์ด๋ฏธ์ง๋ฅผ ์ ์ํด ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ํธํ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ ์ํ๊ธฐ ์ํด์๋ ๋ฒ ์ด์ค๊ฐ ๋๋ ์ด๋ฏธ์ง์ ์ถ๊ฐ ์์ ์ ํด์ ์ํ๋ ํํ๋ก ๋ง๋ค์ด์ผ ํ๋๋ฐ, ์ด ์์ ์ ์ด์ฉ๋๋ ๊ฒ์ด Dockerfile์ ๋๋ค.
Dockerfile์ ์ด๋ฏธ์ง๋ก ๋ง๋๋ ๊ฒ์ ๋น๋๋ผ๊ณ ํฉ๋๋ค. ์ด๊ฒ์ docker build PATH_TO_DOCKERFILE ๋ช
๋ น์ด๋ก ์คํ์ํฌ ์ ์์ต๋๋ค. ์ด ๊ณผ์ ์์ ์ฌ๋ฌ ๊ฐ์ง ์ต์
์ ์ค ์ ์์ต๋๋ค.
๊ทธ ์ ์, ์ด๋ฏธ์ง์ ๊ตฌ์กฐ์ ๋ํด ๊ฐ๋จํ๊ฒ ์์์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ์ด๋ฏธ์ง๋ ๋ฒ ์ด์ค๊ฐ ๋๋ OS ์ด๋ฏธ์ง์ ์ฌ๋ฌ ์์
์ ํ์ฌ ์์ฑ๋ ํํ๋ก ๋ง๋ค์ด๋ธ ๊ฒ์ธ๋ฐ, ์ด ์์
, ์ฆ ๋ช
๋ น์ด๋ค์ ๋ชฉ๋ก์ ๊ฐ๊ฐ ๋ ์ด์ด๋ผ๋ ํํ๋ก ์์ฌ ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ฑํ๊ฒ ๋ฉ๋๋ค. ๋ง์ฝ ๋ ์ด๋ฏธ์ง๊ฐ ์ค๊ฐ๊น์ง ๊ฐ์ ๊ณผ์ ์ ์์
์ ๊ฑฐ์ณค๋ค๋ฉด, ๋ ์ด๋ฏธ์ง๋ ๋ฐ๋ก๋ฐ๋ก ์ ์ฅ๋๋ ๊ฒ์ด ์๋๋ผ ์ค๊ฐ๊น์ง์ ์์ฑ ๊ณผ์ ์ ๋์ผํ ๋ ์ด์ด๋ก ๊ณต์ ํ๊ฒ ๋ฉ๋๋ค. ๋ง์ฝ ์์ฑ ๊ณผ์ ์ด ๊ฒน์น๋ ์ด๋ฏธ์ง๋ฅผ ํ๋ธ์์ ๋ค์ด๋ฐ๋๋ค๊ณ ํ๋ฉด, ์ด๋ฏธ ๊ฐ์ง๊ณ ์๋ ๋ ์ด์ด๋ ๋ค์ด๋ฐ์ง ์์๋ ๋ฉ๋๋ค.
Dockerfile๋ก ์ฌ๋ฌ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ๋ ์ด ์ ์ ์ ์ํ๋ฉด ํจ์จ์ ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๊ณตํต๋๋ ๊ณผ์ ์ ์ด๋ฏธ์ง๋ก ๋จผ์ ๋ง๋ค์ด๋๊ฑฐ๋, ๊ณตํต๋ ๊ณผ์ ์ ๊ฑฐ์น๋๋ก ์ค์ ํ๊ฒ ๋๋ฉด ๋ ์ด์ด๋ฅผ ๊ณต์ ํ๊ฒ ๋์ด ์ด๋ฏธ์ง ์ ์ฅ ๊ณต๊ฐ, ๋น๋ ์๋์ ์ด์ ์ ๋ณผ ์ ์์ต๋๋ค.
๋ค์์ ๊ฐ๋จํ Dockerfile์ ์์์ ๋๋ค. ๋ด์ฉ์ ์ดํดํ ํ์ ์์ด ๊ฐ ์ค์ ๋๋ฌธ์๋ก ์ฐ์ธ ์ฒซ ๋จ์ด์ธ intruction๋ฅผ ์ดํดํ๋๋ก ํฉ์๋ค. Dockerfile์ '#'๋ก ์ฃผ์์ ํ์ํฉ๋๋ค.
FROM node:16 # node:16 ์ด๋ฏธ์ง๋ฅผ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ก ์ฌ์ฉํฉ๋๋ค.
WORKDIR /app # ๋ช
๋ น๋ค์ ์คํํ ๋๋ ํ ๋ฆฌ๋ฅผ ์ง์ ํฉ๋๋ค.
ENV PATH /app/node_modules/.bin:$PATH # ์ด๋ฏธ์ง ๋ด ํ๊ฒฝ๋ณ์๋ฅผ ์ง์ ํฉ๋๋ค.
COPY . . # host์ .๋๋ ํ ๋ฆฌ์ ์๋ ํ์ผ์ ์ด๋ฏธ์ง ๋ด์ .๋๋ ํ ๋ฆฌ ํด๋๋ก ๋ณต์ฌํฉ๋๋ค. .dockerignore๋ฅผ ์ฐธ์กฐํ์ฌ ์ ์ธ์ํต๋๋ค.
RUN npm i # ํ์ฌ WORKDIR์์ npm i๋ฅผ ์คํํฉ๋๋ค.
ENTRYPOINT ["./entrypoint.sh"] # ์ด๋ฏธ์ง๊ฐ ๊ตฌ๋๋ ๋ ์คํ๋๋ ๋ช
๋ น์ด์ธ entrypoint๋ฅผ ์ค์ ํด์ค๋๋ค.
CMD ["run", "start:dev"] # entrypoint์ ์ธ์๊ฐ ๋๋ cmd๋ฅผ ์ค์ ํด์ค๋๋ค.๊ฐ instruction์ด ์คํ๋ ๋๋ง๋ค layer๊ฐ ์์ฑ๋๊ฒ ๋ฉ๋๋ค.
์ด๋ฏธ์ง ๋ด๋ถ๋ก ํ์ผ์ ๋ณต์ฌํ ๋ ๋ณต์ฌ๋๊ธธ ์ํ์ง ์๋ ํ์ผ์ด ์์ ์ ์์ต๋๋ค. git์ .gitignore๊ณผ ๋น์ทํ๊ฒ .dockerignoreํ์ผ์ ๋ณต์ฌ๋๊ธธ ์ํ์ง ์๋ ํ์ผ๊ณผ ํด๋์ ๋ชฉ๋ก์ ๋ฃ์ด๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด์ Dockerfile ์์ฒด์ผ ์ ์์ต๋๋ค.
Dockerfile์ ๊ตฌ์ฑํ๋ instruction์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
-
FROM <image>:<tag>- Dockerfile์ ํ์์ ์ธ instruction์ ๋๋ค.
- ๋ฒ ์ด์ค๋ก ์ฌ์ฉํ ์ด๋ฏธ์ง๋ฅผ ์ ํํฉ๋๋ค. ํ๊ทธ๋ฅผ ์ ํํ์ง ์์ผ๋ฉด lastest ํ๊ทธ๊ฐ ์๋์ผ๋ก ์ ํ๋๋ฉฐ, ๋ก์ปฌ์ ์ด๋ฏธ์ง๊ฐ ์์ผ๋ฉด docker hub์์ ์๋์ผ๋ก ๋ฐ์์ค๊ฒ ๋ฉ๋๋ค.
-
LABEL <key>=<value>- ํค์ ๊ฐ ์์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฉํ๋ฐ์ดํฐ์ ๋๋ค. ์ด๋ฏธ์ง ๋ด์ฉ์๋ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
- ์์
LABEL [email protected]LABEL version=1.0LABEL environment=dev
-
WORKDIR /path/to/workdir-
RUN์ด๋COPY๊ฐ์ intruction์ ์คํํ ๋๋ ํ ๋ฆฌ๋ฅผ ์ค์ ํฉ๋๋ค.
-
RUN <command>-
RUN ["executable", "param1", "param2"]-
<command>๋๋executable param1 param2๋ฅผ ์ด๋ฏธ์ง ๋ด๋ถ์์ ์คํํฉ๋๋ค. - ๊ธฐ๋ณธ์ ์ผ๋ก ''์์ ์คํ๋๋ฉฐ, 'WORKDIR'์ด ์ค์ ๋์ด์๋ค๋ฉด ๊ทธ๊ณณ์์ ์คํ๋ฉ๋๋ค.
-
\๋ก ์ปค๋งจ๋ ์์์ ์ค์ ๋ฐ๊ฟ ์ ์์ต๋๋ค.
-
-
ENTRYPOINT ["executable", "param1", "param2"]- 'exec' form -
ENTRYPOINT <command>- 'shell' form- ์ด๋ฏธ์ง๊ฐ ์ปจํ ์ดํฐ๋ก ๋์์ง ๋ ์ต์ด๋ก ์คํ๋ ๋ช ๋ น์ด๋ฅผ ์ค์ ํฉ๋๋ค.
- 'CMD'๋ docker run์ผ๋ก ์คํ๋๋ ๋ช ๋ น์ด๋ entrypoint์ ์ธ์๊ฐ ๋ฉ๋๋ค.
- entrypoint๊ฐ ์์ผ๋ฉด 'CMD'๋
docker run์ ์ง์ ๋ ๋ช ๋ น์ด๊ฐ ์ต์ด ์คํ๋ฉ๋๋ค. - cmd์๋ ๋ค๋ฅด๊ฒ ์ด๋ฏธ์ง๋ฅผ ์์ ํ์ง ์๊ณ ์๋ ์์ ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
-
CMD ["executable","param1","param2"]- entrypoint๊ฐ ์์ ๋ -
CMD ["param1", "param2"]- entrypoint๊ฐ ์์ ๋ -
CMD <command>- 'shell' form-
docker run์ cmd๊ฐ ์์ ์์ ๊ธฐ๋ณธ ์ปค๋งจ๋๋ฅผ ์ง์ ํฉ๋๋ค. - entrypoint์๋ ๋ฌ๋ฆฌ ๋ช ๋ น์ด๋ก ๋์ฒด ๊ฐ๋ฅํฉ๋๋ค.
-
COPY [--chown=<user>:<group>] <src>... <dest>-
COPY [--chown=<user>:<group>] ["<src>",... "<dest>"]-
[--chown]๋ถ๋ถ์ ์๋ต์ด ๊ฐ๋ฅํฉ๋๋ค. ํน์ ์ ์ ์ ๊ทธ๋ฃน์ ์์ ์๋ก ๋๋ ํ ๋ฆฌ์ ํ์ผ์ ์์ฑํฉ๋๋ค. - ์ฌ๋ฌ ๊ฐ์ ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ๋ฅผ ํ ๋ฒ์ dest ๋๋ ํ ๋ฆฌ(ํน์ ํ์ผ)๋ก ์ฎ๊ฒจ์ค๋๋ค.
-
ADD [--chown=<user>:<group>] <src>... <dest>-
ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]- COPY์ ๊ธฐ๋ฅ์ ํฌํจํ๊ณ ์์ต๋๋ค.
-
<src>์ url์ด๋ tarํ์ผ์ด ์ฌ ์ ์์ต๋๋ค.
-
ENV <key>=<value> ...- ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.
- ์ฌ๋ฌ ๊ฐ์ ํ๊ฒฝ๋ณ์๋ฅผ ํ ๋ฒ์ ์ค์ ํ ์ ์์ต๋๋ค.
- ๋ง๋ค์ด์ง ์ปจํ ์ด๋์๋ ํ๊ฒฝ๋ณ์๊ฐ ์์๋ฉ๋๋ค.
-
ARG <name>[=<default value>]- Dockerfile ๋น๋ ๊ณผ์ ์์๋ง ์ฌ์ฉ๋ ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.
-
docker build --build-arg <name>=<value>๊ฐ์ ํ์์ผ๋ก ๋น๋ ์ ๊ฐ์ ์ค์ ํด์ค ์ ์์ต๋๋ค. - ์์ฑ๋ ์ด๋ฏธ์ง์ ๊ฐ์ด ๋จ์ง ์์ต๋๋ค.
-
EXPOSE <port> [<port>/<protocol>...]- ๋ง๋ค์ด์ง ์ปจํ ์ด๋์ ํฌํธ๋ฅผ ๋ ธ์ถ์ํต๋๋ค.
- ์ด ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ง ์์๋
docker run -p <port>:<port>/protocol>๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋๋ฅผ ๋ง๋ค ๋ ๋ ธ์ถ์ํฌ ์ ์์ต๋๋ค.