Intro
Docker๋?
๋์ปค๋ฅผ ํ๋ง๋๋ก ์ ์ํ๋ฉด, โ๋ฐ์ดํฐ ๋๋ ํ๋ก๊ทธ๋จ์ ๊ฒฉ๋ฆฌ์ํค๋ ๊ธฐ๋ฅโ์ ์ ๊ณตํ๋ ์ํํธ์จ์ด๋ผ๊ณ ํ ์ ์๋ค.
์ด ๊ธฐ๋ฅ์ ์ฃผ๋ก ์๋ฒ์ ์ฌ์ฉ๋๋ค. ์๋ฒ ์์์๋ ์ํ์น, MySQL ๋ฑ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ํจ๊ป ๋์ํ๋ฉฐ, ์ด๋ ๊ฒ ๋ค์ํ ํ๋ก๊ทธ๋จ๊ณผ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ฐ ๋
๋ฆฝ๋ ํ๊ฒฝ์ ๊ฒฉ๋ฆฌํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์ปจํ ์ด๋์ ๋์ปค ์์ง
์์๋ก, ๊ฐ์ธ์ฉ ์ปดํจํฐ๋ ์๋ฒ์์ ํ๊ฒฝ์ ๋ง์น ์ฝ์คํธ์ฝ์์ ํ๋งคํ๋ ์กฐ๋ฆฝํ ์ฐฝ๊ณ ๊ฐ์ ์์ ๋ฐฉ์ผ๋ก ๊ตฌ๋ถํ๋ค๋ฉด? ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๊ฒ ์ชผ๊ฐ ๋
๋ฆฝ๋ ์ฐฝ๊ณ ์ ๋ฐ์ดํฐ๋ ํ๋ก๊ทธ๋จ์ ๋๋ ๊ฒ์ด๋ค.
์ด ์ฐฝ๊ณ ๋ฅผ ์ปจํ
์ด๋ ๋ผ๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ปจํ
์ด๋๋ฅผ ๋ค๋ฃจ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ํํธ์จ์ด๊ฐ ๋์ปค์ด๋ค.
๋์ปค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋์ปค ์ํํธ์จ์ด์ ๋ณธ์ฒด์ธ ๋์ปค ์์ง์ ์ค์นํด์ผํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ปค ์์ง์ ์ฌ์ฉํด ์ปจํ
์ด๋๋ฅผ ์์ฑํ๊ณ ๊ตฌ๋์ํฌ ์ ์๋ค.
์ด๋ฏธ์ง
์ปจํ
์ด๋๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋์ปค ์์ง ์ธ์๋ ์ปจํ
์ด๋์ ๋นตํ๊ณผ๋ ๊ฐ์ ์ญํ ์ ํ ์ด๋ฏธ์ง๊ฐ ํ์ํ๋ค. ์ด๋ฏธ์ง๋ ์ข
๋ฅ๊ฐ ์์ฃผ ๋ง์ผ๋ฉฐ, ๋ด๊ณ ์๋ ์ํํธ์จ์ด์ ์ข
๋ฅ์ ๋ฐ๋ผ ๋ค์ํ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ค. ์ํ์น ์ปจํ
์ด๋๋ฅผ ๋ง๋ค๋ ค๋ฉด ์ํ์น ์ด๋ฏธ์ง๋ฅผ, MySQL ์ปจํ
์ด๋๋ฅผ ๋ง๋ค๋ ค๋ฉด MySQL ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
๋์ปค์ ๋ฆฌ๋ ์ค
๋์ปค๋ ๋ฐ๋์ ๋ฆฌ๋
์ค ์ด์์ฒด์ ๊ฐ ํ์ํ๋ค. ๋์ปค๋ฅผ ์๋์ฐ๋ MacOS์์ ์ฌ์ฉํ ๋๋, ๋ด๋ถ์ ์ผ๋ก๋ ๋ฆฌ๋
์ค๊ฐ ์ฌ์ฉ๋๋ค. ๋ฐ๋ผ์ ๋์ปค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๊ธฐ๋ณธ์ ์ธ ๋ฆฌ๋
์ค ๋ช
๋ น์ด๋ ๋ฐ๋์ ์์งํ๋๊ฒ ์ข๋ค.
๋์ปค๋ฅผ ์ฌ์ฉํด์ผํ๋ ์ด์
๋์ปค๋ฅผ ์ฌ์ฉํด์ผํ๋ ์ด์ ์ฆ, ๋ฐ์ดํฐ๋ ํ๋ก๊ทธ๋จ์ ๋
๋ฆฝ๋ ํ๊ฒฝ์ ๊ฒฉ๋ฆฌํด์ผํ๋ ์ด์ ๋ ๋ญ๊น??
๋๋ถ๋ถ์ ํ๋ก๊ทธ๋จ์ ํ๋ก๊ทธ๋จ ๋จ๋
์ผ๋ก ๋์ํ๋ ๊ฒ์ด ์๋๋ผ ์ด๋ค ์คํ ํ๊ฒฝ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์ด์ฉํด ๋์ํ๋ค. ์ํํธ์จ์ด ์ญ์ ๋จ์ผ ํ๋ก๊ทธ๋จ์ด ์๋๋ผ ์ฌ๋ฌ ๊ฐ์ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ด ๋๋ฌธ์ ํ๋ก๊ทธ๋จ ํ๋๋ฅผ ์
๋ฐ์ดํธํ๋ฉด ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์๋ ์ํฅ์ ๋ฏธ์น๊ฒ ๋๋ค.
ex) ์๋์ฝ๋ค๋ฅผ ์ค์นํ๋ฉด ์๋์ฝ๋ค ํ๋กฌํํธ, ํ์ด์ฌ, ์ฃผํผํฐ ๋ฑ์ ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ํจ๊ป ์ค์น๋จ.
๋๋ฌธ์ ์๋์ฝ๋ค ์
ํ
์ดํธ๋ฅผ ํ๋ฉด ๋ค๋ฅธ ํ๋ก๊ทธ๋จ๋ค๋ ํจ๊ป ์
๋ฐ์ดํธ๋จ.
ํ๋ก๊ทธ๋จ๋ค์ ๋ฒ์ ๊ด๋ฆฌ ๋ฌธ์ ๋ก ์ธํด ์๋ฒ ๋ด๋ถ์์ ํธํ์ฑ๊ณผ ๊ด๋ จํ ๋ง์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
๋์ปค ์ปจํ
์ด๋๋ ๋ค๋ฅธ ์ปจํ
์ด๋์ ์์ ํ ๋ถ๋ฆฌ๋ ํ๊ฒฝ์ด๋ผ๊ณ ํ๋ค. ์ฆ, ์ปจํ
์ด๋ ์์ ๋ค์ด์๋ ํ๋ก๊ทธ๋จ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ๊ณผ ๊ฒฉ๋ฆฌ๋ ์ํ๊ฐ ๋๋ค.
์๋ฅผ ๋ค์ด ์์คํ
A๊ฐ ๋ฌด์จ๋ฌด์จ ํ๋ก๊ทธ๋จ์ 5.0 ๋ฒ์ ์ ์ฌ์ฉํ๊ณ , B๊ฐ ๋ฌด์จ๋ฌด์จ ํ๋ก๊ทธ๋จ์ 8.0 ๋ฒ์ ์ ์ฌ์ฉํด์ผํ๋ ์ํฉ์ด๋ผ๋ฉด ์ด๋ค์ ์ธํธ๋ก ๋ฌถ์ด ๋ฐ๋ก ๊ฒฉ๋ฆฌํ๋ฉด ๋๋ค.
์ปจํ
์ด๋๋ ์์ ๋ก์ด ์ฎ๊ธธ ์ ์๋ค. ์ปจํ
์ด๋๋ฅผ ์ด๋ค ๋์ปค ์์ง์์ ๋ค๋ฅธ ๋์ปค ์์ง์ผ๋ก ์ฎ๊ธฐ๊ธฐ๋ ๊ทธ๋ฆฌ ์ด๋ ค์ด ์ผ์ด ์๋๋ค. ์ด๋ฐ ํน์ฑ์ ์ด์ฉํ๋ฉด ๋๊ฐ์ ์ํ๋ก ํ๋ํ ์ปจํ
์ด๋๋ฅผ ํ์ ์ ์์๊ฒ ๋ฐฐํฌํด ๋ชจ๋๊ฐ ๋์ผํ ๊ฐ๋ฐํ๊ฒฝ์ ์ฌ์ฉํ ์ ์๋ค.
๋์ปค๋ง ์ด์ฉํ๋ฉด ๋ฌผ๋ฆฌ์ ํ๊ฒฝ์ ์ฐจ์ด, ์๋ฒ ๊ตฌ์ฑ์ ์ฐจ์ด๋ฅผ ๋ฌด์ํ ์ ์์ผ๋ฏ๋ก ์ด์ ์๋ฒ์ ๊ฐ๋ฐ ์๋ฒ์ ํ๊ฒฝ ์ฐจ์ด๋ก ์ธํ ๋ฌธ์ ๋ฅผ ์์ฒ์ ์ผ๋ก ๋ฐฉ์งํ ์ ์๋ค.
๋์ปค์ ๋ชฉํ๋ ์ํํธ์จ์ด๋ฅผ ์ผ๊ด๋๊ฒ ๋น๋ํ๊ณ ์คํ, ๋ฐฐํฌํ๋ ๊ฒ์ ์๋ค.
VM๊ณผ Container
Virtual Machine
โข
AWS์ EC2๊ฐ ๋ํ์ ์ธ Virtual Machine (VM)
โข
ํ๋์จ์ด๋ฅผ ์ถ์ํํ์ฌ ํ ์ปดํจํฐ ์์ ๊ฐ์ ์ปดํจํฐ๋ฅผ ์ฌ๋ฆฌ๋ ๊ฒ
โข
Virtual Machines
โฆ
๋ณดํต ํ๋์ ์ปดํจํฐ ์์ ๋ค์์ VM์ ์คํํ๋ ๊ฒ์ด ์ผ๋ฐ์
โฆ
์ด ์์์ ์ํํธ์จ์ด๊ฐ ๋์
โข
VM์ ์์ฑํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ํํธ์จ์ด: VMWare, VirtualBox, Hyper-v, โฆ
VM์ ์ฅ๋จ์
โข
์ฅ์
โฆ
์ํํธ์จ์ด๋ฅผ ์คํํ๊ธฐ ์ํ ๋
๋ฆฝ์ ์ด๊ณ ๋ถ๋ฆฌ๋ ๊ณต๊ฐ์ ์ ๊ณต
โฆ
๋ค์์ ์ํํธ์จ์ด๋ฅผ ๊ฐ VM๋จ์์ ๋
๋ฆฝ์ ์ผ๋ก ์คํ๊ฐ๋ฅ
โข
๋จ์
โฆ
๊ฐ VM์ ์์ ๋ง์ OS๋ฅผ ํ์๋ก ํจ (๊ฐ์ ํ๋์จ์ด ์์์ ๋๊ธฐ ๋๋ฌธ)
โช
์ ๋ฃ OS๋ผ๋ฉด ๋ผ์ด์ผ์ค ๋น์ฉ ํ์
โช
๊ทธ๋ฌ๋ค๋ณด๋ ์์ํ๋๋ฐ ์ค๋ ๊ฑธ๋ฆผ
โฆ
์์์ ๋ง์ด ์ฌ์ฉํจ (VM๋ค๋ผ๋ฆฌ ์์์ ๋๋ ์จ์ผํจ)
Docker Container
โข
์ํํธ์จ์ด๋ฅผ ์คํํ๊ธฐ ์ํ ๋
๋ฆฝ์ ์ด๊ณ ๋ถ๋ฆฌ๋ ๊ณต๊ฐ
โฆ
๋์ปค(์ปจํ
์ด๋ ๊ฐ์ํ)๋ OS์์ ์ ๊ณตํ๋ ์์๊ฒฉ๋ฆฌ ๊ธฐ์ ์ ์ด์ฉํ์ฌ ์ปจํ
์ด๋๋ผ๋ ๋จ์๋ก ์๋น์ค๋ฅผ ๋ถ๋ฆฌํ ์ ์๊ฒ ๋ง๋ค์ด์ฃผ๊ณ , ๊ฐ๋ฐํ๊ฒฝ์ ๋ํ ๊ฑฑ์ ์์ด ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅ
โข
์์ฒด ํ์ผ ์์คํ
์ ๊ฐ๊ณ ์์ (Volume ์ด๋ผ๊ณ ๋ถ๋ฆ)
Container์ ์ฅ๋จ์
โข
์ฅ์
โฆ
์ํํธ์จ์ด๋ฅผ ์คํํ๊ธฐ ์ํ ๋
๋ฆฝ์ ์ด๊ณ ๋ถ๋ฆฌ๋ ๊ณต๊ฐ์ ์ ๊ณต
โช
๋ค์์ ์ํํธ์จ์ด๋ฅผ ๊ฐ ์ปจํ
์ด๋๋จ์์ ๋
๋ฆฝ์ ์ผ๋ก ์คํ๊ฐ๋ฅ
โฆ
์์ ์๋น๊ฐ ์ ์ (lightweight)
โช
๋ช ์ญ๊ฐ์์ ๋ช ๋ฐฑ๊ฐ์ container๋ฅผ ์คํ ๊ฐ๋ฅ
โฆ
ํธ์คํธ OS๋ฅผ ์ฌ์ฉ (๋ณ๋ ๋น์ฉ ์์)
โช
๋ฐ๋ผ์ ๋น ๋ฅด๊ฒ ์คํ๋จ
โข
๋จ์
โฆ
๋ง์ ์์ Docker Container๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ์ฝ์ง ์์
โช
์ปจํ
์ด๋ ์ค์ผ์คํธ๋ ์ด์
์ด ํ์ (k8s, Docker swarm ๋ฑ๋ฑ)
โฆ
Host OS๋ฅผ ์ฌ์ฉํ๊ธฐ์ Cross-platform compatibility๋ฅผ ํญ์ ์ง์ํ์ง ์์
โฆ
GUI ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ ํฉ์น ์์
โข
Virtual Machine๊ณผ (Docker)Containers ๋น๊ต
VM | Docker | |
Host OS | ๋
ผ๋ฆฌ์ ๊ฐ์ํ (์์ ๋ถ๋ฆฌ) | - Kernal ๊ณต์ (ํ๋ก์ธ์ค ๊ณต์ )
- Container ๋ด์์ ๋ช
๋ น์ด ์คํ์ ์ค์ ๋ก๋ Host OS์์ ์คํ |
Guest OS | ํ ์ค์น | Host OS์ ๋น๊ตํด์ ๋ค๋ฅธ ๋ถ๋ถ๋ง Packing |
OS ์ง์ | ๋ชจ๋ ์ง์ | Linux ๊ธฐ๋ฐ์ OS๋ง ์ง์ |
์ฅ์ | - ํดํน ๋๋๋ผ๋ ๋ค๋ฅธ ๊ฐ์๋จธ์ ์ ์ํฅ์ ๋ฏธ์น์ง ์์ | - ์์คํ
์์์ ํจ์จ์ ์ฌ์ฉ
- ์์ฐ์ฑ ํฅ์ |
๋จ์ | - ์์คํ
ํ์ฅ์ ์์์ ๋ญ๋น
- ํธ๋ํฝ์ ๋ฐ๋ฅธ ๋ถ์ฐ ์ฒ๋ฆฌ๊ฐ ์ ์ฐํ์ง ๋ชปํจ | - Host OS๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ Host ๊ถํ์ด ํดํน๋๋ค๋ฉด ๋ค๋ฅธ ์ปจํ
์ด๋๋ค๋ ์ํํจ |
๋์ปค๋ ์ฌ๋ฌ ์ปจํ
์ด๋๋ค๊ฐ์ ํธ์คํธ ์์์ ๋ถ๋ฆฌํด์ ์ฌ์ฉํ๊ฒ ํด์ค๋ค.
์ด๊ฒ์ ๋ฆฌ๋
์ค ๊ณ ์ ๊ธฐ์ ์ธ name space์ cgroup๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฉ๋ฆฌํ๋ ๊ฒ์ด๋ค.
์์คํ
๊ตฌ์กฐ์ ์ผ๋ก ์ปจํ
์ด๋๋ ํ OS๋ฅผ ๊ณต์ ํ๋ ๊ตฌ์กฐ์ด๊ณ VM์ ๊ฐ๊ฐ์ OS๋ฅผ ๋์์ผํ๋ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ์ปจํ
์ด๋๊ฐ ๋น ๋ฅด๋ค.
VM์ ์ฌ์ฉ์๊ฐ ์๋์ฐ๋ฅผ ์ฌ์ฉํ๊ณ ์๋๋ผ๋ ์๋ก์ด Guest OS๋ฅผ ์ค์นํ ๋ ๋ฆฌ๋
์ค OS๋ฅผ ์ค์นํด์ ์ฌ์ฉํ ์ ์์ง๋ง, ์ปจํ
์ด๋๋ ๋ฆฌ๋
์ค OS์์ ์๋์ฐ์ฉ ์ปจํ
์ด๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๋์ปค ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ ํ๋ก์ธ์ค
ํ์ด๋ ๋ฒจ Docker ์ฌ์ฉ ํ๋ก์ธ์ค
โข
๋จผ์ ๋์ ์ํํธ์จ์ด๋ฅผ ์ ํ
โข
๋ค์์ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋๋ ์ํํธ์จ์ด๋ผ๋ฉด ๊ฐ๊ฐ์ด Docker Image๋ก ๋ง๋ค์ด์ ธ์ผํ ์๋ ์๋ค.
โข
์ด๋ฅผ Docker Image๋ก ๋น๋ํ์: Dockerization์ด๋ผ๊ณ ๋ถ๋ฆ
โฆ
Dockerfile์ด๋ ํ
์คํธ ํ์ผ๋ก ์ธ๋ถ ์ ๋ณด๋ฅผ ๊ธฐ์
โช
ํด๋น ์ํํธ์จ์ด๋ฅผ ์ด๋ฏธ์ง๋ก ๋ฐ๊พธ๊ธฐ ์ํ Docker์๊ฒ ์ฃผ๋ ๋ช
๋ น๋ค์ ํฌํจ
โฆ
Docker Image: ํ๋์ Docker Container์์์ ์คํ๋จ!
โช
Dockerfile์ ๊ธฐ์ค์ผ๋ก ๋ง๋ค์ด์ง๋ฉฐ ์ํํธ์จ์ด๋ฅผ ์คํํ๊ธฐ์ํด ํ์ํ ๋ชจ๋ ๊ฒ์ ํฌํจ
โข
docker build -t tag ๋ก ์ด๋ฏธ์ง๋ฅผ ๋น๋ํจ.
Docker Image
Docker Image์ ๊ตฌ์ฑ ์์
โข
๊ธฐ๋ณธ OS (๋ฆฌ๋
์ค๋ผ๋ฉด ์ฐ๋ถํฌ, ๋ฐ๋น์ ๋ฑ๋ฑ)์ ๊ฐ์ ์ํํธ์จ์ด์ ์คํํ๊ฒฝ
โข
์ํํธ์จ์ด ์์ฒด (์ฝ๋)
โข
์ํํธ์จ์ด๊ฐ ํ์๋ก ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
โข
ํ์ผ ์์คํ
์ค๋
์ท: ์ด๋ ์คํํ๋ ํํ๋ก ๊ตฌํ๋จ (๋ค์์ ๋ ์ค๋ช
)
โข
ํ๊ฒฝ ์ค์ ๋ณ์: ๋น๋ํ ๋ ๋ณ์์ ์คํ ๋ ๋ณ์ ๋ ๊ฐ์ง๊ฐ ์กด์ฌ
โฆ
ENV, ARG
โข
๋ฉํ ๋ฐ์ดํฐ: ์ด๋ฏธ์ง ์์ฒด์ ๋ํ ์ ๋ณด (๋ฒ์ , ์์ฑ์, ์ค๋ช
๋ฑ๋ฑ)
์ ์ ๋ณด์ ์ค์น ๊ด๋ จ ์คํ ์์๋ฑ์ด Dockerfile์ ๊ธฐ์ ๋จ
Docker Image๋ ๋ค์์ ํ์ผ๋ก ๊ตฌ์ฑ๋จ (โdocker image lsโ)
Docker Image์ ์คํ
โข
Container๋ฅผ ํตํด Docker Image์์ ์ํํธ์จ์ด๋ฅผ ์คํ
โฆ
Container๋ ์์ฒด ํ์ผ ์์คํ
์ ๊ฐ์ง ํน์ํ ํ๋ก์ธ์ค๋ก ์ด๋ฏธ์ง์ ํ์ผ ์์คํ
์ด ๋ก๋ฉ๋จ
โข
Image๋ฅผ Container ์์์ ์คํํ๊ธฐ ์ํ ๋ช
๋ น์ด
โฆ
docker run โฆ : ์ด๋ฏธ์ง๋ฅผ ์ปจํ
์ด๋๋ก ๋์ฐ๋ ๊ฒ
โฆ
docker exec : ์ด๋ฏธ ์คํ ์ค์ธ ์ปจํ
์ด๋์ ๋ช
๋ น์ ๋ด๋ฆฌ๋ ๊ฒ
Docker Image์ ๋ฑ๋ก : Docker Hub
โข
Docker Registry๋ Docker Image๋ค์ ๋ณด๊ด์
โฆ
On-prem registry์ Cloud registry๊ฐ ์กด์ฌ
โฆ
docker hub์ด ๊ฐ์ฅ ์ ๋ช
โข
์ฌ๊ธฐ์ ๋ฑ๋ก์ ํ๋ฉด ํ์ฌ๋ด ํน์ ํผ๋ธ๋ฆญํ๊ฒ ์ด๋ฏธ์ง๋ฅผ ๊ณต์ ๊ฐ๋ฅ
Docker Hub๋?
โข
Docker๊ฐ ์ ๊ณตํด์ฃผ๋ ์๋น์ค๋ก Docker Image๋ฅผ ๊ณต์ ํ๊ณ ์ฐพ๊ธฐ ์ํ ์๋น์ค
โข
Teams & Organizations
โข
Public๊ณผ Private Repo ์ ๊ณต
โข
Official Images
โข
Github๊ณผ ์ฐ๋์ ํตํ Automated Build ์ ๊ณต
์ปจํ ์ด๋ ์ค์ต
์ปจํ ์ด๋ ์์ฑ, ์คํ, ์ํ ํ์ธ, ์ข ๋ฃ, ์ญ์
โข
์ค์ต๋ด์ฉ
์ปจํ
์ด๋ ์์ฑ ๋ฐ ์คํ โ ์ปจํ
์ด๋ ์ํ ํ์ธ โ ์ปจํ
์ด๋ ์ข
๋ฃ โ ์ปจํ
์ด๋ ์ํ ํ์ธ
โ ์ปจํ
์ด๋ ์ญ์ โ ์ปจํ
์ด๋ ์ํ ํ์ธ
โข
์์ฑํ ์ปจํ
์ด๋์ ์ ๋ณด
ํญ๋ชฉ | ๊ฐ |
์ปจํ
์ด๋ ์ด๋ฆ | apa000ex1 |
์ด๋ฏธ์ง ์ด๋ฆ | httpd |
โข
์ปค๋งจ๋์์ ์ฌ์ฉํ ์ต์
, ๋์, ์ธ์
ํญ๋ชฉ | ๋ด์ฉ |
--name apa000ex1 | apa000ex1 ์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ปจํ
์ด๋ ์์ฑ |
-d | ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์คํ |
httpd | ์ํ์น์ ์ด๋ฏธ์ง ์ด๋ฆ. ๋ฒ์ ์ ์ง์ ํ์ง ์์์ผ๋ฏ๋ก ๊ฐ์ฅ ์ต์ ๋ฒ์ (latest)์ด ์ฌ์ฉ๋๋ค. |
1.
์ปจํ
์ด๋ ์์ฑ ๋ฐ ์คํ
์ํ์น ์ด๋ฏธ์ง(httpd)๋ฅผ ์ฌ์ฉํด apa000ex1 ์ด๋ผ๋ ์ด๋ฆ์ ์ปจํ
์ด๋๋ฅผ ์์ฑํ๊ณ ์คํํ๋ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅ.
์ฒ์ ์คํํ๋ฉด ์ด๋ฏธ์ง๋ฅผ ๋ด๋ ค๋ฐ๊ฒ ๋๋ฏ๋ก ์คํ์ ์กฐ๊ธ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
docker run --name apa000ex1 -d httpd
Bash
๋ณต์ฌ
2.
์ปจํ
์ด๋๊ฐ ์คํ ์ค์ธ์ง ํ์ธ
ps ์ปค๋งจ๋๋ฅผ ์ฌ์ฉํด ํ์ฌ ์คํ์ค์ธ ์ปจํ
์ด๋๋ฅผ ํ์ธํ ์ ์๋ค. STATUS ํญ๋ชฉ์ ๊ฐ์ด โUpโ์ด๋ผ๊ณ ๋์ค๋ฉด ์ปจํ
์ด๋๊ฐ ์คํ ์ค์ด๋ผ๋ ๋ป์ด๋ค.
docker ps
Bash
๋ณต์ฌ
3.
์ปจํ
์ด๋ ์ข
๋ฃ
stop ์ปค๋งจ๋๋ฅผ ์ฌ์ฉํด ์ปจํ
์ด๋๋ฅผ ์ข
๋ฃํ ์ ์๋ค.
docker stop apa000ex1
Bash
๋ณต์ฌ
4.
์ข
๋ฃ ํ์ธ
docker ps
Bash
๋ณต์ฌ
5.
์ปจํ
์ด๋์ ์กด์ฌ ์ฌ๋ถ ํ์ธ
์ปจํ
์ด๋์ STATUS ํญ๋ชฉ์ด โExitedโ๋ผ๊ณ ๋์ค๋ฉด ์ปจํ
์ด๋๊ฐ ์กด์ฌํ๊ธฐ๋ ํ์ง๋ง ์ข
๋ฃ๋ ์ํ๋ผ๋ ๋ป์ด๋ค.
docker ps -a
Bash
๋ณต์ฌ
์ ์ผ ์์ชฝ์ apa000ex1 ์ปจํ
์ด๋๋ฅผ ์ฐพ์ ์ ์๋ค.
6.
์ปจํ
์ด๋ ์ญ์
rm ์ปค๋งจ๋๋ฅผ ์ฌ์ฉํด ์ปจํ
์ด๋๋ฅผ ์ญ์ ํด๋ณด์.
docker rm apa000ex1
Bash
๋ณต์ฌ
์ด๋ฆ ๋ง๊ณ ๋ ์ปจํ
์ด๋ ID๋ฅผ ์
๋ ฅํด๋ ํด๋น ์ปจํ
์ด๋๊ฐ ์ญ์ ๋๋ค. ๋์ค์ ์ค๋ณต๋ ์ด๋ฆ์ด ์๊ธธ ์ ์์ผ๋, ์ปจํ
์ด๋ ID๋ก ์ญ์ ํ๋ ๊ฒ์ ์ถ์ฒ
7.
์ญ์ ํ์ธ
docker ps -a
Bash
๋ณต์ฌ
๊ฐ๋จํ Hello World ํ๋ก๊ทธ๋จ ์ค์ต์ ํตํ Dockerfile ์์ฑ
ํ๋ก์ธ์ค ์์ฝ
โข
cd node
โฆ
OS ์ ํ
โฆ
Node ์ค์น
โฆ
์ฝ๋ ๋ณต์ฌ
โฆ
ํ๋ก๊ทธ๋จ ์คํ (node app.js)
Dockerfile์ ์์ฑ
โข
FROM node:alpine
COPY ./app
WORKDIR /app
CMD node app.js
Docker
๋ณต์ฌ
์ด์ธ์๋ ARG, ENV, USER, EXPOSE, RUN ๋ฑ์ ๋ช
๋ น ํค์๋๊ฐ ์์.
Docker Image ์์ฑ ๋ฐ ์ปจํ ์ด๋ ๋น๋
โข
Mac OS (Apple M1 ์ด์)
โฆ
docker build --platform linux/amd64 -t hello-world-docker .
โข
Windows, MacOS (Intel)
โฆ
docker build -t hello-world-docker .
docker build -t hello-world-docker .
Bash
๋ณต์ฌ
โข
Docker Image ํ์ธ
docker image ls
Bash
๋ณต์ฌ
โข
Docker Conatiner๋ก ์คํ
$ docker run hello-world-docker
# Hello run์ผ๋ก Dockerfile์์ CMD ๋ช
๋ น์ด ์คํ๋จ.
>> Hello Docker!
Plain Text
๋ณต์ฌ
Docker HUB ๋ฑ๋ก
Docker Registry์ ๋ฑ๋ก
1.
Docker Hub ํ์๋ฑ๋ก
โข
๋จผ์ Docker Hub์ ํ์ ๋ฑ๋ก: https://hub.docker.com/
โฆ
ID์ Password๋ฅผ ๊ธฐ์ตํด๋ ๊ฒ
2.
hello-world-docker repo ๋ง๋ค๊ธฐ
โข
Create repository ์ ํ
โข
์ด๋ฆ์ โhello-world-dockerโ๋ก ์ง์ . Public ์์ฑ ์ง์ :
โฆ
hajun/hello-world-docker
3.
Docker Registry์ ๋ฑ๋ก
โข
ํฐ๋ฏธ๋๋ก ์ด๋ํ์ฌ ๋ค์ ๋ช
๋ น์ ์คํ
โข
๋จผ์ ํ์ฌ ์ด๋ฏธ์ง์ repo ์ด๋ฆ์ geonoo/hello-world-docker๋ก ๋ณ๊ฒฝ
$ docker image ls
$ docker tag hello-world-docker:latest geonoo/hello-world-docker:latest
$ docker image ls
$ docker login --username=geonoo
>> ๋ณ๋์ ํ๋กฌํํธ๋ก ๋ฌผ์ด๋ด
๋๋ค.
$ docker push geonoo/hello-world-docker
SQL
๋ณต์ฌ
4.
Docker Hub์์ ๊ฒฐ๊ณผ ํ์ธ