๋ชฉ์ฐจ
Docker Architecture
๋์ปค๋ ํด๋ผ์ด์ธํธ-์๋ฒ ์ํคํ
์ฒ๋ฅผ ์ฌ์ฉํ๋ค. ๋์ปค ํด๋ผ์ด์ธํธ(docker)๋ ๋์ปค ๋ฐ๋ชฌ(daemon)๊ณผ ํต์ ํ๋ฉฐ, ๋์ปค ๋ฐ๋ชฌ์ ๋์ปค ์ปจํ
์ด๋๋ฅผ ์์ฑ, ์คํ, ๋ฐฐํฌ ์์
์ ์ํํ๋ค. ๋์ปค ํด๋ผ์ด์ธํธ์ ๋ฐ๋ชฌ์ ๋์ผํ ์์คํ
์์ ์คํ๋ ์ ์์ผ๋ฉฐ, ์๊ฒฉ ๋์ปค ๋ฐ๋ชฌ์ ์ฐ๊ฒฐํ ์๋ ์๋ค. ๋์ปค ํด๋ผ์ด์ธํธ์ ๋ฐ๋ชฌ์ REST API๋ฅผ ์ฌ์ฉํ์ฌ UNIX ์์ผ ๋๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ํตํด ํต์ ํ๋ค. ๋ ๋ค๋ฅธ ๋์ปค ํด๋ผ์ด์ธํธ๋ ๋์ปค ์ปดํฌ์ฆ(Docker Compose)๋ก, ์ฌ๋ฌ ์ปจํ
์ด๋๋ก ๊ตฌ์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์์
ํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ์ด๋ค.
Docker Daemon
๋์ปค API ์์ฒญ์ ์์ ํ๊ณ ์ด๋ฏธ์ง, ์ปจํ
์ด๋, ๋คํธ์ํฌ, ๋ณผ๋ฅจ๊ณผ ๊ฐ์ ๋์ปค ๊ฐ์ฒด(Docker Object)๋ฅผ ๊ด๋ฆฌํ๋ค. ๋ฐ๋ชฌ์ ๋ค๋ฅธ ๋ฐ๋ชฌ๊ณผ ํต์ ํ์ฌ ๋์ปค ์๋น์ค๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค.
Docker Client
๋์ปค ํด๋ผ์ด์ธํธ(docker)๋ ๋ง์ ๋์ปค ์ฌ์ฉ์๋ค์ด ๋์ปค์ ์ํธ์์ฉํ๋ ์ฃผ๋๋ฐฉ๋ฒ์ผ๋ก, ๋ช
๋ น์ด, API๋ก Host์ ํต์ ํ๋ค. docker run๊ณผ ๊ฐ์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ๋ ์ด ๋ช
๋ น์ด๋ฅผ ๋ฐ๋ชฌ(dockerd)์ ์ ์กํ๊ณ , ๋ฐ๋ชฌ์ ์ด๋ฅผ ์ํํ๋ค. ๋์ปค ํด๋ผ์ด์ธํธ๋ ์ฌ๋ฌ ๊ฐ์ ๋ฐ๋ชฌ๊ณผ ํต์ ์ด ๊ฐ๋ฅํ๋ค
Docker Registries
๋์ปค ๋ ์ง์คํธ๋ฆฌ๋ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๋ ๊ณณ์ด๋ค. ๋์ปค ํ๋ธ(Docker Hub)๋ ๋๊ตฌ๋ ์ฌ์ฉํ ์ ์๋ ๊ณต๊ฐ ๋ ์ง์คํธ๋ฆฌ์ด๋ฉฐ, ๊ฐ์ธ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ๊ฐ์ง ์๋ ์๋ค. ๋์ปค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ปค ํ๋ธ์์ ์ด๋ฏธ์ง๋ฅผ ๊ฒ์ํ๋ฉฐ, docker pull ๋๋ docker run ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ ๋, ๋์ปค๋ ๊ตฌ์ฑ๋ ๋ ์ง์คํธ๋ฆฌ์์ ํ์ํ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์จ๋ค. docker push ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ ๋๋ ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ฑ๋ ๋ ์ง์คํธ๋ฆฌ์ ์
๋ก๋ํ๋ค.
Docker Objects
๋์ปค๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฏธ์ง, ์ปจํ
์ด๋, ๋คํธ์ํฌ, ๋ณผ๋ฅจ, ํ๋ฌ๊ทธ์ธ ๋ฑ ๋ค์ํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์์ฉํ ์ ์๋ค.
โข
Images
โฆ
๋์ปค ์ปจํ
์ด๋๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ฝ๊ธฐ ์ ์ฉ ํ
ํ๋ฆฟ
โฆ
์ผ๋ฐ์ ์ผ๋ก ์ด๋ฏธ์ง๋ ๋ค๋ฅธ ์ด๋ฏธ์ง์ ๊ธฐ๋ฐํ์ฌ ์ถ๊ฐ์ ์ธ ์ฌ์ฉ์ ์ ์๊ฐ ์ด๋ฃจ์ด์ง
โฆ
์์ ๋ง์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ค๋ฉด Dockerfile ์์ฑ ํ์
โช
Dockerfile์ ๊ฐ ๋ช
๋ น์ด๋ ์ด๋ฏธ์ง์ ๋ ์ด์ด๋ฅผ ์์ฑ
โช
Dockerfile์ ๋ณ๊ฒฝํ๊ณ ์ด๋ฏธ์ง๋ฅผ ๋ค์ ๋น๋ํ ๋ ๋ณ๊ฒฝ๋ ๋ ์ด์ด๋ง ๋ค์ ๋น๋
โข
Containers
โฆ
์ด๋ฏธ์ง์ ์คํ ๊ฐ๋ฅํ ์ธ์คํด์ค
โฆ
Docker API ๋๋ CLI๋ฅผ ํตํด ์ปจํ
์ด๋ ์์ฑ, ์์, ์ค์ง, ์ด๋, ์ญ์ ๊ฐ๋ฅ
โฆ
์ปจํ
์ด๋๋ฅผ ํ๋ ์ด์์ ๋คํธ์ํฌ์ ์ฐ๊ฒฐํ๊ฑฐ๋ ์คํ ๋ฆฌ์ง๋ฅผ ๋ถ์ผ(attach) ์ ์์ผ๋ฉฐ, ํ์ฌ ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ก์ด ์ด๋ฏธ์ง ์์ฑํ๋ ๊ฒ ๊ฐ๋ฅ