Docker - ChoDragon9/posts GitHub Wiki
๋์ปค๋ ๋ฌด์์ธ๊ฐ
ํ๋์ ์๋ฒ๋ฅผ ์ฌ๋ฌ๊ฐ์ ํ๋ก๊ทธ๋จ์ ์ค์นํ๊ณ ํฌํธ๋ฅผ ์ค์ ํ๊ณ ์๋ก ๋ค๋ฅธ ์๋ฒ๋ฅผ ์ฐ๊ฒฐํ๋ ์์ ์ ๊ณ ๊ธ ๊ฐ๋ฐ์๋ค์ ์ฌ์ธํ ์์ ์ด ํ์ํ ์์ญ์ด๋ค. ํ์ง๋ง Docker์ ๋ฑ์ฅ์ผ๋ก ์๋ฒ๊ด๋ฆฌ ๋ฐฉ์์ด ์์ ํ ๋ฐ๋๊ฒ ๋์๋ค.
๋์ปค๋
๋์ปค๋ ์ปจํ ์ด๋ ๊ธฐ๋ฐ์ ์คํ์์ค ๊ฐ์ํ ํ๋ซํผ์ด๋ค. ์๋ฒ์์ ์ด์ผ๊ธฐํ๋ ์ปจํ ์ด๋๋ ๋ค์ํ ํ๋ก๊ทธ๋จ, ์คํํ๊ฒฝ์ ์ปจํ ์ด๋๋ก ์ถ์ํํ๊ณ ๋์ผํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ฌ ํ๋ก๊ทธ๋จ์ ๋ฐฐํฌ ๋ฐ ๊ด๋ฆฌ๋ฅผ ๋จ์ํ๊ฒ ํด์ฃผ๋ ๊ฒ์ด๋ค. ๋ฐฑ์๋ ํ๋ก๊ทธ๋จ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ, ๋ฉ์์ง ํ ๋ฑ ์ด๋ค ํ๋ก๊ทธ๋จ๋ ์ปจํ ์ด๋๋ก ์ถ์ํ ํ ์ ์๋ค.
์ปจํ ์ด๋
๊ฒฉ๋ฆฌ๋ ๊ณต๊ฐ์์ ํ๋ก์ธ์ค๊ฐ ๋์ํ๋ ๊ธฐ์ ์ด๋ค. ๊ฐ์ํ ๊ธฐ์ ์ ํ๋์ง๋ง ๊ธฐ์กด ๋ฐฉ์๊ณผ๋ ์ฐจ์ด๊ฐ ์๋ค.
๊ธฐ์กด์ ๊ฐ์ํ ๋ฐฉ์์ ์ฃผ๋ก OS ๊ฐ์ํ๋ฅผ ํ์๋ค. VMWare๋ VirtualBox๊ฐ์ ๊ฐ์๋จธ์ ์ ํธ์คํธ OS์์ ๊ฒ์คํธ OS ์ ์ฒด๋ฅผ ๊ฐ์ํํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค. ์ด ๋ฐฉ์์ ์ฌ๋ฌ๊ฐ์ง OS๋ฅผ ๊ฐ์ํ ํ ์ ์๊ณ ๋น๊ต์ ์ฌ์ฉ๋ฒ์ด ๊ฐ๋จํ์ง๋ง ๋ฌด๊ฒ๊ณ ๋๋ ค์ ์ด์ํ๊ฒฝ์์ ์ฌ์ฉํ ์ ์์๋ค.
์ด๋ฌํ ์ํฉ์ ๊ฐ์ ํ๊ธฐ ์ํด CPU์ ๊ฐ์ํ ๊ธฐ์ ์ ์ด์ฉํ KVM(Kernal-based Virtual Machine)๊ณผ ๋ฐ๊ฐ์ํ(Paravitualization) ๋ฐฉ์์ Xen์ด ๋ฑ์ฅํ๋ค. ์ด๋ฌํ ๋ฐฉ์์ ๊ฒ์คํธ OS๊ฐ ํ์ํ๊ธด ํ์ง๋ง ์ ์ฒด OS๋ฅผ ๊ฐ์ํํ๋ ๋ฐฉ์์ด ์๋์๊ธฐ ๋๋ฌธ์ ํธ์คํธํ ๊ฐ์ํ ๋ฐฉ์์ ๋นํด ์ฑ๋ฅ์ด ํฅ์๋์๋ค. ์ด๋ฌํ ๊ธฐ์ ๋ค์ OpenStack์ด๋ AWS, Rackspace๊ฐ์ ํด๋ผ์ฐ๋ ์๋น์ค์์ ๊ฐ์ ์ปดํจํ ๊ธฐ์ ์ ๊ธฐ๋ฐ์ด ๋์๋ค.
์ ๊ฐ์ํ๋ ๋ฐ๊ฐ์ํ๋ ์ถ๊ฐ์ ์ธ OS๋ฅผ ์ค์นํ์ฌ ๊ฐ์ํํ๋ ๋ฐฉ๋ฒ์ ์ด์จ๋ ์ฑ๋ฅ๋ฌธ์ ๊ฐ ์์๊ณ ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ํ๋ก์ธ์ค๋ฅผ ๊ฒฉ๋ฆฌํ๋ ๋ฐฉ์์ด ๋ฑ์ฅํ๋ค.
๋ฆฌ๋ ์ค์์๋ ์ด ๋ฐฉ์์ ๋ฆฌ๋ ์ค ์ปจํ ์ด๋๋ผ๊ณ ํ๊ณ ๋จ์ํ ํ๋ก์ธ์ค๋ฅผ ๊ฒฉ๋ฆฌ์ํค๊ธฐ ๋๋ฌธ์ ๊ฐ๋ณ๊ณ ๋น ๋ฅด๊ฒ ๋์ํ๋ค. CPU๋ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฑ ํ๋ก์ธ์ค๊ฐ ํ์ํ ๋งํผ๋ง ์ถ๊ฐ๋ก ์ฌ์ฉํ๊ณ ์ฑ๋ฅ์ ์ผ๋ก๋ ๊ฑฐ์ ์์ค์ด ์๋ค.
ํ๋์ ์๋ฒ์ ์ฌ๋ฌ๊ฐ์ ์ปจํ
์ด๋๋ฅผ ์คํํ๋ฉด ์๋ก ์ํฅ์ ๋ฏธ์น์ง ์๊ณ ๋
๋ฆฝ์ ์ผ๋ก ์คํ๋์ด ๋ง์น ๊ฐ๋ฒผ์ด Virtual Machine์ ์ฌ์ฉํ๋ ๋๋์ ์ค๋ค. ์คํ์ค์ธ ์ปจํ
์ด๋์ ์ ์ํ์ฌ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ ์ ์๊ณ apt-get
์ด๋ yum
์ผ๋ก ํจํค์ง๋ฅผ ์ค์นํ ์ ์์ผ๋ฉฐ ์ฌ์ฉ์๋ ์ถ๊ฐํ๊ณ ์ฌ๋ฌ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์คํํ ์๋ ์๋ค. CPU๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ ํํ ์ ์๊ณ ํธ์คํธ์ ํน์ ํฌํธ์ ์ฐ๊ฒฐํ๊ฑฐ๋ ํธ์คํธ์ ํน์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ด๋ถ ๋๋ ํ ๋ฆฌ์ธ ๊ฒ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
์ด๋ฏธ์ง
๋์ปค์์ ๊ฐ์ฅ ์ค์ํ ๊ฐ๋ ์ ์ปจํ ์ด๋์ ํจ๊ป ์ด๋ฏธ์ง๋ผ๋ ๊ฐ๋ ์ด๋ค.
์ด๋ฏธ์ง๋ ์ปจํ ์ด๋ ์คํ์ ํ์ํ ํ์ผ๊ณผ ์ค์ ๊ฐ๋ฑ์ ํฌํจํ๊ณ ์๋ค. ์ํ๊ฐ์ ๊ฐ์ง์ง ์๊ณ ๋ณํ์ง ์๋ ๋ค. ์ปจํ ์ด๋๋ ์ด๋ฏธ์ง๋ฅผ ์คํํ ์ํ๋ผ๊ณ ๋ณผ ์ ์๊ณ ์ถ๊ฐ๋๊ฑฐ๋ ๋ณํ๋ ๊ฐ์ ์ปจํ ์ด๋์ ์ ์ฅ๋๋ค. ๊ฐ์ ์ด๋ฏธ์ง์์ ์ฌ๋ฌ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ ์ ์๊ณ ์ปจํ ์ด๋์ ์ํ๊ฐ ๋ฐ๋๊ฑฐ๋ ์ปจํ ์ด๋๊ฐ ์ญ์ ๋๋๋ผ๋ ์ด๋ฏธ์ง๋ ๋ณํ์ง ์๊ณ ๊ทธ๋๋ก ๋จ์์๋ค.
ubuntu ์ด๋ฏธ์ง๋ ubuntu๋ฅผ ์คํํ๊ธฐ ์ํ ๋ชจ๋ ํ์ผ์ ๊ฐ์ง๊ณ ์๊ณ MySQL์ด๋ฏธ์ง๋ debian์ ๊ธฐ๋ฐ์ผ๋ก MySQL์ ์คํํ๋ ๋ฐ ํ์ํ ํ์ผ๊ณผ ์คํ ๋ช ๋ น์ด, ํฌํธ ์ ๋ณด๋ฑ์ ๊ฐ์ง๊ณ ์๋ค. ์ข ๋ ๋ณต์กํ ์๋ก Gitlab ์ด๋ฏธ์ง๋ centOS๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ruby, go, database, redis, gitlab source, nginx ๋ฑ์ ๊ฐ์ง๊ณ ์๋ค.
์ด๋ฏธ์ง๋ ์ปจํ ์ด๋๋ฅผ ์คํํ๊ธฐ ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ ์ด์ ์์กด์ฑ ํ์ผ์ ์ปดํ์ผํ๊ณ ์ด๊ฒ์ ๊ฒ ์ค์นํ ํ์๊ฐ ์๋ค. ์๋ก์ด ์๋ฒ๊ฐ ์ถ๊ฐ๋๋ฉด ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ฐ๊ณ ์ปจํ ์ด๋๋ฅผ ์์ฑ๋ง ํ๋ฉด ๋๋ค. ํ ์๋ฒ์ ์ฌ๋ฌ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์คํํ ์ ์๊ณ , ์์ญ, ์๋ฐฑ, ์์ฒ๋์ ์๋ฒ๋ ๋ฌธ์ ์๋ค.
๋์ปค ์ด๋ฏธ์ง๋ Docker hub์ ๋ฑ๋กํ๊ฑฐ๋ Docker Registry ์ ์ฅ์๋ฅผ ์ง์ ๋ง๋ค์ด ๊ด๋ฆฌํ ์ ์๋ค.
๋ ์ด์ด ์ ์ฅ๋ฐฉ์
๋์ปค ์ด๋ฏธ์ง๋ ์ปจํ ์ด๋๋ฅผ ์คํํ๊ธฐ ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ณดํต ์ฉ๋์ด ์๋ฐฑ๋ฉ๊ฐ์ ์ด๋ฅธ๋ค. ์ฒ์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ฐ์ ๋ ํฌ๊ฒ ๋ถ๋ด์ด ์๋์ง๋ง ๊ธฐ์กด ์ด๋ฏธ์ง์ ํ์ ํ๋ ์ถ๊ฐํ๋ค๊ณ ์๋ฐฑ๋ฉ๊ฐ๋ฅผ ๋ค์ ๋ค์ด๋ฐ๋๋ค๋ฉด ๋งค์ฐ ๋นํจ์จ์ ์ผ ์ ๋ฐ์ ์๋ค.
๋์ปค๋ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ ์ด์ด๋ผ๋ ๊ฐ๋ ์ ์ฌ์ฉํ๊ณ ์ ๋์จ ํ์ผ ์์คํ ์ ์ด์ฉํ์ฌ ์ฌ๋ฌ๊ฐ์ ๋ ์ด์ด๋ฅผ ํ๋์ ํ์ผ์์คํ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค. ์ด๋ฏธ์ง๋ ์ฌ๋ฌ๊ฐ์ ์ฝ๊ธฐ ์ ์ฉ ๋ ์ด์ด๋ก ๊ตฌ์ฑ๋๊ณ ํ์ผ์ด ์ถ๊ฐ๋์ด๋ ์์ ๋๋ฉด ์๋ก์ด ๋ ์ด์ด๊ฐ ์์ฑ๋๋ค.
ubuntu ์ด๋ฏธ์ง๊ฐ A
+ B
+ C
์ ์งํฉ์ด๋ผ๋ฉด, ubuntu ์ด๋ฏธ์ง๋ฅผ ๋ฒ ์ด์ค๋ก ๋ง๋ nginx ์ด๋ฏธ์ง๋ A
+ B
+ C
+ nginx
๊ฐ ๋๋ค. webapp ์ด๋ฏธ์ง๋ฅผ nginx ์ด๋ฏธ์ง ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์๋ค๋ฉด ์์๋๋ก A
+ B
+ C
+ nginx
+ source
๋ ์ด์ด๋ก ๊ตฌ์ฑ๋๋ค. webapp ์์ค๋ฅผ ์์ ํ๋ฉด A
, B
, C
, nginx
๋ ์ด์ด๋ฅผ ์ ์ธํ ์๋ก์ด source(v2)
๋ ์ด์ด๋ง ๋ค์ด๋ฐ์ผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๊ต์ฅํ ํจ์จ์ ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
์ปจํ ์ด๋๋ฅผ ์์ฑํ ๋๋ ๋ ์ด์ด ๋ฐฉ์์ ์ฌ์ฉํ๋ค. ๊ธฐ์กด์ ์ด๋ฏธ์ง ๋ ์ด์ด ์์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๋ ์ด์ด๋ฅผ ์ถ๊ฐํ๋ค. ์ด๋ฏธ์ง ๋ ์ด์ด๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด์ ์ปจํ ์ด๋๊ฐ ์คํ์ค์ ์์ฑํ๋ ํ์ผ์ด๋ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๋ ์ด์ด์ ์ ์ฅ๋๋ฏ๋ก ์ฌ๋ฌ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์์ฑํด๋ ์ต์ํ์ ์ฉ๋๋ง ์ฌ์ฉํ๋ค.
๊ฐ์ํ์ ํน์ฑ์ ์ด๋ฏธ์ง ์ฉ๋์ด ํฌ๊ณ ์ฌ๋ฌ๋์ ์๋ฒ์ ๋ฐฐํฌํ๋ ๊ฒ์ ๊ฐ์ํ๋ฉด ๋จ์ํ์ง๋ง ์์ฒญ๋๊ฒ ์๋ฆฌํ ์ค๊ณ์ด๋ค.
์ด๋ฏธ์ง ๊ฒฝ๋ก
์ด๋ฏธ์ง๋ url ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํ๋ฉฐ ํ๊ทธ๋ฅผ ๋ถ์ผ ์ ์๋ค. ubuntu 14.04 ์ด๋ฏธ์ง๋ docker.io/library/ubuntu:14.04
๋๋ docker.io/library/ubuntu:trusty
์ด๊ณ docker.io/library
๋ ์๋ต๊ฐ๋ฅํ์ฌ ubuntu:14.04
๋ก ์ฌ์ฉํ ์ ์๋ค. ์ด๋ฌํ ๋ฐฉ์์ ์ดํดํ๊ธฐ ์ฝ๊ณ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ํ๊ทธ ๊ธฐ๋ฅ์ ์ ์ด์ฉํ๋ฉด ํ
์คํธ๋ ๋กค๋ฐฑ๋ ์ฝ๊ฒ ํ ์ ์๋ค.
๋์ปค ์ด๋ฏธ์ง ๋ง๋ค๊ธฐ
Dockerfile
DSL(Domain-Specific Language): ํน์ ํ ๋๋ฉ์ผ์ ์ ์ฉํ๋๋ฐ ํนํ๋ ์ปดํจํฐ ์ธ์ด
๋์ปค๋ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํด Dockerfile
์ด๋ผ๋ ํ์ผ์ ์์ฒด DSL(Domain-specific language) ์ธ์ด๋ฅผ ์ด์ฉํ์ฌ ์ด๋ฏธ์ง ์์ฑ ๊ณผ์ ์ ์ ์ต๋๋ค.
๊ฐ๋จํ์ง๋ง ์ ์ฉํ ์์ด๋์ด์ธ๋ฐ, ์๋ฒ์ ์ด๋ค ํ๋ก๊ทธ๋จ์ ์ค์นํ๋ ค๊ณ ์ด๊ฒ์ ๊ฒ ์์กด์ฑ ํจํค์ง๋ฅผ ์ค์นํ๊ณ ์ค์ ํ์ผ์ ๋ง๋ค์๋ ๊ณผ์ ์ Dockerfile
๋ก ๊ด๋ฆฌํ๋ฉด ๋๋ค. ์ด ํ์ผ์ ์์ค์ ํจ๊ป ๋ฒ์ ๊ด๋ฆฌ๋๊ณ ์ํ๋ค๋ฉด ๋๊ตฌ๋ ์ด๋ฏธ์ง ์์ฑ๊ณผ์ ์ ๋ณด๊ณ ์์ ํ ์ ์๋ค.
# vertx/vertx3 debian version
FROM subicura/vertx3:3.3.1
MAINTAINER [email protected]
ADD build/distributions/app-3.3.1.tar /
ADD config.template.json /app-3.3.1/bin/config.json
ADD docker/script/start.sh /usr/local/bin/
RUN ln -s /usr/local/bin/start.sh /start.sh
EXPOSE 8080
EXPOSE 7000
CMD ["start.sh"]
๋์ปค ์ค์น ๋ฐ ์คํ
์ปจํ ์ด๋ ์ ๋ฐ์ดํธ
- ์ ๋ฒ์ ์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด
docker pull
- ๊ธฐ์กด ์ปจํ
์ด๋ ์ญ์
docker stop
docker rm
- ์ ๋ฒ์ ์ ์ด๋ฏธ์ง ์คํ
docker run
์ปจํ ์ด๋๋ฅผ ์ญ์ ํ๋ฉด ์ปจํ ์ด๋์์ ์์ฑ๋ ํ์ผ์ด ์ฌ๋ผ์ง๋ค. ์ปจํ ์ด๋ ์ญ์ ์ ์ ์งํด์ผํ๋ ๋ฐ์ดํฐ๋ ๋ฐ๋์ ์ปจํ ์ด๋ ์ธ๋ถ ์คํ ๋ฆฌ์ง์ ์ ์ฅํด์ผ ํ๋ค.
์ปจํ ์ด๋ ์คํํ๊ธฐ
๋์ปค๋ฅผ ์คํํ๋ ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ๋ค.
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
-p
์ต์
์ ์ฌ์ฉํ๋ฉด ํธ์คํธ์ 1234
ํฌํธ๋ฅผ ์ปจํ
์ด๋์ 6379
ํฌํธ๋ก ์ฐ๊ฒฐํ์๊ณ , localhost:1234
๋ก ์ ์ํ๋ฉด redis๋ฅผ ์ฌ์ฉ๊ฐ๋ฅํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
docker run -p 1234:6379 redis
์ด๋ฏธ์ง ๋ง๋ค๊ณ ๋ฐฐํฌํ๊ธฐ
๋์ปค๋ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํด Dockerfile
์ด๋ผ๋ ์ด๋ฏธ์ง ๋น๋์ฉ DSL(Domain Specific Language)ํ์ผ์ ์ฌ์ฉํ๋ค.
Ruby ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ubuntu์ ๋ฐฐํฌํ๋ ๊ณผ์ ์์
- ubuntu ์ค์น
- ruby ์ค์น
- ์์ค ๋ณต์ฌ
- Gen ํจํค์ง ์ค์น
- Sinatra ์๋ฒ ์คํ
์ ์คํฌ๋ฆฝํธ ์์
# 1. ubuntu ์ค์น (ํจํค์ง ์
๋ฐ์ดํธ)
apt-get update
# 2. ruby ์ค์น
apt-get install ruby
gem install bundler
# 3. ์์ค ๋ณต์ฌ
mkdir -p /usr/src/app
scp Gemfile app.rb root@ubuntu:/usr/src/app # From host
# 4. Gem ํจํค์ง ์ค์น
bundle install
# 5. Sinatra ์๋ฒ ์คํ
bundle exec ruby app.rb
Dockerfile๋ก ๊ณผ์ ์ ์ฎ๊ธด ์์
# 1. ubuntu ์ค์น (ํจํค์ง ์
๋ฐ์ดํธ + ๋ง๋ ์ฌ๋ ํ์)
FROM ubuntu:16.04
MAINTAINER [email protected]
RUN apt-get -y update
# 2. ruby ์ค์น
RUN apt-get -y install ruby
RUN gem install bundler
# 3. ์์ค ๋ณต์ฌ
COPY . /usr/src/app
# 4. Gem ํจํค์ง ์ค์น (์คํ ๋๋ ํ ๋ฆฌ ์ค์ )
WORKDIR /usr/src/app
RUN bundle install
# 5. Sinatra ์๋ฒ ์คํ (Listen ํฌํธ ์ ์)
EXPOSE 4567
CMD bundle exec ruby app.rb -o 0.0.0.0
Docker build
์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ๋ค.
docker build [OPTIONS] PATH | URL
์์ฑํ ์ด๋ฏธ์ง ์ด๋ฆ์ ์ง์ ํ๊ธฐ ์ํด์๋ -t(--tag)
์ต์
์ ์ฌ์ฉํ๋ฉด ๋น๋ ๊ฐ๋ฅํ๋ค. Dockerfile์ ๋ง๋ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ค.
docker build -t app .
์ด๋ฏธ์ง๊ฐ ์ ์์ฑ๋ฌ๋ ์ง ํ์ธํ๋ ค๋ฉด docker images
๋ช
๋ น์ด๋ก ํ์ธ ๊ฐ๋ฅํ๋ค.
์ด๋ฏธ์ง ์ ์ฅ์
๋น๋ํ ๋์ปค ์ด๋ฏธ์ง๋ ์๋ฒ์ ์ง์ ํ์ผ์ ๋ณต์ฌํ์ง ์๋ ๋ค. ๋์ปค ๋ ์ง์คํธ๋ฆฌ๋ ์ด๋ฏธ์ง ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๋ค. ๋์ปค ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๋ ์ง์คํธ๋ฆฌ์ ํธ์ํ๊ณ ๋ค๋ฅธ ์๋ฒ์์ ํ ๋ฐ์ ์ฌ์ฉํ๋ ๊ตฌ์กฐ์ด๋ค.
๋์ปค ๋ ์ง์คํธ๋ฆฌ๋ ์คํ์์ค๋ก ๋ฌด๋ฃ๋ก ์ค์นํ ์ ์๊ณ ์ค์นํ์ด ์ซ๋ค๋ฉด ๋์ปค(Docker Inc.)์์ ์๋น์ค ์ค์ธ ๋์ปค ํ๋ธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
Docker Hub
๋์ปค ํ๋ธ๋ ๋์ปค์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ์ด๋ฏธ์ง ์ ์ฅ์๋ก ubuntu, centos, debian๋ฑ์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง์ ruby, golang, java, python ๋ฑ์ ๊ณต์ ์ด๋ฏธ์ง๊ฐ ์ ์ฅ๋์ด ์๋ค.
์ด๋ฏธ์ง ํ๊ทธ
๋์ปค ์ด๋ฏธ์ง ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ ํํ๋ก ๊ตฌ์ฑ๋๋ค.
[Registry URL]/[์ฌ์ฉ์ ID]/[์ด๋ฏธ์ง๋ช
]:[tag]
Registry URL
์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ปค ํ๋ธ๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ์๊ณ ์ฌ์ฉ์ ID
๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ธ library๋ฅผ ์ฌ์ฉํ๋ค.
๋ฐ๋ผ์ ubuntu
= library/ubuntu
= docker.io/library/ubuntu
๋ ๋ชจ๋ ๋์ผํ ํํ์ด๋ค.
๋ณด์
๋์ปค ๋ ์ง์คํธ๋ฆฌ๋ ์ผ๋ฐ์ ์ธ HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์ ์กํ๋ค. ๋ฐ๋ผ์ SSL(HTTPS)์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ด๋ฏธ์ง ๋ด์ฉ์ด ์ ์ถ๋ ์ ์๋ค. ์ด๋ฐ ๋ณด์ ์ด์ ๋๋ฌธ์ ๋์ปค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ก์ปฌ ์๋ฒ๋ฅผ ์ ์ธํ๊ณค HTTP ์ฌ์ฉ์ ๊ธ์งํ๊ณ ์๋ค.
๋ฐฐํฌํ๊ธฐ
๊ธฐ์กด ๋ฐฐํฌ ๋ฐฉ์
๊ธฐ์กด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ๋ฐฉ์์ ์ธ์ด, ํ๋ ์์ํฌ, ์น์๋ฒ, ๋ฆฌ๋ ์ค ๋ฐฐํฌํ ๋ฑ ๊ฐ๋ฐ์์ ์ทจํฅ์ ๋ฐ๋ผ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ฐฉ์์ ์ฌ์ฉํ๋ค. ์๋ก์ด ์๋ฒ๋ฅผ ์ ํ ํ๊ณ ํ ๋ฒ์ ๋ฐฐํฌ๋ฅผ ์ฑ๊ณตํ๋ค๋ ๊ฒ ๊ต์ฅํ ํ๋ ์ผ์ด์๊ณ ์์กด์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๋๋ก ์ค์น๋์๋์ง ๊ฒ์ฆํ๊ธฐ๋ ๋งค์ฐ ์ด๋ ค์ ๋ค.
ftp, ant, gradle, capistrano ๋ฑ ๋ค์ํ ๋ฐฐํฌํด์ด ์ ๋ง๋ค์ ์ฅ์ ์ ๊ฐ์ง๊ณ ๋ฑ์ฅํ์๊ณ ๋ฐฐํฌํ๋ ๋ฐฉ์์ ํ๋๋ก ์ ์ํ๋ค๋ ๊ฑด ๊ฑฐ์ ๋ถ๊ฐ๋ฅํ๋ค.
์ปจํ ์ด๋ ๋ฐฐํฌ ๋ฐฉ์
์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ค ์ธ์ด, ์ด๋ค ํ๋ ์์ํฌ๋ฅผ ์ฐ๋ ์๊ด์์ด ๋ฐฐํฌ ๊ณผ์ ์ด ๋จ์ํด ์ง๋ค. ๋จ์ํ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ฐ๊ณ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ฉด ๋๋ค.
์ปจํ ์ด๋ ์ ๋ฐ์ดํธ
๋์ปค๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ฐ์ดํธํ๋ ๋ฐฉ์๋ ๋ฐฐํฌ์ ํฐ ์ฐจ์ด๊ฐ ์๋ค. ์ต์ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ปจํ ์ด๋๋ฅผ ๋ง๋ค๊ณ ์ด์ ์ปจํ ์ด๋๋ฅผ ์ค์ง(์ญ์ )ํ๋ฉด ๋๋ค. ์ต์ ์์ค๋ฅผ ์ด๋ป๊ฒ ๋ณต์ฌํ ์ง ์๋ฒ ํ๋ก์ธ์ค๋ ์ด๋ป๊ฒ ์ฌ์์ํ ์ง ๊ณ ๋ฏผํ ํ์๊ฐ ์๋ค.
์ปจํ ์ด๋๋ฅผ ์ค์งํ์ง ์๊ณ ๊ต์ฒดํ๋ ๋ฐฉ๋ฒ์ ์๊ธฐ ๋๋ฌธ์ ์๋น์ค์ ์ํฅ์ด ์์ผ๋ ค๋ฉด ๋ก๋ ๋ฒจ๋ฌ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.