์๋ ํ์ธ์
๊ณต๋ถํ๋ ์ ์ด์ ๋๋ค.
๋์ปค๋ฅผ ๊ณต๋ถํ๊ณ ์์ต๋๋ค. ๋ฐฐํฌ๋ฅผ ํด์ผํ ์ผ์ด ์๋๋ฐ, ํ์ด์ฌ ๊ฐ์ ๊ฒฝ์ฐ ๋ด๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ณ์ ์ ๋ฐ์ดํธ ๋๊ธฐ ๋๋ฌธ์ ํธํ์ฑ์ ๋ง์ถฐ์ฃผ๋ ค๋ฉด ๋์ปค๊ฐ ๋ต์ธ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค. ๊ทธ๋์ ์ ๊ฐ ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ธ๋ก๊ทธ์ ํ์ฅ์ผ๋ก ์ ๋ฆฌํด์ ๋์ค์ ์ฐพ์๋ณด๊ธฐ ์ฝ๊ฒ ์ฝ๋๋ ๊ฐ์ด ์ ๋ฆฌํด์ ๋ฃ์์ต๋๋ค. ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ, ๋ถ์กฑํ ๋ด์ฉ์ ํผ๋๋ฐฑ ์ฃผ์๋ฉด ๋ฐ์ํ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ธ์ ๋ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ, ์ค๋ ํ๋ฃจ๋ ์น๋ฆฌํ๋ ํ๋ฃจ ๋ณด๋ด์๊ธธ ๋ฐ๋ผ๊ฒ ์ต๋๋ค. ๋ชจ๋ ์ง์ฅ์ธ, ํ์ ๋ถ๋ค์ด์ฌ ํ๋ด์ธ์. ๊ฐ๋ฐ์ด ์ฝ์ง๋ ์์ง๋ง ๊ณต๋ถํ ์๋ก ์ฌ๋ฐ๋ค๋ ์๊ฐ์ด ๋ญ๋๋ค.
๊ทธ๋ผ ์์ํ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ฌ๋ฐ๊ฒ ๊ณต๋ถํด๋ด ์๋ค.
1. ๋์ปค
- ์๋น์คํ ํ๋ซํผ
- ๊ฒฉ๋ฆฌ๋ ๊ฐ์ํ ํ๊ฒฝ ์์ฑ
- ์ปจํ
์ด๋ ์์ง์ผ๋ก ๋ฆฌ๋
์ค ์ปค๋ ๊ธฐ๋ฅ ์ฌ์ฉ
- ์ด์ ์ฒด์ ์์ ์ปจํ
์ด๋ ์์ฑ
- Docker ๋ฐ๋ชฌ์ด ์ปจํ
์ด๋ ๊ด๋ฆฌ
* ์์์ ๋์จ netlink, namespaces, cgroups๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์์์ด๋ฏ๋ก, ๊ฐ๋จํ๊ฒ ๋ด์ฉ ํ์ ํ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
netlink
๋คํธ์ํฌ ๊ด๋ จ ์ด๋ฒคํธ๋ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ์ธํฐํ์ด์ค์
๋๋ค.
์์ผ์ ํตํด ์ปค๋๊ณผ ์ ์ ์คํ์ด์ค ๊ฐ์ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ์ํ, ๋ผ์ฐํ
ํ
์ด๋ธ ์ ๋ณด, ํจํท ์์ ๋ฑ์ ๋ํ ์ด๋ฒคํธ๋ฅผ ์๋ฆฝ๋๋ค.
namespaces
๋ฆฌ๋
์ค ์์คํ
์์ ํ๋ก์ธ์ค๋ค์ด ์ฌ์ฉํ๋ ์์คํ
์์์ ๊ฒฉ๋ฆฌ์ํค๊ธฐ ์ํ ๊ธฐ์ ์
๋๋ค.
๊ฐ๊ฐ์ namespace๋ ์์์ ๋ํ ๋
๋ฆฝ์ ์ธ ๊ฐ์ ๊ณต๊ฐ์ ์ ๊ณตํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ํ๋ก์ธ์ค์ ํ์ผ ์์คํ
, IPC(Inter-Process Communication), ๋คํธ์ํฌ, ํธ์คํธ ์ด๋ฆ ๋ฑ์ ๋ํด ๊ฐ๊ฐ์ namespace๋ฅผ ์์ฑํ์ฌ ๊ฒฉ๋ฆฌ์ํต๋๋ค.
cgroups
์ปจํธ๋กค ๊ทธ๋ฃน(Control Group)์ ์ฝ์๋ก, ๋ฆฌ๋
์ค ์ปค๋์์ ํ๋ก์ธ์ค ๊ทธ๋ฃน์ ๊ด๋ฆฌํ๋ ๊ธฐ์ ์
๋๋ค.
ํ๋ก์ธ์ค ๊ทธ๋ฃน์ ๋ํ ์์ ํ ๋น ๋ฐ ์ฌ์ฉ๋ ์ ํ, ์ฐ์ ์์ ์กฐ์ ๋ฑ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ IO ๋ฑ์ ์์์ ๋ํด cgroups๋ฅผ ์ค์ ํ์ฌ ํ๋ก์ธ์ค ๊ทธ๋ฃน๋ณ๋ก ์์ ํ ๋น ๋ฐ ์ ํ์ ํ ์ ์์ต๋๋ค.
2. ๋์ปค ์ด๋ฏธ์ง
- Docker๋ ์ดํ๋ฆฌ์ผ์ด์
์ ํฌ์ฅํ๊ณ ์ ์กํ๊ธฐ ์ํด "Docker ์ด๋ฏธ์ง"๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- Docker ์ด๋ฏธ์ง๋ ๋ ๋ฆฝ์ ์ธ ํ๊ฒฝ์ ํฌํจํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋๋ฐ ํ์ํ ๋ชจ๋ ํ์ผ์ ๋ด๊ณ ์๋ ์ผ์ข ์ ํ ํ๋ฆฟ์ ๋๋ค.
- ์ด ์ด๋ฏธ์ง๋ ์์ค ์ฝ๋, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ข ์์ฑ, ๋๊ตฌ ๋ฑ์ ํฌํจํ์ฌ ๋ถ๋ณํ ํ์ผ์ ๋๋ค.
- ์ด๋ฌํ ์ผ๊ด์ฑ์ Docker์ ํฐ ์ฅ์ ์ค ํ๋์ด๋ฉฐ, ๊ฐ๋ฐ์๊ฐ ์์ ์ ์ด๊ณ ๊ท ์ผํ ์กฐ๊ฑด์์ ์ํํธ์จ์ด๋ฅผ ํ ์คํธํ๊ณ ์คํํ ์ ์๋๋ก ํฉ๋๋ค.
- Docker ์ด๋ฏธ์ง๋ ํ
ํ๋ฆฟ์ผ ๋ฟ์ด๋ฏ๋ก ์์ํ๊ฑฐ๋ ์คํํ ์ ์์ต๋๋ค.
- ๋์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์คํํฉ๋๋ค.
- ์ปจํ ์ด๋๋ ์ฝ๊ธฐ-์ฐ๊ธฐ ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ด ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํ๋ฉ๋๋ค.
- ์ด๋ ๊ฒ ํ๋ฉด ์ด๋ฏธ์ง์ ์์ ์ด ๋ถ๊ฐ๋ฅํ ๋ถ๋ณํ ๋ ์ด์ด ์์ ์ฐ๊ธฐ ๊ฐ๋ฅํ ๋ ์ด์ด๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
- ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ ์ด๋ฏธ์ง ๋ฒ ์ด์ค๋ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ, ์ปจํ ์ด๋ ๋ด๋ถ์์๋ง ์์ ๊ฐ๋ฅํฉ๋๋ค.
- ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์์ฑํ ๋, ์ด๋ฏธ์ง ๋ฒ ์ด์ค๋ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ปจํ ์ด๋๋ ์คํ ํ๊ฒฝ์ผ๋ก ํด๋น ์ด๋ฏธ์ง์ ์ฝ๊ธฐ-์ฐ๊ธฐ ๋ณต์ฌ๋ณธ์ ์์ฑํ๋ฉฐ, ์ด๋ฅผ ํตํด ์ปจํ ์ด๋ ๋ด์์ ์ด๋ฏธ์ง ์ ์ฒด ๋ณต์ฌ๋ณธ์ ์์ ํ ์ ์๊ฒ ๋ฉ๋๋ค. ์ด ๊ณผ์ ์ ํตํด ์ปจํ ์ด๋ ๋ ์ด์ด๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
- ๋์ปค ์ด๋ฏธ์ง๋ ํ๋์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง์์ ์์๋๋ฉฐ, ์ด๋ฏธ์ง์ ์ด๊ธฐ ์ํ๋ฅผ ๋ณ๊ฒฝํ๊ณ ๊ธฐ์กด ์ํ๋ฅผ ์ ์ฅํ ๋๋ง๋ค ์ถ๊ฐ ๋ ์ด์ด๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ๋ ์ด์ด๋ค์ ๊ณ์ธต ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ์ด์ ๋ ์ด์ด์์ ํ์๋ ๋ด์ฉ์ ํฌํจํ ์ ์์ต๋๋ค. ๊ฐ ๋ ์ด์ด๋ ์ด๋ฏธ์ง์ ์ผ๋ถ๋ฅผ ๋ํ๋ด๋ฉฐ, ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง์ ํฌํจํ์ฌ ์๋ก์ด ํ ํ๋ฆฟ์ด ๋ง๋ค์ด์ง๋๋ค. ์ด๋ฏธ์ง ๊ณ์ธต์ ์ปจํ ์ด๋ ๊ณ์ธต์ ์ฌ์ฉํ์ฌ ๊ฐ์ ํ๊ฒฝ์ ์์ํ ๋ ์ถ๊ฐ๋ ์ฝ๊ธฐ ์ ์ฉ ํ์ผ์ ๋ํ๋ ๋๋ค.
3. ์ปจํ ์ด๋
- Docker๋ ์ฌ์ฉ์๊ฐ ๊ธฐ๋ณธ ์์คํ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ถ๋ฆฌํ ์ ์๋ ๊ฐ์ํ๋ ๋ฐํ์ ํ๊ฒฝ์ ๋๋ค.
- ์ปจํ ์ด๋๋ portable units๋ก ์์ฉํ๋ก๊ทธ๋จ์ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ์์ํ ์ ์๋๋ก ํฉ๋๋ค.
- ์ค์ ๊ธฐ๋ฅ์ ์ปจํ ์ด๋ ๋ด๋ถ์์ ์คํ๋๋ ์ปดํจํ ํ๊ฒฝ์ ํ์คํ์ ๋๋ค. ์ด๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๋์ผํ ํ๊ฒฝ์์ ์๋ํ๋๋ก ํ ๋ฟ ์๋๋ผ ๋ค๋ฅธ ์ฌ๋๊ณผ์ ๊ณต์ ๋ ๋จ์ํํฉ๋๋ค.
- ์ปจํ ์ด๋๋ ์์จ์ (autonomous)์ด๊ธฐ ๋๋ฌธ์ strong isolation์ ์ ๊ณตํ๋ฉฐ ์๋ก ๋ฐฉํดํ์ง ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฒฉ๋ฆฌ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
- ํ๋์จ์ด ์์ค์์ ๊ฐ์ํ๊ฐ ์ด๋ฃจ์ด์ง๋ VM(๋ฒ์ถ์ผ ๋จธ์ )๊ณผ ๋ฌ๋ฆฌ ์ปจํ ์ด๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต์์ ๊ฐ์ํ๋ฉ๋๋ค.
- ํ๋์ ๋จธ์ ์ ํ์ฉํ๊ณ ์ปค๋์ ๊ณต์ ํ๋ฉฐ ๋ถ๋ฆฌ๋ ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ธฐ ์ํ ์ด์ ์ฒด์ ๋ฅผ ๊ฐ์ํํ ์ ์์ต๋๋ค.
- ๋ฐ๋ผ์ ์ปจํ ์ด๋๊ฐ ๋งค์ฐ ๊ฐ๋ฒผ์์ ธ ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ฌ์ฉํ์ง ์์ ์ ์์ต๋๋ค.
์ง๋ฌธ: ๋์ปค ์ด๋ฏธ์ง์ ์ปจํ ์ด๋๋ ์ด๋ป๊ฒ ๋ค๋ฅธ๊ฐ์?
- ๋์ปค ์ด๋ฏธ์ง์ ์ปจํ ์ด๋๋ ๋ฐ์ ํ ๊ด๋ จ์ด ์์ผ๋ฉฐ ๋์ปค ํ๋ซํผ์ ์ํด ์ ์๋ ์์คํ ์ ์ผ๋ถ์ ๋๋ค.
- ์ด๋ฏธ์ง๋ ์ปจํ ์ด๋ ์์ด ์กด์ฌํ ์ ์์ง๋ง, ์ปจํ ์ด๋๋ ์ด๋ฏธ์ง๋ฅผ ์คํํด์ผ ์์ฑ๋ฉ๋๋ค.
- ์ด๋ฏธ์ง๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ํ์ผ์ ํฌํจํ๊ณ , ์ปจํ ์ด๋๋ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํ๋๋ฉฐ, ์ฐ๊ธฐ ๊ฐ๋ฅ ๊ณ์ธต์ ์ถ๊ฐํ์ฌ ์คํ ์ค์ ์์ ํ ์ ์์ต๋๋ค.
- ๊ฐ๊ฐ์ ์ปจํ ์ด๋๋ ์คํ ์ค์ธ ์ด๋ฏธ์ง์ ์ธ์คํด์ค์ด๋ฉฐ, ๋์ผํ ์ด๋ฏธ์ง์์ ์ฌ๋ฌ ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ์ฌ ๊ฐ๊ฐ์ ๊ณ ์ ํ ๋ฐ์ดํฐ์ ์ํ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
- ์ปจํ ์ด๋์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ์คํ ์ค์ธ ํ๊ฒฝ์ ํ์คํ์ ๊ฐ๋ฐ, ์ด์, ํ ์คํธ์ ๋จ์ํ์ ๋๋ค.
- CI/CD ํ์ดํ๋ผ์ธ์ ํตํด ์ปจํ ์ด๋๋ฅผ ๋น๋, ํ ์คํธ, ํจํค์งํ๊ณ , ๋ฐํ์ ํ๊ฒฝ์ ๋ฐฐํฌํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ์ ์์ต๋๋ค.
๋์ปค ์ปจํ ์ด๋ ๋น๋ ํ๋ก์ธ์ค
๋์ปค ํ์ผ -----> build -------> Image -----> create -----> Container
- Dockerfile์ ์์ฑํฉ๋๋ค. (๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ ๊ฒ)
- Dockerfile์ ์ฌ์ฉํ์ฌ Docker image๋ฅผ ๋น๋ํฉ๋๋ค.
- ์์ฑ๋ Docker image๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Docker container๋ฅผ ์์ฑํฉ๋๋ค.
- Docker container๊ฐ ์คํ๋๋ฉด, ์ปจํ ์ด๋ ๋ด๋ถ์์ ํ๋ก์ธ์ค๊ฐ ์์๋ฉ๋๋ค.
- ์ด ํ๋ก์ธ์ค๋ ์ปจํ ์ด๋ ๋ด๋ถ์์ ์คํ๋๋ฉฐ, ํธ์คํธ OS์๋ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์์ ์คํ๋ฉ๋๋ค.
- ์ปจํ ์ด๋๋ ์ด๋ฏธ์ง์์ ์์ฑ๋๊ธฐ ๋๋ฌธ์, ์ปจํ ์ด๋๋ฅผ ์คํํ ๋๋ง๋ค ์๋ก์ด ํ์ผ ์์คํ ๋ ์ด์ด๊ฐ ์์ฑ๋ฉ๋๋ค.
- ์ปจํ ์ด๋ ๋ด๋ถ์์ ์คํ๋๋ ํ๋ก์ธ์ค๋ ํธ์คํธ OS์์ ์ง์ ์คํ๋๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋์ํ์ง๋ง, ๋ถ๋ฆฌ๋ ํ๊ฒฝ์์ ์คํ๋ฉ๋๋ค.
- ์ปจํ ์ด๋ ๋ด๋ถ์์ ์คํ๋๋ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด, ํด๋น ์ปจํ ์ด๋๋ ํจ๊ป ์ข ๋ฃ๋ฉ๋๋ค.
- ์ดํ, ํ์์ ๋ฐ๋ผ ์๋ก์ด Docker container๋ฅผ ์์ฑํ์ฌ ๋์ผํ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ ์คํํ ์ ์์ต๋๋ค.
4. ๋์ปค ๋ช ๋ น์ด
1 ๋์ปค ๋ช ๋ น์ด๋ก ๊ฒ์
๋์ปค ํ๋ธ์์ ์ด๋ฏธ์ง๋ฅผ ๊ฒ์ํฉ๋๋ค.
sudo docker search <์ด๋ฏธ์ง ์ด๋ฆ>
2 ๋์ปค ์ด๋ฏธ์ง ๋ค์ด๋ก๋ํ๊ธฐ
๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
sudo docker pull <์ด๋ฏธ์ง ์ด๋ฆ>
2.1 ๋์ปค ์ด๋ฏธ์ง ๋น๋ํ๊ธฐ
๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋น๋ํฉ๋๋ค. docker build ๋ช ๋ น์ด๋ Dockerfile์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋๋ฐ, Dockerfile์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ธฐ ์ํ ๋ ์ํผ๋ ์ง์์ฌํญ์ ๋ด๊ณ ์๋ ํ์ผ์ ๋๋ค. Dockerfile์ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ธฐ ์ํ ํ๊ฒฝ, ์ ํ๋ฆฌ์ผ์ด์ ์ข ์์ฑ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ์ ์ํฉ๋๋ค.
docker build [OPTIONS] PATH
์ฌ๊ธฐ์ OPTIONS๋ ๋น๋ ์ต์
์ ์ ์ํ๊ณ , PATH๋ Dockerfile์ ํฌํจํ๋ ๋๋ ํ ๋ฆฌ ๋๋ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค.
docker build ๋ช
๋ น์ด์ ์ผ๋ถ ์ค์ํ ์ต์
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-t ๋๋ --tag : ๋น๋ํ ์ด๋ฏธ์ง์ ํ๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค.
-f ๋๋ --file : ๋ค๋ฅธ ์ด๋ฆ์ Dockerfile์ ์ฌ์ฉํ ๋ ์ฌ์ฉํฉ๋๋ค.
--no-cache : ์บ์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๊ฐ์ ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ค์ ๋น๋ํฉ๋๋ค.
docker build ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด Dockerfile์ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ฉฐ, ๋ช
๋ น์ด ์คํ ์ค์ Dockerfile์์ ์ง์ ํ ์ง์์ฌํญ์ด ์คํ๋ฉ๋๋ค. Dockerfile์ FROM, RUN, COPY, CMD ๋ฑ์ ๋ค์ํ ์ง์์ด๋ฅผ ํฌํจํ ์ ์์ต๋๋ค.
3 ๋ก์ปฌ ์์คํ ์ ์๋ ๋์ปค ์ด๋ฏธ์ง ํ์ธํ๊ธฐ
๋ค์ด๋ฐ์ ๋์ปค ์ด๋ฏธ์ง๋ค ๊ด๋ จํด์, ๋ก์ปฌ ์์คํ ์ ์ ์ฅ๋ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ํ์ธํฉ๋๋ค.
sudo docker images
4 ๋์ปค ์ด๋ฏธ์ง ๋ค์ด๋ก๋์ ์ญ์
๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ๊ฑฐ๋ ์ญ์ ํฉ๋๋ค.
sudo docker pull <์ด๋ฏธ์ง ์ด๋ฆ> sudo docker rmi <์ด๋ฏธ์ง ์ด๋ฆ>
5 ์คํ์ค์ธ ์ปจํ ์ด๋ ํ์ธ
์คํ ์ค์ธ ์ปจํ ์ด๋๋ฅผ ํ์ธํฉ๋๋ค.
sudo docker ps
6 ๋ชจ๋ ์ปจํ ์ด๋ ํ์ธ
๋ชจ๋ ์ปจํ ์ด๋๋ฅผ ํ์ธํฉ๋๋ค.
sudo docker ps -a
7 ์ปจํ ์ด๋ ์ค์ง
์ปจํ ์ด๋๋ฅผ ์ค์งํฉ๋๋ค.
sudo docker stop <์ปจํ
์ด๋ ID ๋๋ ์ด๋ฆ>
8 ์ปจํ ์ด๋ ์ญ์
์ปจํ ์ด๋๋ฅผ ์ญ์ ํฉ๋๋ค.
sudo docker rm <์ปจํ
์ด๋ ID ๋๋ ์ด๋ฆ>
9 ํฌํธํฌ์๋ฉ์ผ๋ก ์ดํ๋ฆฌ์ผ์ด์ ์คํํ๊ธฐ
ํฌํธํฌ์๋ฉ์ ์ค์ ํ์ฌ ํด๋น ์ดํ๋ฆฌ์ผ์ด์ ์ปจํ ์ด๋๋ฅผ ์คํํฉ๋๋ค.
--name : ์ปจํ ์ด๋์ ์ด๋ฆ์ ์ง์ ํ๋ ๋ช ๋ น์ด์ ๋๋ค.
-p : ์ปจํ ์ด๋์ ํฌํธ์ ํธ์คํธ(์ง ์ปดํจํฐ)์ ํฌํธ๋ฅผ ๋งคํํ์ฌ ์ฐ๊ฒฐํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค
sudo docker run -d --name <์ปจํ
์ด๋ ์ด๋ฆ> -p <ํธ์คํธ ํฌํธ>:<์ปจํ
์ด๋ ํฌํธ> <์ด๋ฏธ์ง ์ด๋ฆ>
์๋ฅผ ๋ค์ด, ๋ค์ ์ฝ๋๋ฅผ ์คํํด๋ณธ๋ค๊ณ ๊ฐ์ ํ๋ฉด,
docker run -p 8080:80 nginx
ํธ์คํธ, ์ฆ ์ง ์ปดํจํฐ์ 8080 ํฌํธ์ ์ปจํ ์ด๋ ๋ด๋ถ์ 80 ํฌํธ๋ฅผ ๋งคํํฉ๋๋ค. ์ด๋ ๊ฒ ๋งคํํ๋ฉด ํธ์คํธ์์ 8080 ํฌํธ๋ก ์ ์ํ๋ฉด, ์ปจํ ์ด๋ ๋ด๋ถ์ 80 ํฌํธ๋ก ์ ์ํ๋ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ๊ฐ์ง๋๋ค.
์ฆ, ํธ์คํธ(์ง ์ปดํจํฐ)์์ http://localhost:8080 ์ผ๋ก ์ ์ํ๋ฉด ์ปจํ ์ด๋ ๋ด๋ถ์ http://localhost:80 ์ผ๋ก ์ ์ํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
์ด๋ ๊ฒ ํฌํธ ๋งคํ์ ํตํด ์ปจํ ์ด๋ ๋ด๋ถ์ ์๋น์ค๋ฅผ ํธ์คํธ(์ง ์ปดํจํฐ)์์ ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์ปจํ ์ด๋๋ฅผ ํธ์คํธ(์ง ์ปดํจํฐ)์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ์ฐ๊ฒฐ์ํค๋ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ๊ฐ์ง๋ฉฐ, ์ปจํ ์ด๋์ ํธ์คํธ(์ง ์ปดํจํฐ) ๊ฐ์ ๋คํธ์ํฌ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
10 ์ปจํ ์ด๋ ๋ด๋ถ ์ ์คํ
์ปจํ ์ด๋ ๋ด๋ถ ์์ ์คํํฉ๋๋ค. ์ปจํ ์ด๋ ์ด๋ฆ์ผ๋ก ๋ค์ด๊ฐ์, ๋ด๋ถ์์ bash shell์ ์คํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๊ฐ์์ ๋ฆฌ๋ ์ค ํ๊ฒฝ์ผ๋ก ๋ค์ด๊ฐ๋ ๊ฒ์ผ๋ก, ls๋ฅผ ์ ๋ ฅํ๋ฉด ๋ฆฌ๋ ์คํ๊ฒฝ์ ๊ธฐ๋ณธ ๋๋ ํ ๋ฆฌ๊ฐ ๋ณด์ ๋๋ค.
sudo docker exec -it <์ปจํ
์ด๋ ์ด๋ฆ> /bin/bash
-it ์ ์ฌ์ฉ๋ฒ์
docker run -it node
์ ๋ ์ฝ๋๋ฅผ ๋ณด๋ฉด, -it ๊ฐ ํด๋น ์ปจํ ์ด๋๋ฅผ ์ฐ๋ค์์ ๊ทธ ์์์ cli ๋ฅผ ์ฌ์ฉํ๊ฒ ๋ค๋ ์๋ฏธ๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค.
11 ์ปจํ ์ด๋ ๋ก๊ทธ ํ์ธ
์ปจํ ์ด๋ ๋ก๊ทธ๋ฅผ ํ์ธํฉ๋๋ค.
sudo docker logs <์ปจํ
์ด๋ ์ด๋ฆ>
12 ํธ์คํธ ๋ฐ ์ปจํ ์ด๋ ๊ฐ ํ์ผ ๋ณต์ฌ
ํธ์คํธ ๋ฐ ์ปจํ ์ด๋ ๊ฐ ํ์ผ ๋ณต์ฌ ๋์ปค๋ ํธ์คํธ์ ์ปจํ ์ด๋ ๊ฐ์ ํ์ผ์ ๋ณต์ฌํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ํธ์คํธ์์ ์ปจํ ์ด๋๋ก ํ์ผ์ ๋ณต์ฌํ๊ฑฐ๋, ์ปจํ ์ด๋์์ ํธ์คํธ๋ก ํ์ผ์ ๋ณต์ฌํ ์ ์์ต๋๋ค.
ํธ์คํธ์์ ์ปจํ ์ด๋๋ก ํ์ผ ๋ณต์ฌํ๊ธฐ 1:
sudo docker cp <path> <to container>:<path>
์ปจํ ์ด๋์์ ํธ์คํธ๋ก ํ์ผ ๋ณต์ฌํ๊ธฐ 2:
sudo docker cp <from container>:<path> <path>
13 ๋์ปค ์ปจํ ์ด๋ ๋ชจ๋ ์ญ์
๋์ปค ์ปจํ ์ด๋๋ฅผ ๋ชจ๋ ์ญ์ ํ๋ ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค:
sudo docker stop `sudo docker ps -a -q` sudo docker rm `sudo docker ps -a -q`
์์ ์ปจํ ์ด๋ ์์ฑ ๋์ปค๋ ์์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ณ ์คํํ ํ, ์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋๋ฉด ์๋์ผ๋ก ์ญ์ ๋ฉ๋๋ค.
์์ ์ปจํ
์ด๋๋ฅผ ์์ฑํ๋ ค๋ฉด, --rm
์ต์
์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค:
sudo docker run -d -p 80:8080 --rm --name tc tomcat
14 ๋์ปค ์ด๋ฏธ์ง
๋์ปค ์ด๋ฏธ์ง ๋ช ๋ น์ด ๋์ปค ์ด๋ฏธ์ง์ ๋ํ ๋ช ๋ น์ด๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค.
๋์ปค ์ด๋ฏธ์ง ์ ๋ณด ํ์ธ ๋์ปค ์ด๋ฏธ์ง์ ์ ๋ณด๋ฅผ ํ์ธํ๋ ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค:
Nginx๋ ์ธ๊ธฐ ์๋ ์คํ์์ค ์น ์๋ฒ์ด์ ๋ฆฌ๋ฒ์ค ํ๋ก์ ์๋ฒ๋ก, ๋์ ์ฑ๋ฅ๊ณผ ์์ ์ฑ, ํ์ฅ์ฑ์ ์ ๊ณตํฉ๋๋ค.
Nginx๋ ๋น ๋ฅธ ์๋์ ๋์ ๋์์ฑ ์ฒ๋ฆฌ, ์์ฒญ ๋ฐ ์๋ต ์ฒ๋ฆฌ, ๋ถํ ๋ถ์ฐ, ๋ณด์, ์บ์ฑ ๋ฑ์ ๊ธฐ๋ฅ์ผ๋ก ์ธํด ์น ์ดํ๋ฆฌ์ผ์ด์
์๋ฒ( WAS )๋ก๋ ๋ง์ด ์ฌ์ฉ๋์ด, Docker ํ๋ธ์์ ๊ณต์์ ์ผ๋ก ์ง์ํ๋ ์ด๋ฏธ์ง์ด๋ฉฐ, ๋ฐ๋ผ์ Nginx๋ฅผ ์ฌ์ฉํ์ฌ Docker ์ด๋ฏธ์ง ์ ๋ณด๋ฅผ ํ์ธํฉ๋๋ค.
sudo docker pull nginx sudo docker inspect nginx
๋์ปค ์ด๋ฏธ์ง ์ ์ฅ์ ์์น ํ์ธ ๋์ปค ์ด๋ฏธ์ง๊ฐ ์ ์ฅ๋ ์์น๋ฅผ ํ์ธํ๋ ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค:
sudo docker info sudo -i cd /var/lib/docker/overlay2
๋ ์ด์ด ์ ์ฅ์ ํ์ธ ๋์ปค ์ด๋ฏธ์ง๋ ์ฌ๋ฌ ๋ ์ด์ด๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๊ฐ ๋ ์ด์ด๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฅํฉ๋๋ค. ์ด๋ฌํ ๋ ์ด์ด ์ ์ฅ์๋ฅผ ํ์ธํ๋ ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค:
root@server1-VirtualBox:/var/lib/docker/overlay2# ls
0cc29ea5605872d9c8291673064e85b07160203fbf04b34eeeed899731361960 # ๋ ์ด์ด ๋ณ๊ฒฝ ์ฌํญ ์ ์ฅ
0cc29ea5605872d9c8291673064e85b07160203fbf04b34eeeed899731361961 # ๋ ์ด์ด ๋ณ๊ฒฝ ์ฌํญ ์ ์ฅ
0cc29ea5605872d9c8291673064e85b07160203fbf04b34eeeed899731361962 # ๋ ์ด์ด ๋ณ๊ฒฝ ์ฌํญ ์ ์ฅ
15 ๋์ปค ์ฉ๋ ํ์ธ
- ๋์ปค๊ฐ ์ค์น๋ ํ๊ฒฝ ์ฉ๋ ํ์ธ
du -sh /var/lib/docker/
- ๋์ปค ์ด๋ฏธ์ง์ ๋ํ ์ ๋ณด ์ ์ฅ ๋๋ ํ ๋ฆฌ
du -sh /var/lib/docker/image/
- ๋์ปค ์ด๋ฏธ์ง์ ํ์ผ ์์คํ ์ด ์ฌ์ฉ๋๋ ์ค์ ๋๋ ํ ๋ฆฌ
du -sh /var/lib/docker/overlay2/
- ๋์ปค ์ปจํ ์ด๋ ์ ๋ณด ์ ์ฅ ๋๋ ํ ๋ฆฌ
du -sh /var/lib/docker/containers/