์๋ฅผ ๋ค์ด postgresql ํด๋ผ์ด์ธํธ ์ค์ , ์ผ๋ฐ Python ์ฑ ํ๊ฒฝ ์ค์ ๋ฑ์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ธฐ ์ํ ์ฌ๋ฌ Dockerfile์ด ์์ต๋๋ค.
๋ ์ด๋ฏธ์ง๋ฅผ ๊ฒฐํฉํ ๋ค์ ๋ ๋ง์ ๋ช ๋ น์ ์คํํ๋ Python ์น ์ฑ์ฉ Dockerfile์ ๋ง๋ค๊ณ ์ถ์ต๋๋ค.
๋ฌธ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ค๋ฉด FROM
๋ฅผ ๋ ๋ฒ์งธ๋ก ์ฌ์ฉํ๋ฉด ํ์ฌ ์ด๋ฏธ์ง์ ์ถ๊ฐํ๋ ๋์ ์ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ธฐ ์์ํฉ๋๊น?
๋น์ ์ ๊ทธ๋ค์ ์ฒด์ธ :)
์๋ฅผ ๋ค์ด, ์ผ๋ฐ postgres ํด๋ผ์ด์ธํธ์ ์ผ๋ฐ python ์ฑ ํ๊ฒฝ์ ์ค์ ํ๋ Dockerfile์ด ํ๋ ์๋ ๊ฒฝ์ฐ ํด๋น ๋น๋์ ๊ฒฐ๊ณผ์ ํ๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค(์: mygenericenv
). ๊ทธ๋ฌ๋ฉด ํ์ Dockerfile์ FROM mygenericenv
.
์๋ฅผ ๋ค์ด
## Dockerfile.genericwebapp might have FROM ubuntu
cat Dockerfile.genericwebapp | docker build -t genericwebapp -
## Dockerfile.genericpython-web would have FROM genericwebapp
cat Dockerfile.genericpython-web | docker build -t genericpython-web -
## and then this specific app i'm testing might have a docker file that containers FROM genericpython-web
docker build -t thisapp .
genericA --> specificA
์ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ ์ ์์ง๋ง ๋ค์๊ณผ ๊ฐ์ ์์
์ ์ํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
genericA --
\
---> specificAB
/
genericB --
?
๊ณต์์ ์ธ ์๋จ์ ํตํ์ง ์์์ง๋ง ์ผ๋ถ ์ฌ๋๋ค์ ์ด ์ข๊ฒ ์ด๋ฏธ์ง ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์๋์ผ๋ก ์์ ํ์ฌ ์ด๋ฅผ ๋ฌ์ฑํ์ต๋๋ค(๊ทธ๋ฌ๋ ์ด๋ ๊ฒ ํ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ํ์ ๊ฐ์ํด์ผ ํ๋ฉฐ ๋ชจ๋ ์กฐ๊ฐ์ ์ ์งํ๊ฒ ๋ฉ๋๋ค).
์ด๊ฒ์ด ๊ณต์์ ์ผ๋ก ์ง์๋์ง ์๋ ์ด์ ๋ "์ฐ๋ถํฌ"๋ฅผ ์ฌ์ฉํ๊ณ ์๋จ์ "centos"๋ฅผ ์ ๋ชฉํ๊ณ ์ถ๋ค๊ณ ์์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ง์ ์ ๋ชฝ์ ์ผ์ผํค๋ ์ ๋ง ์ฌ๋ฏธ์๋ ๊ฐ๋ฑ์ด ๋ง์ด ์์ ๊ฒ์ด๋ฏ๋ก, ๊ทธ๋ฐ ์ผ์ ํ๊ณ ์ถ๋ค๋ฉด ํผ์ ํ์ธ์.
์๊ฒ ์ต๋๋ค. ์ด์ ๋ฅผ ์๊ฒ ์ต๋๋ค. ๊ตฌ์ฑ ๊ฐ๋ฅํ ๊ธฐ๋ฅ ๋ธ๋ก์ ์ฐพ๊ณ ์์์ง๋ง ์ด๊ฒ์ Docker ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ ์๋ ์์ต๋๋ค. ์์ ์ปจํ ์ด๋๋ฅผ ์ค์ ํ๋ ๋ฐ ์ฌ์ฉํ๊ณ ๊ทธ ์์ ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ์๋จ์ ๊ฐ๋ฅํ ๋๋ saltstack๊ณผ ๊ฐ์ ๊ฒ์ ์คํํด์ผ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ปจํ ์ด๋ ๋ค์ ์๋ ์์ด๋์ด๋ ์ค์ ๊ตฌ์ฑ์ ๊ฐ์ฅ ์์ ๋จ์๊ฐ ์ปจํ ์ด๋๋ผ๋ ๊ฒ์ ๋๋ค. ์ฆ, ์ปจํ ์ด๋๋ ๋ฌด์๊ณผ ๊ฒฐํฉ๋ ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ฏธ๋ฆฌ ์์ฐํ ์ ์๋ ๊ฐ์ฅ ์์ ๊ฒ์ด๋ฉฐ, ๋ค๋ฅธ ๊ตฌ์ฑ ์์์ ์ด๋ป๊ฒ ์๋ํ๊ณ ์ํธ ์์ฉํ ์ง์ ๋ํ ๊ฐ๋ ฅํ ๋ณด์ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ปจํ ์ด๋๋ณด๋ค ์์ ๋ชจ๋ ๋จ์(๋ฃจ๋น ๋๋ ์ ธ ์คํฌ๋ฆฝํธ, C++ ์์ค ํธ๋ฆฌ, ์์ฒด ๋ฐ์ด๋๋ฆฌ, ๊ตฌ์ฑ ํ์ผ ์ธํธ, ์์คํ ํจํค์ง ๋ฑ)๋ ๋ค์๊ณผ ๊ฐ์ด ๋์ํ๋ฏ๋ก ์์ ํ๊ฒ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ๋น๋ ์ข ์์ฑ, ๋ฐํ์ ์ข ์์ฑ ๋ฐ ์ปดํฌ์ง์ ์ ์ผ๋ถ์ธ ๊ธฐํ ๊ตฌ์ฑ ์์์ ๋ฐ๋ผ ๋งค์ฐ ๋ค๋ฆ ๋๋ค.
๊ทธ ํ์ค์ ๋ฌด์ฐจ๋ณ ๋์ ์ผ๋ก ๋ถ๋ถ์ ์ผ๋ก ๊ฐ๋ ค์ง ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฌด์ฐจ๋ณ ๋์ ์ ์ค์ฉ์ ์ด๊ณ "์ถฉ๋ถํ ์ข์"(์ฑ์ ๋ ์ด์ ๊ฐ๋ฅํ ๋น๋๋ฅผ ์ํด ๋ชจ๋ ๊ฒ์ ์๋ ๊ฐ์งํ๋ ๊ฑฐ๋ํ Makefile) ๋๋ ์ง๋์น๊ฒ ๊ฑฐ์ฐฝํ ์ ์์ต๋๋ค("๊ตฌ์ฑ ์์ ๊ฐ์ ๋ชจ๋ ์ข ์์ฑ ๋ฐ ๊ฐ์ญ์ ๊ฐ๋ฅํ ๋ชจ๋ ์์ด์ ๋ฏธ๋ฆฌ ๋ชจ๋ธ๋งํ๊ณ ๋์ ์์ค์ ์ถ์ํ๋ก!")
Ansible, Chef ๋๋ ๊ธฐํ ๊ตฌ์ฑ ๊ด๋ฆฌ์ ์์กดํ์ฌ "๊ตฌ์ฑ ๊ฐ๋ฅํ ๊ตฌ์ฑ ์์"๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ ๋์ ์ถ์ํ์ ์์กดํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ๊ตฌ์ฑ ์์๋ ์ค์ ๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ํ ์์คํ ์์ ๋ค์ ์์คํ ์ผ๋ก ๋ฐฑ๋ง ๊ฐ์ง ๋ฐฉ์์ผ๋ก ๋ค๋ฅด๊ฒ ์๋ํ๋ ๋น๋๋ฅผ ์์ฑํฉ๋๋ค. ๊ฒฐ๊ตญ ๋ชจ๋ ์ถ๊ฐ ์ถ์ํ๋ ๋น์ ์๊ฒ ๊ฑฐ์ ์ด๋์ด ๋์ง ์์ ๊ฒ์ ๋๋ค.
์ ์กฐ์ธ์ 1) ์์ค ์ฝ๋, 2) ์คํ ๊ฐ๋ฅํ ์ปจํ ์ด๋์ ๋ ๊ฐ์ง์ ์ค์ ์ ๋๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ๋ค์ ์ ๋ขฐํ ์์๋ ์ ์ผํ 2 ๊ฐ์ง ๊ตฌ์ฑ ์์์ ๋๋ค.
2013๋
12์ 29์ผ ์ผ์์ผ ์คํ 1์ 46๋ถ, anentropic [email protected]
์ผ๋ค:
์๊ฒ ์ต๋๋ค. ์ด์ ๋ฅผ ์๊ฒ ์ต๋๋ค. ๊ตฌ์ฑ ๊ฐ๋ฅํ ๊ธฐ๋ฅ ๋ธ๋ก์ ์ฐพ๊ณ ์์์ง๋ง ์ด๊ฒ์ Docker ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ ์๋ ์์ต๋๋ค. ์์ ์ปจํ ์ด๋๋ฅผ ์ค์ ํ๋ ๋ฐ ์ฌ์ฉํ๊ณ ๊ทธ ์์ ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ์๋จ์ ๊ฐ๋ฅํ ๋๋ saltstack๊ณผ ๊ฐ์ ๊ฒ์ ์คํํด์ผ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/dotcloud/docker/issues/3378#issuecomment -31326172
๋ ๋ง์ ๊ด์ ์ ์ ๊ณตํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
Dockerfiles์ ์ผ๋ถ๋ฅผ ์ฌ์ฌ์ฉํ๊ธฐ ์ํด ์ฌ์ฉํ ์ ์๋ ์ ์ผํ ๋๊ตฌ๋ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ๊ธฐ๋ผ๋ ๋ง์์ด์ ๊ฐ์? '์ด์'๋ณด๋ค '๊ฐ๋ฐ'์ ๊ด์ ์์ ๋ณด๋ฉด ์ฝ๊ฐ ์๋ชป๋ ๋๋์ด ๋ญ๋๋ค.
์ด๋ฏธ์ง์ ๊ณต๊ฐ ์์ธ์ ๊ฐ๋ ๊ฒ์ด ์ค์์ผ ์๋ ์๊ณ , Chef ๋ ์ํผ์ ๋ชจํธํ๊ฒ ์ ์ฌํ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋น๋ฉ ๋ธ๋ก์ ๊ณต์ ํ ์ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ง๊ธ๊น์ง ๋ด ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ์ ์ฉํ์ง ์์ต๋๋ค.
) ๋๋ถ๋ถ์ ์ด๋ฏธ์ง์๋ ์ด๋ฏธ์ง๊ฐ ์ํํ๋ ์์
๊ณผ ๋ด๋ถ์ ๋ํ ์ ๋ณด๊ฐ ์์ต๋๋ค.
b) ๋ฌธ์๋ ์์
์ ์ธ๋ฑ์ค์ ์ปค๋ฐํ๋๋ก ๊ถ์ฅํฉ๋๋ค(๋์ค์ ๊ฐ์ ธ์ฌ ์ ์์). ๋น๋ก ๋น์ ์ด ๋ง๋ ๊ฒ์ด ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ์ ์ฉํ์ง ์์ ์๋ ์์ง๋ง, ๊ฑฐ๊ธฐ์ ์๋ ๋๋ถ๋ถ์ ๋ด์ฉ์ ์๋ง๋ ๊ณต์ ํ ๊ฐ์น๊ฐ ์์ ๊ฒ์
๋๋ค.
๋ฌธ์๊ฐ ํ์ฌ Docker๋ฅผ ํฉ๋ฆฌ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ๋๋ก ์๋ดํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
@anentropic Dockerfile์ ์ฌ์ฉ ํ์ฌ ์ด๋ฅผ ์ํํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ Dockerfile๋ก ์ฌ๋ฌ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๊ฒ์
๋๋ค.
๋ค์์ ์์
๋๋ค. Dockerfile 1์ Ubuntu ๊ธฐ๋ณธ ์ด๋ฏธ์ง ์์ ์ผ๋ฐ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ , Dockerfile 2๋ Dockerfile 1์ ๊ฒฐ๊ณผ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ฉ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ , Dockerfile 3์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์ญํ ์ ๋ํด ๊ตฌ์ฑํฉ๋๋ค. .
docker build
๋ ์คํํ๊ธฐ ๋งค์ฐ ์ฌ์์ผ ํ๊ณ ๋ถํ์ํ ๋ณต์ก์ฑ์ด ์ถ๊ฐ๋์ด์๋ ์ ๋ฉ๋๋ค.
์ด๋ฏธ์ง์ ๊ณต๊ฐ ์์ธ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. Docker ์ด๋ฏธ์ง๋ ์ผ๋ฐ์ ์ผ๋ก ๋ณ๋์ ์ปจํ ์ด๋์์ ์คํํ ์ ์๋ ํ๋์ ์๋น์ค ๋๋ ์ฌ๋ฌ ์๋น์ค๋ฅผ ์คํํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ง์ ๋ ธ๋ ฅ ์์ด ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์์ ์คํํ๊ณ ์ ์ฉํ ์ํํธ์จ์ด๋ฅผ ์ค์นํ๊ณ ์คํํ ์ ์์ต๋๋ค.
์ดํดํ์ต๋๋ค ... ์์ ASCII ์ํธ๋ก ์์ฝ ํ ์๋๋ฆฌ์ค์์ Docker ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
GenericA
๋ฐ GenericB
์ฉ Dockerfile๋ก ์์SpecificAB
๋ด๊ฐ ๋ณต์ฌ์ ๋ด์ฉ์ ๋ถ์ฌ ๊ฒ GenericB
์๋ก์ด Dockerfile์ Dockerfile์ ๊ทธ์ ํจ๊ป ์์ : FROM GenericA
๋ด๊ฐ ๋ณด๋ ๋ฌธ์ ๋ GenericB
๋ํ '๋ ์ํผ'(Chef ์ฉ์ด๋ฅผ ๋น๋ฆฌ๊ธฐ ์ํด)๊ฐ ๋งค์ฐ ๋ณต์กํ๊ณ ๋ง์ ๋จ๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ Dockerfile์ Github_์ ๊ฒ์ํ๋ ๊ฒ ์ธ์๋ ์ด ์ ๋ณด๋ฅผ ๊ณต์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์
๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ด ๊ด๋ จ ๋ถ๋ถ์ ์์ ์ Dockerfile์ _๋ณต์ฌ ๋ฐ ๋ถ์ฌ๋ฃ๊ธฐ_ํ ์ ์์ต๋๋ค.
๊ณต๊ฐ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด ๋ณด์ จ์ต๋๊น? ์๋ฅผ ๋ค์ด, "postgres"๋ฅผ ๊ฒ์ํ์ต๋๋ค... ๋ค์๊ณผ ๊ฐ์ ์ด๋ฏธ์ง์ ์ ์ฉ์ฑ์ ์ด๋ป๊ฒ ํ๋จ(๋๋ ๊ตฌ๋ณ)ํฉ๋๊น:
?
๋ด๊ฐ ์ํ๋ ๋ฐฉ์์ผ๋ก Postgres ์๋ฒ๋ฅผ ์ค์ ํ๋์ง ํ์ธํ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ด ํน๋ณํ ๊ธฐ๋ณธ ์ด๋ฏธ์ง์ ์๋ฌด ๊ฒ๋ ์จ๊ฒจ์ ธ ์์ง ์์ ์ํ์์ ์ฒ์๋ถํฐ ์ง์ ๋ง๋๋ ๊ฒ์ผ ๋ ์ด๊ฒ์ด ์ ๊ณตํ๋ ๊ฐ์น๋ ๋ฌด์์ ๋๊น?
๊ณต๊ฐ ์์ธ์์ ์ผ๋ถ '๊ณต์์ ์ผ๋ก ์ถ๋ณต๋ฐ์' ๊ธฐ๋ณธ ์ด๋ฏธ์ง์ ๊ฐ์น๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ๊ฐ์ ธ์ฌ ์ค๋น๊ฐ ๋ ๋๋ง์ ์ฌ์ฉ์ ์ง์ ์ด๋ฏธ์ง์ ๋ํ ๊ฐ์ธ ์์ธ์ ๋ณด์ ํ๋ ๊ฒ์ ๊ฐ์น๋ฅผ ์ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฌ๊ธฐ https://github ์์ ๊ฑฐ๋ถ๋ 'ํฌํจ' ๋ช ๋ น์ ๋ํ ์ ์๊ณผ ๊ฐ์ด Dockerfile์ ์ผ๋ จ์ ๋ช ๋ น์ ๋ ์ํผ๋ก ๊ณต์ ํ ์ ์๋ ๋ฐฉ๋ฒ(๋ณต์ฌ ๋ฐ ๋ถ์ฌ๋ฃ๊ธฐ ์ ์ธ)์ด ์๋ ๊ฒ์ด ๋ถ๋๋ฌ์ด ๊ฒ ๊ฐ์ต๋๋ค.
@anentropic ์ ๋ขฐํ ์ ์๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ postgres Dockerfile์ ์ฐพ์ ์ด๋ฏธ์ง๋ฅผ ์ง์ ๋น๋ํ ์๋ ์์ต๋๋ค.
์ด๋ฏธ์ง๋ ์ผ๋ฐ์ ์ผ๋ก ์ ํํ ์๊ตฌ ์ฌํญ์ ๋ง๋๋ก Dockerfile์ ์ฌ์ฉ์ ์ง์ ํ ๋ ๋ ์ ์ฉํฉ๋๋ค. ๊ทธ๋์ ๋ ๋ง์ ์ฌ์ฉ์๊ฐ ๋์ผํ ์ํํธ์จ์ด์ ๋ํ ์ด๋ฏธ์ง๋ฅผ ๋ ์ง์คํธ๋ฆฌ์ ์ ๋ก๋ํ๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์์ต๋๋ค.
postgres ์ด๋ฏธ์ง์ ๊ฐ์ ๊ธฐ์กด์ ํน์ ์ด๋ฏธ์ง๋ ํน์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ์ง ๋ชปํ ์ ์์ง๋ง ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ ์์ผ๋ฉฐ ์ฌ์ฉ์์๊ฒ ์ ์ฉํ ๊ฒ์ ๊ตฌ์ถํ๋ ๋ฐ ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
ubuntu
, centos
๋ฐ stackbrew/*
์ผ๋ถ ์ด๋ฏธ์ง๋ ํ์ํ ๊ฒ์ ๊ตฌ์ถํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ด๋ฏธ์ง์
๋๋ค.
๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ ์ด๋ฏธ์ง์ ์๋ stackbrew/registry
์
๋๋ค. ์ด ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ฉด docker pull stackbrew/registry
๋ฐ docker run -p stackbrew/registry
์คํ์ด ์๋ฃ๋๋ ์ฆ์ ๊ฐ์ธ Docker ๋ ์ง์คํธ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ๋ ์ ์์ต๋๋ค.
Docker์ ๋ชฉํ๋ ๋ฐฐํฌ๋ฅผ ๋๊ณ ์ํํธ์จ์ด๊ฐ ์คํ๋๋ ํ๊ฒฝ์ ์ค๋นํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ๋น๋๊ฐ ์ ํ์ด๊ณ ์ด๊ธฐ ๋น๋ ์ค์๋ง ์ํ๋์ง๋ง ๋งค๋ฒ ๋๊ฐ์ ์ํํธ์จ์ด๋ฅผ ์คํํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๊ตฌ์ฑ ๊ด๋ฆฌ ์์คํ ์ ์ฌ์ฉํ๋ฉด ๋ ๋ง์ ์์ ์ ์ํํ๊ฑฐ๋ ๋ค๋ฅธ ํธ๋ฆญ์ ์ฌ์ฉํ ์ ์์ง๋ง "๋ถ๋ณ"ํ์ง ์์ผ๋ฉฐ ๊ตฌ์ฑ ๊ด๋ฆฌ ์ํํธ์จ์ด์์ ํฌ์ฐฉํ์ง ๋ชปํ๋ ๋ฏธ๋ฌํ ์ฐจ์ด๊ฐ ์๋ ๋ ๊ฐ์ ํธ์คํธ๋ฅผ ๊ฐ๊ฒ ๋ ์ ์์ต๋๋ค.
์ค๋๋ ์ค๋ ๋๋ฅผ necroํ๋ ๊ฒ์ ์ซ์ดํ์ง๋ง IMHO๊ฐ ์๋ณธ ํฌ์คํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋๊ณ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ฌ๊ธฐ์์ ์ด ๋ฌธ์ ์ ๋ํ ์ ์ฌํ ์๋ฃจ์ ์ ์ฐพ๋ ๋ฐ ๋์์ด ๋ ์ ์๋ ๊ฒ์ ์ ๊ณตํ๊ณ ์ถ์์ต๋๋ค.
๋จ์ํ๋ฅผ ์ํด ๋ชจ๋ ๋์ผํ ๊ธฐ๋ณธ ์ด๋ฏธ์ง R
์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค. A
์๋น์ค์ B
์๋น์ค๊ฐ ์๋ค๊ณ ์์ํด๋ณด์ญ์์ค. ๋๋ ๊ทธ๊ฒ๋ค์ ๋ณ๋์ Docker ์ด๋ฏธ์ง์ ๋์ผํ Docker ์ด๋ฏธ์ง์ ๋ชจ๋ ์ํฉ๋๋ค.
A
์๋น์ค๋ฅผ ์ค์นํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ณ B
์๋น์ค๋ฅผ ์ค์นํ๋ ๋ณ๋์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ์ญ์์ค. ๊ทธ๋ฐ ๋ค์ A
์คํฌ๋ฆฝํธ์ B
์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋ git repo๊ฐ โโ์์ต๋๋ค. ๋น๋๋ 3๊ฐ์ Docker ์ด๋ฏธ์ง ๋ชจ๋์ ๋ํ git repos๋ฅผ ๋ง๋ญ๋๋ค. ๊ฐ๊ฐ์๋ ์ฌ์ฉ๋ ์ค์น ์คํฌ๋ฆฝํธ๊ฐ ์๋ git ํ์ ๋ชจ๋์ด ํฌํจ๋์ด ์์ต๋๋ค. ๊ฐ Dockerfile์ ๋จ์ํ ์ค์น ์คํฌ๋ฆฝํธ๋ฅผ ADD
ํ ๋ค์ ์ค์น ์คํฌ๋ฆฝํธ๋ฅผ RUN
ํ๊ณ ํ๋ ๋๋ ๋ ์คํฌ๋ฆฝํธ ๋ชจ๋์ ๋ํด ์ด ์์
์ ์ํํฉ๋๋ค. ์ด๋ฏธ์ง์์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ฑฐํ๋ ค๋ฉด ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ํ ๊ณ ์ ํ์ธ์.
์ด๋ ๊ฒ ํ๋ฉด ๊ฐ ์ค์น ์คํฌ๋ฆฝํธ์ ์ฌ๋ณธ ํ๋์ ์ด๋ฅผ ์ฌ์ฉํ๋ ค๋ ๋์ปค ์ด๋ฏธ์ง๊ฐ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ถํ์ํ ์ฝ๋ ๋ณต์ฌ๋ฅผ ๋ฐฉ์งํ๊ณ ์ ์ง ๊ด๋ฆฌ ๋ถ๋ด์ ์ต์ํํ ์ ์์ต๋๋ค. ๋ ธ๋ ฅ์ ์ ์ผํ ์ค๋ณต์ ํ์ ๋ชจ๋์์ ์ฌ์ฉํ๋ ์ปค๋ฐ์ ์๋ก ์ฎ๊ธฐ๋ ๊ฒ์ ๋๋ค. ์ด๋ ๋์๋ณด๋ค ํจ์ฌ ์ฐ์ํ๊ณ ์๋ํ๋ ์ ์์ต๋๋ค.
์๋ ์๋ฆฌ๋ฅผ ์๋ชป ์ดํดํ๊ณ ์๋ ๊ฒ ๊ฐ์์ ์ค๋ช ์ ์ํด ๋ต๊ธ์ ๋ต๋๋ค. ๊ณต์ ์ ๋ ๋ ๋์ปค ์ด๋ฏธ์ง์ ํจ๊ป Ubuntu 11์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ค์ ์ฐ๋ถํฌ 15๋ฅผ ์ฌ์ฉํฉ๋๋ค.
https://github.com/SeleniumHQ/docker-selenium/blob/master/Base/Dockerfile
์ด ์์ ์ ์ํํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น? ํด๋น ์ ์ฅ์๋ฅผ ๋ณต์ ํ๊ณ ๋ชจ๋ ํ์ผ์ 15๊ฐ ์๋ Ubuntu 11๋ก ํธ์งํ๋ ค๋ฉด? ์ด๊ฒ์ ์ณ์ ์ ์์ต๋๋ค, ๊ทธ๋ ์ฃ ? ์ด๋ ๊ณต์ ์ด๋ฏธ์ง์ ๋ชจ๋ ์ธก๋ฉด์ ๋ํด ๋์ํ์ง ์๋ ๋ชจ๋ ์ฌ๋์ด ์ฝ๋๋ฅผ ๋ณต์ ํ์ง ์๊ณ ๋ ์ฌ์ฉํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ ๊ฐ ์๋ชป ์๊ณ ์๋ ๊ฒ ๊ฐ์๋ฐ์, ๋๊ฐ ์ค๋ช ์ข ํด์ฃผ์ค ์ ์๋์? Ubuntu 11์์ ๊ณต์ ์ ๋ ๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
@rjurney ๋ค, ๊ทธ๋ ๊ฒ ํ๋ฉด ๋ฉ๋๋ค. ๊ทํ์ ์์์ ์ ์ฒด Dockerfile์ ubuntu:15.04 ๋ฅผ ์ผ๋์ ๋๊ณ ๊ฐ๋ฐ๋์์ต๋๋ค. ubuntu:11 ์์ ํด๋น ํจํค์ง๋ฅผ ์ฌ์ฉํ ์
Docker๋ ๊ธฐ๋ณธ ์ด๋ฏธ์ง์ ์ด๋ฏธ์ง ๊ฐ์ _differences_๋ง ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด ์ด๋ฏธ์ง์ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ "๊ต์ฒด"ํ๋ ๊ฒ๋ ์๋ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ค๋ฅธ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ฉด ์์ธกํ ์ ์๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํฉ๋๋ค(์: "ํ์ผ X ์ ๊ฑฐ", ์ฌ๊ธฐ์ "ํ์ผ X"๋ ์๋ ๊ธฐ๋ณธ ์ด๋ฏธ์ง์ ์์ง๋ง ์ ํํ ๊ธฐ๋ณธ ์ด๋ฏธ์ง์๋ ์์). ๋ํ ๊ธฐ๋ณธ ์ด๋ฏธ์ง์ "์์" ๋น๋๋๋ ์ด๋ฏธ์ง์ ํจํค์ง/๋ฐ์ด๋๋ฆฌ๋ _that_ ๋ฒ์ ์ฉ์ผ๋ก ๋น๋๋ ํจํค์ง์ด๋ฉฐ, ์ด๋ฌํ ๋ฐ์ด๋๋ฆฌ๋ ๋ค๋ฅธ ๊ธฐ๋ณธ ์ด๋ฏธ์ง์ ํธํ๋์ง ์์ ์ ์์ต๋๋ค.
์ด๋ ๊ณต์ ์ด๋ฏธ์ง์ ๋ชจ๋ ์ธก๋ฉด์ ๋ํด ๋์ํ์ง ์๋ ๋ชจ๋ ์ฌ๋์ด ์ฝ๋๋ฅผ ๋ณต์ ํ์ง ์๊ณ ๋ ์ฌ์ฉํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
์. ๊ณต์ ์ด๋ฏธ์ง๋ ํด๋น ์ด๋ฏธ์ง์ ์ ์ง ๊ด๋ฆฌ์(์ด ๊ฒฝ์ฐ Selenium์ ์ ์ง ๊ด๋ฆฌ์)๊ฐ ์ง์ํฉ๋๋ค. ํด๋น ์ด๋ฏธ์ง์ ๋ณ๊ฒฝ์ด ํ์ํ๋ค๊ณ ์๊ฐ๋๋ฉด ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ํด๋น ์ ์ฅ์์์ ๊ธฐ๋ฅ ์์ฒญ์ ์ฌ๋ ๊ฒ์ ๋๋ค. ํด๋น ๊ธฐ๋ฅ ์์ฒญ์ด ์๋ฝ๋์ง ์์ผ๋ฉด ๊ณ ์ ํ ๋ฒ์ ์ ๋น๋ํด์ผ ํฉ๋๋ค.
(๋ํ ๊ณต์ ubuntu:11
์ด๋ฏธ์ง๊ฐ ์์์ ์ ์ํ์ญ์์ค)
๋๋จธ์ง ์ํํธ์จ์ด ์ธ๊ณ์์ ๋จ์ผ ์์์ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ฃผ๋์ง ์์ต๋๋ค.
ํ์ํ ์๋ฏธ๋ฅผ ํฉ๋ฆฌ์ ์ผ๋ก ํํํ๊ธฐ์ ์ ํฉํฉ๋๋ค. ๋ง์ ์ฝ๋๋ก ์ด์ด์ง๋๋ค.
๋ฒ๊ทธ๋ก ๊ฐ์ฃผ๋๋ ์ค๋ณต. ์ด๊ฒ ์ ์ด๋ ๊ฒ ๋ณด์ฌ
๋์ปค์ ํ์ฉ๋ฉ๋๊น? ํ ๋ฒ์ ํ๋์ ์๋น์ค๋ฅผ ๊ตฌ์ถํ๋๋ผ๋
๊ตฌ์ฑ์ ์ด์ ์ฒด์ ์์ค์์ ํ์ํฉ๋๋ค. ์ด๊ธฐ๋ ค๋๊ฒ ์๋์ผ
์ฃฝ์ ๋ง์ด์ง๋ง ์ด ํ๊ณ๋ ์ฝ๊ฐ ๊ทน๋จ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๋ ๋์์ง๋
๋ชจ๋ฒ ์ฌ๋ก๋ก ํํ๋์์ต๋๊น? ์ด๋ฌํ ์๊ฒฉํจ์ ๊ฒฐ๊ณผ๋ก
๊ฒฐ์ , ๋๊ตฐ๊ฐ๋ ๊ตฌ์ฑ ๋๋ ๋ค์ค ์์
์ ์ํํ๋ ๋๊ตฌ๋ฅผ ๋ง๋ค ๊ฒ์
๋๋ค.
์์ํ๊ณ ๋จ์ผ ์์๊ณผ ๋ณต์ ๋ฅผ ํตํด ํํํฉ๋๋ค.
์ด๊ฒ์ ๋์ปค ์ธ๋ถ์ ์ ์ ํ๊ฒ ์ฌ์ฉํ๋ฉด ๋์ปค ์ปค๋ฎค๋ํฐ์ ๋์์ด ๋์ง ์์ต๋๋ค.
2015๋
12์ 9์ผ ์์์ผ, Sebastiaan van Stijn <
[email protected]>์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@rjurney https://github.com/rjurney ์, ๊ทธ๊ฒ์ด ์๋ํ๋ ๋ฐฉ์์ ๋๋ค. ~์
๊ทํ์ ์์์ ์ ์ฒด Dockerfile์ ubuntu:15.04 ๋ฅผ ์ผ๋์ ๋๊ณ ๊ฐ๋ฐ๋์์ต๋๋ค.
ubuntu:11 ์์ ํด๋น ํจํค์ง๋ฅผ ์ฌ์ฉํ ์
๊ทธ๋ค์? Dockerfile์์ ์์ ํด์ผ ํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
๋ค๋ฅธ ๋ฒ์ ์ Ubuntu์์ ์๋ํ๋๋ก ํฉ๋๋ค.๊ธฐ์กด ์ด๋ฏธ์ง์ ๊ธฐ๋ณธ ์ด๋ฏธ์ง "๊ต์ฒด"๋ ์๋ํ์ง ์์ต๋๋ค.
Docker๋ ๊ธฐ๋ณธ ์ด๋ฏธ์ง์
์์. ๋ฐ๋ผ์ ๋ค๋ฅธ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ฉด ์์ธกํ ์ ์๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ฒฐ๊ณผ(์: "ํ์ผ X ์ ๊ฑฐ", ์ฌ๊ธฐ์ "ํ์ผ X"๋ ์๋ ๋ฒ ์ด์ค์ ์์)
์ด๋ฏธ์ง์ด์ง๋ง ์ ํํ ๊ธฐ๋ณธ ์ด๋ฏธ์ง์๋ ์์). ๋ํ ํจํค์ง/๋ฐ์ด๋๋ฆฌ
๊ธฐ๋ณธ ์ด๋ฏธ์ง์ "์์" ๋น๋ํ๋ ์ด๋ฏธ์ง์์ ๋น๋๋๋ ํจํค์ง๋
_that_ ๋ฒ์ ์ ๊ฒฝ์ฐ ํด๋น ๋ฐ์ด๋๋ฆฌ๊ฐ ๋ค๋ฅธ ๋ฒ์ ๊ณผ ํธํ๋์ง ์์ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ ์ด๋ฏธ์ง.์ด๊ฒ์ ๋ชจ๋ ์ธก๋ฉด์ ๋ํด ๋์ํ์ง ์๋ ๋ชจ๋ ์ฌ๋์ ์๋ฏธํฉ๋๋ค.
๊ณต์ ์ด๋ฏธ์ง๋ ์ฝ๋๋ฅผ ๋ณต์ ํ์ง ์๊ณ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.์. ๊ณต์ ์ด๋ฏธ์ง๋ ํด๋น ์ด๋ฏธ์ง์ ๊ด๋ฆฌ์๊ฐ ์ง์ํฉ๋๋ค.
(์ด ๊ฒฝ์ฐ Selenium์ ์ ์ง ๊ด๋ฆฌ์์ ๋๋ค). ๋ณํ๋ฅผ ์๊ฐํ๋ค๋ฉด
์ด๋ฌํ ์ด๋ฏธ์ง์ ํ์ํ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋ค์์์ ๊ธฐ๋ฅ ์์ฒญ์ ์ฌ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ค์ ์ ์ฅ์. ํด๋น ๊ธฐ๋ฅ ์์ฒญ์ด ์๋ฝ๋์ง ์์ผ๋ฉด ๋ค์์ ์ํํด์ผ ํฉ๋๋ค.
์๋ง๋ ์์ ์ ๋ฒ์ ์ ๋น๋ํ์ญ์์ค.(๋ํ ๊ณต์ ubuntu:11 ์ด๋ฏธ์ง๊ฐ ์์์ ์ ์ํ์ญ์์ค)
โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/docker/issues/3378#issuecomment -163188299.
๋ฌ์ ์ ๋ twitter.com/rjurney russell. [email protected] relato.io
@rjurney ๋ค์ค ์์์ ๊ฒฐ๊ณผ, ์ฝ๋ ์ผ์ด์ค ๋ฐ ๋นํธํ์ฑ์ ๋ํด ์๊ฐํ์ง ์๊ณ ์ถ๊ฐํ๋ ๊ฒ๋ฟ๋ง ์๋๋ผ ๋งค์ฐ ๋ณต์กํฉ๋๋ค.
์ด๊ฒ์ ์๋นํ ๊ฐ๋ฐฉํ ์ ์๋ ํด๋ผ์ด์ธํธ ๊ธฐ๋ฐ ๋น๋๋ฅผ ํ์ฑํํ๋ ๊ฒ์ ํฌํจํ์ฌ ๋น๋์์ ์ํ ์ค์ธ ๋ง์ ์์ ์ด ์์ต๋๋ค.
๋จ์ผ ์์ Dockerfiles๋ (๊ด๋ฒ์ํ) ๋๋ถ๋ถ์ ์ฌ์ฉ ์ฌ๋ก์์ ์๋ํ๋ฏ๋ก ์ด๋ฅผ ํฅ์์ํค๊ธฐ ์ํด ์๋๋ฅผ ํ์๊ฐ ์์ต๋๋ค. ์ ํํ๊ณ ์๋์ ์ผ๋ก ์ํํด์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์์ ์๊ฒฌ์ ๋ฐ๋ฅด๋ฉด ์ค์ ๋ก ๋ค์ค ์์์ด ํ์ํ์ง ์์ผ๋ฉฐ ๊ธฐ์กด ์ฝ๋๋ฅผ ๋ณต์ ํ์ง ์๊ณ Dockerfile์ด ์คํ๋๋ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ผ ๋ฟ์
๋๋ค.
๊ทธ๊ฒ์ ๋ด ํ์๋ฅผ ์ถฉ์กฑ์ํฌ ๊ฒ์
๋๋ค. ๋ค. ์ผ๋ถ ์์ฑ์ ์์ ํ ์ ์์
dockerfile ์ฒด์ธ.
์ข์, ๋น์ ์ด ์ด๊ฒ์ ๊ผญ๋๊ธฐ์ ์๋ค๋ ์์์ ๋ค์ผ๋ ๊ธฐ์ฉ๋๋ค. ๊ธฐ๋ค๋ ค ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค :)
2015๋ 12์ 9์ผ ์์์ผ ์ค์ 9์ 59๋ถ์ Brian Goff [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@rjurney https://github.com/rjurney ๋ค์ค ์์๋
๋งค์ฐ ๋ณต์กํ๋ฉฐ ์๋ฌด ์๊ฐ ์์ด ์ถ๊ฐํ๋ ๊ฒ์ด ์๋๋๋ค.
๊ฒฐ๊ณผ, ์ฝ๋ ์ผ์ด์ค ๋ฐ ๋นํธํ์ฑ์ ์ํด.12749 https://github.com/docker/docker/pull/12749 ๊ฐ ์ต์ ์ด์์ต๋๋ค.
์ด๋ฌํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ค๋ ์๋ -- ๊ฒฐ๊ตญ ๊ฑฐ๋ถ๋จ
๋จผ์ ํด์ผ ํ ๋ค๋ฅธ ์์ .
ํ์ฑํ๋ฅผ ํฌํจํ์ฌ ๋น๋์์ ์ํ ์ค์ธ ๋ง์ ์์ ์ด ์์ต๋๋ค.
์ด๊ฒ์ ๊ฝค ๋ง์ด ์ด ์ ์๋ ํด๋ผ์ด์ธํธ ์ฃผ๋ ๋น๋.๋จ์ผ ์์ Dockerfile์ ๋๋ถ๋ถ์ ์ฌ์ฉ ์ฌ๋ก์์ ์๋ํฉ๋๋ค.
๋ฐ๋ผ์ ์ด๊ฒ์ ํฅ์์ํค๊ธฐ ์ํด ์๋๋ฅผ ํ์๊ฐ ์์ต๋๋ค. ์ฌ๋ฐ๋ฅด๊ฒ ์ํํด์ผ ํ๊ณ
๊ณ ์๋ก.
๊ทธ๋ฆฌ๊ณ ์์ ์๊ฒฌ์ ๋ฐํ์ผ๋ก ์ค์ ๋ก ์ฌ๋ฌ ๋ฒ ํ์ํ์ง ์๋ค๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค.
์์, Dockerfile์ด ์คํ๋๋ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ
๊ธฐ์กด ์ฝ๋๋ฅผ ๋ณต์ ํ์ง ์๊ณ ๋ฐ๋ํฉ๋๋ค.โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/docker/issues/3378#issuecomment -163340165.
๋ฌ์ ์ ๋ twitter.com/rjurney russell. [email protected] relato.io
@rjurney ์ ๋ณด๋ ์ด๋์ ์ป
๋ด๊ฐ ๋ณด๊ธฐ์ docker์ ํ์ํ ๊ฒ์ ๋ค์ค ์์์ ๊ฐ๋ ์ด ์๋๋ผ ํฌํจ ๋๋ ์ธ๋ถ ์ข ์์ฑ์ ๊ฐ๋ ์ ๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐํ์์ ์ปจํ ์ด๋๋ฅผ ๋ง์ดํธํ ์ ์์ต๋๋ค. ์ง์ ์ผ๋ก ํ์ํ ๊ฒ์ ์ด๋ฏธ์ง์ ๋๋ฑํ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์๋ฅผ ๋ค์ด Fedora 22๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์๋ ์ด๋ฏธ์ง๊ฐ ์๊ณ Oracle ์ด๋ฏธ์ง๋ฅผ ํ์ฌํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์ด๊ฒ์ ์ปจํ ์ด๋๋ฅผ ์คํํ ๋ ๋งค์ฐ ์ฑ๊ณต์ ์ผ๋ก ์ํํ ์ ์์ง๋ง ์ด๋ฏธ์ง๋ก ์ง์ ํ๋ ๊ตฌ๋ฌธ์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฐํ์๊น์ง docker๊ฐ ์ด๋ฌํ ์ข ์์ฑ์ ๋ํด ์๊ฑฐ๋ ์ด์จ๋ ๊ด๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๋ค์ค ์์ ๋ฐ ๊ตฌ์ฑ์ ๋ํด ์ธ๊ธํ์ต๋๋ค.
์ปดํฌ์ง์
์ ํ์คํ ์ด๋ฅผ ์ํํ๋ ๋ฐ ์ ํธ๋๋ ๋ฐฉ๋ฒ์
๋๋ค.
๋๋ ๋น์ ์ด ๋งํ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ๋์ํ๋ฏ๋ก +1.
2015๋
12์ 9์ผ ์์์ผ, Bill C Riemers [email protected]
์ผ๋ค:
@rjurney https://github.com/rjurney ์ ๋ณด๋ ์ด๋์ ์ป๋์ ?
๋ด๊ฐ ์๋ ํ Java์๋ ๋ค์ค ์์์ด ์์๊ณ ์์ผ๋ก๋ ์์ ๊ฒ์ ๋๋ค.
๋ง์ ์ธ์ด์์๋ ๋ง์ฐฌ๊ฐ์ง๋ผ๊ณ ํ์ ํฉ๋๋ค. ๋ง์ ์ฌ๋๋ค์ด ์ฌ๋ฌ ๊ฐ์ง๋ฅผ ๊ณ ๋ คํฉ๋๋ค.
์์์ด ๊ฑฐ์ ๋ถ๊ฐ๋ฅํ ์ ์์ผ๋ฏ๋ก ๋งค์ฐ ์ ํดํฉ๋๋ค.
์์ธก ๊ฐ๋ฅํ ์ฝ๋ ๋์ปค ์ปจํ ์ด๋์ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.๋ด๊ฐ ๋ณผ ๋ docker์ ํ์ํ ๊ฒ์ ๋ค์ค ๊ฐ๋ ์ด ์๋๋๋ค.
์์์ด์ง๋ง ํฌํจ ๋๋ ์ธ๋ถ ์ข ์์ฑ์ ๊ฐ๋ ์ ๋๋ค. ์
๋ฐํ์์ ์ปจํ ์ด๋๋ฅผ ํ์ฌํ ์ ์์ต๋๋ค. ์ง์ ์ผ๋ก ํ์ํ ๊ฒ์
์ด๋ฏธ์ง์ ๋๋ฑํฉ๋๋ค. ์๋ฅผ ๋ค์ด
Fedora 22 ๊ธฐ๋ฐ์ผ๋ก ์ ์๋์์ผ๋ฉฐ ์ถ๊ฐํ Oracle ์ด๋ฏธ์ง๋ฅผ ๋ง์ดํธํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ฅ.์ด๊ฒ์ ์ปจํ ์ด๋๋ฅผ ์คํํ ๋ ๋งค์ฐ ์ฑ๊ณต์ ์ผ๋ก ์ํํ ์ ์์ง๋ง
์ด๋ฏธ์ง๋ก ์ง์ ํ๋ ๊ตฌ๋ฌธ์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฐํ์๊น์ง
docker๊ฐ ์ด๋ฌํ ์ข ์์ฑ์ ๋ํด ์๊ฑฐ๋ ์ด์จ๋ ๊ด๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ
๋.โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/docker/issues/3378#issuecomment -163351035.
๋ฌ์ ์ ๋ twitter.com/rjurney russell. [email protected] relato.io
์ด์ฏค๋๋ฉด ์ ๋ค๋ฌผ๊ฒ ์ง๋ง, ์ค์๋ก ์ด ํฐ์ผ ๋์ ์ ์์ ์ธ๊ธํ ํ ๋ฆฌํ์คํธ์ ์ด ์์ค์ ๋ฃ์์ต๋๋ค. ๊ทธ๋์ ์ฌ๊ธฐ์ ์ฌ๋ฆฝ๋๋ค.
๋๊ตฐ๊ฐ ์ด๊ฒ์ ๊ตฌ์ถํ ๊ฒ์ ๋๋ค. INCLUDE๋ฅผ ์ถ๊ฐํ๋ pull์ ์๋ฝํ์ง ์์ผ๋ฉด ์ด ๊ธฐ๋ฅ์ด ์ง์ฐ๋๊ณ ๊ตฌ์ฒดํ๋ฉ๋๋ค. ์ด๊ฒ์ ์ฌ๊ธฐ์์ ๊ฒฐ์ ์ ๊ธฐ์ด๊ฐ ๋์ด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ๋์ปค ๋ด๋ถ์ ์์ด์ผ ํฉ๋๊น ์๋๋ฉด ๋์ปค ์ธ๋ถ์ ์์ด์ผ ํฉ๋๊น?
ํ ๊ฐ์ง ์๊ฐ ๋ ์ค๋ฆ ๋๋ค. Apache Pig์์ ํ์ ๋ฃจํ์ ๋ํ ๋ง์ ์์ฒญ์๋ ๋ถ๊ตฌํ๊ณ ๋ฃจํ๋ฅผ ํฌํจํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. Pig๊ฐ DAG ๋ฐ์ดํฐ ํ๋ฆ์ ์ ํฉํด์ผ ํ๊ณ ๊ทธ๊ฒ์ด ์ ๋ถ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋์ , pig ์คํฌ๋ฆฝํธ๋ฅผ ์คํฌ๋ฆฝํ ํ๊ธฐ ์ํด ํตํฉ์ด ์์ฑ๋์์ผ๋ฏ๋ก ๋ชจ๋ JVM ์ธ์ด์์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐ๋ณตํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์์์ ์ธ ๊ฒฐ์ ์ด์๊ณ ๋์์ ์ถ๊ตฌํ๋ค๋ ์ ์ ์ ์ํ์ญ์์ค. ์ด๊ฒ์ด ๋ด๊ฐ ์๊ฐํ๋ ๋ชจ๋ธ ํ๋ก์ธ์ค์ ๋๋ค.
๋ ๋ค๋ฅธ ๋ผ์ง์ ์๊ฐ ๋ ์ค๋ฆ ๋๋ค... ๋ผ์ง ๋งคํฌ๋ก. ๊ทธ๋ค์ ์กด์ฌํ์ง ์์๊ณ ๋๊ตฐ๊ฐ(์ข์, ๋)๊ฐ ๊ทธ๋ค์ ๋ํ ๋ผ์ง ํ๋ก์ ํธ๊ฐ ์ผ๋ง๋ ๋ฏฟ์ ์ ์์ ์ ๋๋ก ์ถ์ ํ๊ณ ์ธ๋ถ ๋๊ตฌ์์ Pig๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ฐฉ๋ฒ์ด ์๋ค๋ ์ค๋ ๋๋ฅผ ์์ํ๊ธฐ ์ ๊น์ง '๋ผ์ง'์์ต๋๋ค. ํํ์ง ์์. ๋ง์ ์ฌ๋๋ค์ด ์๋ฆฌ์ณค๊ณ Pig ํ์ ๋งคํฌ๋ก๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ๋งคํฌ๋ก๋ ๊นจ๋ํ ๋ผ์ง๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๊ณ ์ปค๋ฎค๋ํฐ๋ ํํ์ ๋ฐ์์ต๋๋ค.
๋๋ ๋น์ ์ด ๊ฒฐ์ ์ ์ ๋ฉด์ผ๋ก ๋ค๋ฃจ๊ณ ๊ทธ๊ฒ์ ๋ํด ๋ ผ์ํ ๊ฒ์ ์ ์ํฉ๋๋ค. ์ด๊ฒ์ ์์ง ์ฌ๊ธฐ์์ ๋ฐ์ํ์ง ์์์ผ๋ฉฐ, ๊ฒ์ ๊ฐ๋ฅ์ฑ์ ์ํด ์๋ง๋ ์ฌ๊ธฐ์ ์ํ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ์กด์ฌํ ๊ฒ์ ๋๋ค. ๋๋ฉ์ธ ํน์ ์ธ์ด๋ก ์คํฌ๋ฆฝํธ๋ฅผ ๋ณต์ ํ๋ ๊ฒ์ ๋์ฐํฉ๋๋ค. ๊ตญ๋ฏผ์ด ์๊ตฌํ ๊ฒ์ ๋๋ค. ์ด ๊ธฐ๋ฅ์ Docker ๋ด๋ถ์ ์์ต๋๊น ์๋๋ฉด Docker ์ธ๋ถ์ ์์ต๋๊น? ๋์ปค ์ธ๋ถ์์ ์ด ๋์์ ์ด๋ป๊ฒ ์ฉ์ดํ๊ฒ ํ ๊ฒ์ธ๊ฐ?
์ฃ์กํฉ๋๋ค. ๋ฉ์ผ๋ง ๋ชฉ๋ก์ ๋ง์ ์ปจํ ์คํธ๊ฐ ๋๋ฝ๋์ด ์์ ์ ์์ง๋ง ์๋ก์ด Docker ์ฌ์ฉ์๋ก์... ๊ธฐ์กด ๋ ์ํผ์์ dockerfile์ ๊ตฌ์ฑํ ์ ์๋ ๊ธฐ๋ฅ ์์ด Docker๋ก ๋ง์ ์์ ์ ์ํํ๋ ๊ฒ์ด ๋งค์ฐ ์ฃผ์ ํฉ๋๋ค. ๋๋ ๋ผ์ง์ ํจ๊ป ์ด ๊ธธ์ ๊ฐ๊ณ , ๊ฑฐ์ ์ฃฝ์ ๋ปํ๋ค. ๋ง์ ๋ถ๋ค์ด ์ด๋ ๊ฒ ๋๋ผ์ค ๊ฑฐ๋ผ ์๊ฐํฉ๋๋ค.
ํน์๋ผ๋ ์ ๊ฒฝ์ฐ์๋ ๋ถ์ด ๊ณ์๋ค๋ฉด...
Pig์ ๋ฃจํ ๋ฐ ๋งคํฌ๋ก์ ๋ํ ๋ฐ์ฏค ์ฑํ๋ ํ๋ ์ ํ
์ด์
: http://wiki.apache.org/pig/TuringCompletePig
๋ผ์ง ๋งคํฌ๋ก JIRA: https://issues.apache.org/jira/browse/PIG-1793
Pig JIRA์ ๋ํ API ์ธํฐํ์ด์ค: https://issues.apache.org/jira/browse/PIG-1333
Apache Hive๋ฅผ ์กด์คํ๊ธฐ ์ํด ์์ ํ ๊ฑฐ๋ถ๋ ๊ฒ... Pig์ SQL ์ถ๊ฐ: https://issues.apache.org/jira/browse/PIG-824
๋ง์ง๋ง์ผ๋ก ์ด ๋ณ๊ฒฝ์ ์ฝ๊ฒ ํ ์ ์๋ ์์ด๋์ด๊ฐ ์์์ต๋๋ค... INCLUDE์ ํ์ผ์ ์์ํ ์ ์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์ฆ, ๋งค์ฐ ๋จ์ํ๊ฒ ์ ์งํจ์ผ๋ก์จ ๋ฐ๋๋ฅผ ํผํ ์ ์์ต๋๋ค. ๋์ค์ ๋ ๋ง์ ๊ฒ์ ์๊ฒ ๋๋ฉด ๋๋จธ์ง๋ฅผ ์ฒ๋ฆฌํ์ญ์์ค. ์๋ฅผ ๋ค์ด ์ฌ์ ์๊ตฌ ์ฌํญ ๋ฐ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ค์นํ๊ณ Ubuntu์์ MySQL์ฉ ๋ฐ๋ชฌ์ ์ค์ ํ๋ ๊ฐ๋จํ Dockerfile์ด ์์ ์ ์์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ Ubuntu ๋ฐ MySQL ๋ฒ์ ๋ณ๋ก ๋ฒ์ ์ ์ง์ ํ ์ ์์ต๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ๋๋ ์ด๋ฌํ ๊ฐ๋จํ INCLUDE๋ฅผ ์ํํ๋ ์ ํธ๋ฆฌํฐ๋ฅผ ํดํนํ๊ณ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ด dockerfile์ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑํ ๊ฒ์ ๋๋ค. ๋ด ์ฝ๋๋ฅผ ์ฃผ๋ฌธํ๊ณ ์ฌ์ฌ์ฉํ ๋๊น์ง ๊ธฐ๋ค๋ฆด ์ ์์ต๋๋ค.
INCLUDE ์์ด๋์ด์ ๋ํด +1์ ๋๋ค. ์์์ ๊ธ์งํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ๋ ๋ฟ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง ์ด์ ์์๋ฐ๋ ์ฃผ๋ฅ ์ด๋ฏธ์ง๋ ์์ ํ ์ ์์ง๋ง ํฌํจํ๋ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ ์์ ํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๊ธฐ์กด ๊ธฐ๋ณธ ์ด๋ฏธ์ง ํญ๋ชฉ์ ์์์ํฌ ์ ์๋ ์ด์ ์ฒด์ ํญ๋ชฉ์ ์ ๊ณตํ์ง ์๋๋ค๋ ์ ์์ ์ด๋ฏธ์ง๋ฅผ "ํฌํจ ๊ฐ๋ฅ"์ผ๋ก ์ง์ ํ ์ ์๋ค๋ฉด ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ด ํ๋๊ทธ๋ ๋์ปค ๋น๋ ํ๋ก์ธ์ค์์ ์ค์ ํด์ผ ํ๋ฉฐ ์ ์ ํ๊ฒ ํ๋๊ทธ๊ฐ ์ง์ ๋์ง ์์ ์ด๋ฏธ์ง๊ฐ ํฌํจ๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด ๋ง์ ๊ทธ๊ฒ์ ์ง๋ฉดํ์๋ ๊ฒ์ ๋๋ค. Dockerfiles๋ฅผ ๊ฐ์ง๊ณ ๋๊ณ ์๋ค๋ฉด ์๋ง๋ ์ฒ์์ผ๋ก ๊ทธ์ ์ปดํจํฐ๋ฅผ ๋ณด๋ ์ฌ๋์ด ์๋ ๊ฒ์ด๋ฏ๋ก docker์ ์ต์ข ์ฌ์ฉ์๊ฐ ์ด๋ฆฌ์์ ์ผ์ ํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด์ง๋ง ์กฐ๊ธ ๋ ์์ด์ผ ํฉ๋๋ค. ์ค์ ๋ก ๊ทธ๋ฐ ์ด๋ฏธ์ง๋ฅผ ๋ง๋๋ ์ฌ๋๋ค์ ์ํ ์์ . ์ง์ฌ์ผ๋ก, ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ ํํ ์ ์๊ณ ๋ด ์ฑ์ ํ๋ก๋น์ ๋ํ๊ธฐ ์ํด ๊ธฐ๋ณธ ์ด๋ฏธ์ง์ ์ํ๋ ๋ชจ๋ ํญ๋ชฉ์ ํฌํจํ ์ ์๋ค๋ ๊ฒ์ ์ ๋ง ๋๋จํ ๊ฒ์ ๋๋ค.
ํฌํจ์ ๋ํด +1. nginx์ ssh ์ด๋ฏธ์ง๋ฅผ ํ๋๋ก ๊ฒฐํฉํ๋ฉด ๋ฉ๋๋ค. ์ ์ด๊ฒ์ด ๊ทธ๋ ๊ฒ ์ด๋ ค์์ผ ํฉ๋๊น?
์ด๊ฒ์ด ํ์ํ์ง ์๋ค๋ ์๊ฐ์ ์์งํ ๋งํด์ ํผ๋ ์ค๋ฝ์ต๋๋ค.
์์งํ์ง ๋ชปํ. ์์ฑ๋ ๊ฒฝ์ฐ ๋๋ถ๋ถ์ ์ฌ์ฉ์๊ฐ ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. "์ ssh ์ถ๊ฐ
์ฐ๋ถํฌ" ๋ฐ "์ฐ๋ถํฌ์ nginx ์ถ๊ฐ"๋ ๋ชจ๋ ์ฌ๋์ด ์ํํ๋ ๋งค์ฐ ์ผ๋ฐ์ ์ธ ์์
์
๋๋ค.
๋ฐ๋ณตํ ํ์๊ฐ ์์ต๋๋ค. docker HQ๊ฐ ์ค์ ๋ก ์ด๊ฒ์ ๋ํด ๋งํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
"๋น์ฐํ ํ์ํ์ง๋ง ๋๋ฌด ์ถํด์ง ๊ฒ ๊ฐ์์ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ฅํฉ๋๋ค." ๊ทธ๊ฒ
์ด๊ฒ์ ๋ํด ์ค์ ๋ก ์ ์งํ๊ณ ๊ณต๊ฐํ ์ ์๋ค๋ฉด ๋ ์ข์ ๊ฒ์
๋๋ค.
๋ด๊ฐ ๋ฏธ์ณค๋ค๋ฉด ์ฃ์กํฉ๋๋ค.
2016๋ 1์ 23์ผ ํ ์์ผ ์คํ 6์ 22๋ถ์ Vazy [email protected]์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
ํฌํจ์ ๋ํด +1. nginx์ ssh ์ด๋ฏธ์ง๋ฅผ ํ๋๋ก ๊ฒฐํฉํ๋ฉด ๋ฉ๋๋ค. ์
์ด๊ฒ ๊ทธ๋ ๊ฒ ์ด๋ ค์์ผ ํฉ๋๊น?โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/docker/issues/3378#issuecomment -174243875.
๋ฌ์ ์ ๋ twitter.com/rjurney russell. [email protected] relato.io
@rjurney ๋น๋ ์คํ์์์ ๊ธฐ๋ค๋ฆฌ์ ; ์ด๋ ๊ฒ ํ๋ฉด ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ด ๋ ๊ฐ์ง ์ด์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค(๋ฐ๋ผ์ ์ด๋ฅผ ์ํํ๋ ์ฌ์ฉ์ ์ ์ ๋น๋๊ฐ ๋ํ๋ ์ ์์). ๋์ปค ์ ์ง ๊ด๋ฆฌ์(๋์ปค์์ ์๋ํ๊ฑฐ๋ ์๋ํ์ง ์์)๊ฐ ์ด์ ๋ํด ์ฑ๊ฐ์ ์ด์ ์ค ํ๋๋ ์ ์ฐ์ฑ๊ณผ ๋จ์์ฑ์ ์ถ๊ฐํ๋ ค๋ ๊ณณ์ ๋ณต์ก์ฑ์ด ์ถ๊ฐ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋น๋๋ฅผ ์ถ์ถํจ์ผ๋ก์จ ์ฐ๋ฆฌ๋ (์ด๋ฏธ์ง ๋น๋์ ์ด๋ฏธ์ง ์คํ ์ฌ์ด) ๋ ๋์ ๋ฌธ์ ๋ถ๋ฆฌ๋ฅผ ๊ฐ๊ฒ ๋ ๊ฒ์ด๊ณ ๋ง์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์ปค์คํ ๋น๋์์ ๋ ์์ ๋กญ๊ฒ ๊ตฌํ๋ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์ ๋ค์, ๋น์ ์ ์ด๊ฒ์ ํ๋ก์ ํธ์์ ๋ฐ์ด๋ด๊ณ ์์ต๋๊น? ์ปค์คํ
์ฌ์ด๋... ์๋
๊ธฐ๋ณธ, ํฌํจ๋ ๋ฐฉ๋ฒ. ์ฌ์ค, Include๋ ๋ค์๊ณผ ๊ฐ์ ๋จ์ํ ์๊ตฌ ์ฌํญ์
๋๋ค.
๋๋ถ๋ถ์ ๋ชจ๋ ์ฌ๋์ด ๊ฐ์ง๊ณ ์์ต๋๋ค. ์์ ์ ๋ฐ๋ณตํ๋ ๊ฒ์ ๋ณต์ก์ฑ์
๋๋ค. ์์๋ง์ด
๋ณต์ก์ฑ. ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ๋ชจ๋ ์ฌ๋์ด ํ์๋ก ํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค.
๊ฐ๋ฅํ.
2016๋
1์ 24์ผ ์ผ์์ผ Vincent Demeester [email protected]
์ผ๋ค:
@rjurney https://github.com/rjurney ๋น๋ ์คํ์์์ ๊ธฐ๋ค๋ฆฌ์ ;
์ด๋ ๊ฒ ํ๋ฉด ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ด ๋ ๊ฐ์ง ์ด์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค(๋ฐ๋ผ์
์ด๋ฅผ ์ํํ๋ ์ฌ์ฉ์ ์ ์ ๋น๋๊ฐ ๋ํ๋ ์ ์์). ์ด์ ์ค ํ๋๋ ๋์ปค
์ ์ง ๊ด๋ฆฌ์(Docker์์ ์๋ํ๊ฑฐ๋ ์๋ํ์ง ์์)๋ ์ด์ ๋ํด ๊น๋ค๋กญ์ต๋๋ค.
์ ์ฐ์ฑ์ ์ถ๊ฐํ๋ ค๋ ๊ฒฝ์ฐ ๋ณต์ก์ฑ์ด ์ถ๊ฐ๋๊ณ
๊ฐ๋จ. ๋น๋๋ฅผ ์ถ์ถํ๋ฉด
(์ด๋ฏธ์ง ๋น๋์ ์คํ ์ฌ์ด) ๋ฐ ๋ง์ ์ฌ์ฉ ์ฌ๋ก
์ปค์คํ ๋น๋์์ ๋ ์์ ๋กญ๊ฒ ๊ตฌํ๋ฉ๋๋ค.โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/docker/issues/3378#issuecomment -174423973.
๋ฌ์ ์ ๋ twitter.com/rjurney russell. [email protected] relato.io
+1, ์ด๋ฏธ์ง๋ฅผ ๊ฒฐํฉํ๋ฉด ๋งค์ฐ ์ ์ฉํฉ๋๋ค. (์ ์ด ๊ธ์งํ) C++ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์์ํด ๋ณด์ญ์์ค. ์ ๋ boost๋ฅผ ์ฌ์ฉํ์ฌ ์์์ ๋ง๋ค๊ณ , Qt๋ฅผ ์ฌ์ฉํ์ฌ ์์ํ๊ณ , ๋ชจ๋ ๋์ผํ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฑ์ ์์ ์ ์ํํฉ๋๋ค. ์ด์ boost์ Qt๋ฅผ ๋ชจ๋ ์ฌ์ฉํ์ฌ ์ฑ์ ๋น๋ํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ ๊ฐ์ง์ presto๋ฅผ ๊ฒฐํฉํ๊ธฐ๋ง ํ๋ฉด ๊ฐ๋ฐ ํ๊ฒฝ์ด ์ค๋น๋ฉ๋๋ค. ์ด๊ฒ์ ๋งค์ฐ ์ ์ฉํ ๊ฒ์ ๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ์ด ๋ฌธ์ ๋ ๋ค๋ฃจ์ง ์๋ ๊ฒ์ด ๋๋ฌด ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฆ, ๊ตฌํ ์์น์ ๊ด๊ณ์์ด ๋ฌธ์ ์ ๋ฒ์๊ฐ ๋ฌด์์ธ์ง ์ ์ดํดํด์ผ ํฉ๋๋ค.
๋ฐ๋ผ์ ๋ณํฉ์ผ๋ก ์ธํด ์ด๋ฌํ ๋ฌธ์ ๊ฐ ๋ํ๋ฉ๋๋ค.
์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ ๊ฐ๋จํ ๋๋ต์ ํ์ง ์๋ ๊ฒ์ ๋๋ค. ๋์๊ฒ ๊ทธ๊ฒ์ ๋ณต์กํ๊ณ ์ ์ฌ์ ์ผ๋ก ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ๋ฉฐ ํด๊ฒฐํ๋ ค๋ฉด ๋๊ตฌ ๋ชจ์์ด ํ์ํ์ง๋ง ์ฌ์ ํ ๋๋ฌด ๋ง์ ์ ์ผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๊ฒ์ด ์ถ๊ฐ๋๋ฉด ๋ณํฉ ์ถฉ๋์ด ์คํจํด์ผ ํฉ๋๋ค. ๋์ค์ ๋ค์ ๋ณผ ์ ์์ ๊ฒ ๊ฐ์ง๋ง, ๊ทธ๊ฒ ๊ฐ์น๋ณด๋ค ๋ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๋ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ ์ผ๋ถ ๊ธฐ๋ณธ ๋ ์ด์ด๋ฅผ ๊ณต์ ํ๋ ์ ์ฝ ์กฐ๊ฑด์ ์ถ๊ฐํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ด์ ๋ฌธ์ ๋ ๋ช ๊ฐ๋ก ์ถฉ๋ถํ๋๋ ๊ฒ์
๋๋ค. ์์ํ ๋ ์ ๋ต์ ๋ณํฉ๋๋ ๋ ๊ฐ์ ์ด๋ฏธ์ง๊ฐ ๋์ผํ FROM
์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฌ๊ธฐ์ ๋ ๋ง์ ์ ์ฝ ์กฐ๊ฑด์ด ํ์ํ ์ ์์ง๋ง ์ด๋ฌํ ๊ฒฝ์ฐ๊ฐ ๋จ์ํ ํ์ฉํ์ง ์์์ผ๋ก์จ ํด๊ฒฐ๋ ๋ฌธ์ 1์ ์ํ์ง ์์ ๊ฒ์ธ์ง๋ ๋ถ๋ช
ํ์ง ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋ด๊ฐ ๋์น ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์์ต๋๊น?
๋ณํฉ ์๋๊ฐ ์์ด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค ... ๊ทธ๋ฐ ์ผ์ด ์ผ์ด๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค
๋ณด๋ค ํ์ค์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ํ
ํ๋ฆฟ ์ ํ์ ์๋ฃจ์
์ผ ์ ์์ต๋๋ค. ์ฆ, Dockerfile _fragment_( FROM
์ ์ด ์๊ณ ๋ช
๋ น ๋ชฉ๋ก๋ง ์์)๋ฅผ ์ค์ Dockerfile์ INCLUDE
ํ์ฉํ๋ ๊ฒ์
๋๋ค. ํธํ ๊ฐ๋ฅํ ๊ธฐ๋ณธ ์ด๋ฏธ์ง Dockerfile์ ๋ํด ์กฐ๊ฐ์ ๊ณต์ , ์ฌ์ฌ์ฉ ๋ฐ ํฌํจํ ์ ์์ต๋๋ค.
์ ๋ Docker๋ฅผ ์ฒ์ ์ ํ๊ณ ๊ฒธ์ํ๊ฒ ๋ฐฐ์ฐ๊ณ ์์ต๋๋ค. ํ์ง๋ง Docker์ ์์ ์ ๋งค์ฐ ์์ _์ฌ์ฌ์ฉ ๊ฐ๋ฅํ_ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋น๋ํ์ฌ ๋์ค์ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ์น ์์ฉ ํ๋ก๊ทธ๋จ์์์ ๊ฐ์ด ํฐ ์ต์ข
์์ฉ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ฒฐํฉํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด INCLUDE
์ ๊ฐ์ IMHO ๋ฌธ์ ํ์์
๋๋ค.
@jmcejuela ๋ง์ ๊ฒฝ์ฐ "์ฌ์ฌ์ฉ"์ ํน์ ์๋น์ค ์ ์ฉ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ณ ํด๋น ์ด๋ฏธ์ง/์ปจํ ์ด๋๋ฅผ ๊ฒฐํฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋ ๊ฒ์ ๋๋ค. ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ณ ๊ตฌ์ฑ ์์๋ ์ฌ์ฌ์ฉํ ์ ์์ง๋ง(์ปจํ ์ด๋์ ๊ตฌ์ฑ๋ง ๋ค๋ฅผ ์ ์์) ์ด๋ฌํ ๊ตฌ์ฑ ์์๋ฅผ ๊ฒฐํฉํ๋ ๋ฐฉ๋ฒ์ด ์ค์ ์์ฉ ํ๋ก๊ทธ๋จ์ ํ์ฑํฉ๋๋ค.
@thaJeztah ์ดํดํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
ํ์ง๋ง ์ด์ ์ ๊ฒ์ํ ์ฌ๋๋ค์ฒ๋ผ ๊ตฌ์ฒด์ ์ผ๋ก ๋ง๋ค๋ฉด ์ค์นผ๋ผ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ๋ ์น ์ฑ์ ๋น๋ํ๊ณ (image A
), nginx๋ก ์น ์๋ฒ๋ฅผ ๋ง๋ ๋ค์(image B
) ssh๊ฐ ์์ต๋๋ค. (image C
) ๋ฐ ์ถ๊ฐ Python ์์ฉ ํ๋ก๊ทธ๋จ์ด ํ์ํฉ๋๋ค(image D
). ๊ฐ๊ฐ์ ๋ํด 4๊ฐ์ Dockerfile์ ์์ฑํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ค์ Docker์ ๊ฒฐํฉํ์ฌ ์ต์ข
์น ์ฑ์ ์์ฑํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น(image E
?)
์ด ์์ ์ ์ํํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค. ๋๋ ๋ค์ค ์์, ํฌํจ ์ฌ๋ถ, ์์ฑ ์ฌ๋ถ ๋ฑ์ ๋ํ ์ฒ ํ ๋ ผ์์ ๊ด์ฌ์ด ์์ต๋๋ค. ๋ฌผ๋ก ์ด์ ์ ์ ์๋ ๋๋ก ๋ณต์ฌ ๋ฐ ๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ํ๊ณ ์ถ์ง๋ ์์ต๋๋ค.
์๊ฐ ๋ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋๋ ์ฌ์ ํ ๋์ปค๋ฅผ ๋ฐฐ์ฐ๊ณ ์๋ค.
@jmcejuela _images_ ๋ฅผ ๊ฒฐํฉํ์ง ์๊ณ ๋ณ๋์ ์ปจํ ์ด๋๋ก ์คํํ๊ณ ํ๋ ฅํ์ฌ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋๋ก ํฉ๋๋ค. "์คํ"์ ์ ์ํ ์ ์๋ Docker Compose๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ๋ ๊ฒ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด https://github.com/docker/example-voting-app/blob/master/docker-compose.yml (๋ฐ README, https://github.com/docker/example-voting-app/ ๋ธ๋กญ/๋ง์คํฐ/README.md)
"ssh" ๋ถ๋ถ์ ๊ฒฝ์ฐ ์ค์ ๋ก ์ฌ์ฉํ๋ ค๋ ์ฉ๋์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ์ ๋ฐ์ ์ผ๋ก ์ปจํ ์ด๋๋ "๋ถ๋ณ"์ผ๋ก ๊ฐ์ฃผ๋๋ฏ๋ก ์ปจํ ์ด๋๋ก sshํ์ฌ ์์ ํ์ง ์๊ณ ์ ์ปจํ ์ด๋๋ฅผ ์คํํ์ฌ ์ด์ ์ปจํ ์ด๋๋ฅผ ๊ต์ฒดํฉ๋๋ค. ์ปจํ ์ด๋์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๋์ด ์ง์๋์ด์ผ ํ๋ ๋ฐ์ดํฐ๋ ์ ์ปจํ ์ด๋๊ฐ ํด๋น ํ์ผ์ ์ฌ์ฉํ ์ ์๋๋ก ๋ณผ๋ฅจ์ ์ ์ฅ๋ฉ๋๋ค.
@jmcejuela Docker ๋น๋๋ STDIN์์ Dockerfile ๋ด์ฉ์ ํ์ฉํ๋ฏ๋ก "์๋์ ์ผ๋ก" ์ฝ๊ฒ ์์ฑํ ์ ์์ต๋๊น? ์ปจํ
์คํธ๊ฐ ์ ๋ฌ๋์ด์ผ ํ๋ ๊ฒฝ์ฐ ๋ชจ๋ ๊ฒ์ด tarred๋๊ณ docker build
๊ณต๊ธ๋์ด์ผ ํฉ๋๋ค. ๋ด ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด ์ด๊ฒ์ ๊ตฌ์ฑ์ ์ป๋ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์
๋๋ค.
๋๋ ๊ฐ๋ฐ (์ ํจ๊ป ์ฐ์ฃผ) ์์ ๊ฐ๋
๋จ์ด์ ธ ๋น๋ ์ ๊ทผ ๋ฐฉ์์. nodejs ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฉ๋ชจ๋ฆฌ์์ TAR ํ์ผ( Dockerfile
๋ฐ ์ถ๊ฐ๋ ํ์ผ ํฌํจ)์ ์ค๋นํ๊ณ STDOUT์ ๋คํํฉ๋๋ค. STDOUT์ docker build
๋ก ํ์ดํ๋ฉ๋๋ค. ๊ตฌ์ฑ ๊ฐ๋ฅํ ๋ถํ์ NPM ๋ชจ๋๋ก ๋ฒ์ ์ง์ , ํ
์คํธ ๋ฐ ์ถ์๋ฉ๋๋ค. crond
- http://pastebin.com/UqJYvxUR์ ๋ํ ํ
์คํธ ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ์์ฃผ ์งง์ ์๋ฅผ ์ฌ๋ ธ์ต๋๋ค.
@thaJeztah ๊ฐ์ฌํฉ๋๋ค. ๊ฒฐ๊ตญ ์๋ ๊ณต๋ ๊ฐ๋ฐ์๊ฐ ์ ์ฒด ๊ฐ๋ฐ ์คํ์ ๋ณด์ ํ๊ธฐ ์ํด ์คํํ ์ ์๋ ๋จ์ผ ํ์ผ์ด ํ์ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํ์ํ ๊ฒฝ์ฐ prod์์๋ ์คํํ ์ ์์ต๋๋ค. docker compose์ ๋ํด ๋ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ํ INCLUDE
๋ ์ค๋์ ์ ์ ์๋์์ต๋๋ค( https://github.com/docker/docker/issues/735 ).
@jmcejuela ์ฌ์ค ๋๋ถ๋ถ์ ๋์ปค ์ฌ์ฉ์๋ ssh๋ฅผ ์ค์นํ๊ณ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋๋ฅผ ์ค์ ํ๊ณ ์คํ ์ค์ธ ์ปจํ ์ด๋์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ๋์ปค๊ฐ ์ค์ ๋ก ์ฌ์ฉ๋๋ ๋ฐฉ์์ ๋๋ค.
๋น์ ์ด ์๋ชปํ๊ณ ์๋ ๊ฒฝ์ฐ์๋ง docker exec
๋ช
๋ น์ด ๊ฝค ์ค๋ซ๋์ ์ฌ์ฉ๋์ด ์์ผ๋ฉฐ ๊ทธ ์ดํ๋ก ssh๊ฐ ํ์ํ์ง ์์์ต๋๋ค ...
@anentropic ์ข ์์ฑ์ด ์๋ ๋จ์ ์๋น์ค๋ฅผ ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ์๋ง ํด๋น๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ธฐ๊ณ ํ์ต๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ์๋น์ค์ ๋ํด ๋ณต์กํ ์ข ์์ฑ ์ฒด์ธ์ด ์๋ ๊ฒฝ์ฐ ์๋น์ค๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ๋ณต์ ํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๊ฒ ํด์ผ ํ ์ด์ ๊ฐ ์์ต๋๋ค. ๋์ปค๊ฐ ๋๋ฉ์ธ ํน์ ์ธ์ด๋ผ๊ณ ํด์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ ๋ง์ ์ง์์ด ๋ฒ๋ ค์ง๊ณ ์ค๋๋ ๊ตํ์ด ์ ์ฉ๋์ง ์๋๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ์จ์ ํจ์ ์ฌ์ ํ โโ์ค์ํฉ๋๋ค. ๋ ์ํผ๋ฅผ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ๋ ๊ฒ์ ๋ฏธ์น ์ง์ ๋๋ค.
๋ํ ๋ชจ๋ docker ์ฌ์ฉ์๊ฐ ์๋ '๋จ์ผ ์๋น์ค' ์ธ๊ณ๊ด์ ๊ฐ์ ํ ๊ฒฝ์ฐ์๋ง ์ ํจํฉ๋๋ค.
@rjurney , :100:
์ฌ๋๋ฐ๋ ๋ฏธ์ํ๋ ๋ค์ค ์์์ ๋ณต์กํ ํน์ง์ด๋ฉฐ ์์ฌํ ์ฌ์ง ์์ด ์ ํญ์ด ์์ ๊ฒ์ ๋๋ค. Include๋ ๋น๋ ๋ ์ํผ์ Dockerfile์ ํด๊ฒฐํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ๋ก ๋ฌธ์ ๊ฐ ์๋ ์ธ์ด๋ก ๋ฐ๊ฟ๋๋ค.
๋ฌธ์ ๋ฅผ ๋ค๋ฅด๊ฒ ๋ณด๋ฉด ์ด๋จ๊น์? " ADD
/ COPY
" ํ์ผ์ ๋ค๋ฅธ ๋์ปค ์ด๋ฏธ์ง์์ ๋น๋ ์ค์ธ ์ด๋ฏธ์ง๋ก ์ ํํ ์ ์๋ค๋ฉด ์ด๋จ๊น์? ์ด๋ ๊ฒ ํ๋ฉด ๊ธฐ๋ฅ์ ์ฌ์ฌ์ฉํ๊ณ ์ฝ๋ ์ค๋ณต์ ํผํ ์ ์์ต๋๋ค. ์ด๋ฏธ์ง์์ FROM
์ฌ๋ฌ ๋ฒ ์ฌ์ฉํ์ง ์๊ณ ๋ช
์์ ์ธ ๋ฐฉ์์ผ๋ก ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ณต์ฌํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์ ์ ์๋ ๋ฐฉ์์ผ๋ก ์๋ํด์ผ ํ๋ฉฐ ๊ทธ๋ ์ง ์์ผ๋ฉด ์คํจ์
๋๋ค. ์ด๊ฒ์ด ๋์ปค ์ด๋ฏธ์ง์ ํจ๊ป ์๋ํ๊ณ ์ผ๋ถ ์๋ก์ด ๊ฒ์ ๊ฒฝ๋ก์ ๋ฐ๋๋ก ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์๋ฃจ์
์ผ๋ก ํ์ฉํ ์ ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ์ด๊ฒ์ด ํฉ๋ฆฌ์ ์ธ ์ ์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ถ๊ฐ ๋ณด๋์ค๋ ๋์ผํ ์ฝ๋๋ฅผ ์ฌ๋ฌ ๋ฒ ๋ค์ ์คํํ ํ์๊ฐ ์๋ค๋ ๊ฒ์
๋๋ค. ๋ํ ๋น๋์ ๋ํ ๋๊ท๋ชจ ๋ณ๊ฒฝ์ ํผํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์๊ฐ?
์๋ง๋ ์ด๊ฒ์ ๋ค๋ฅธ ๊ณณ์์ ์ ์๋์์ ๊ฒ์ ๋๋ค. ์ด ๊ฒฝ์ฐ ๋งํฌ๊ฐ ์ข์ ๊ฒ์ ๋๋ค.
์๋
ํ์ธ์,
์ด๋ค ์๋ฃจ์
์ ์ ํํ๋ ์ฌ๋ฌ ๋
๋ฆฝ ์์ค์์ ์ด๋ฏธ์ง๋ฅผ ์ค๋นํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ์ฌ์ค์ ๋งค์ฐ ๋๋์ต๋๋ค.
๋ฐํ์์ ์ด ํ๋ก์ธ์ค๋ฅผ ์ํํ ์ ์์ผ๋ฏ๋ก ์ด๋ฏธ์ง ์ค๋น๋ฅผ ๊ฑด๋๋ฐ๊ณ ์ถ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฐํ์์ ์ด๋ฏธ์ง ์ธํธ๊ฐ ๋ฐฐํฌ๋๊ณ ์ข
์์ฑ์ด ์์ ๋ ๋๋ง๋ค ์ด๋ฏธ์ง๋ฅผ ๋ค์ ๋ง๋ค ํ์๊ฐ ์์ต๋๋ค.
๋๋ ๋์์ ์ฐพ์์ง๋ง ์์ง ์ ํจํ ๊ฒ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค. ์ด๊ฒ์ ์ฃผ์ ์ฌ์ฉ ๊ฒฉ์ฐจ์
๋๋ค.
ACI๋ฅผ ์ฌ์ฉํ์ฌ ๋งค์ฐ ์ฝ๊ฒ ์ํํ ์ ์์ต๋๋ค.
๊ฐ์ฌ ํด์!
:+1: ์ด ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ ์ ์ํ๊ณ ์ ์ด๋ ๋ ผ์๋๊ณ ์๋ ๊ฒ์ด ๊ธฐ์ฉ๋๋ค. ๊ธฐ๋ณธ ์ด๋ฏธ์ง๊ฐ ๊ฐ์์ผ ํ๋ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
๋ค๋ฅธ ์ด๋ฏธ์ง์์ ๋ณต์ฌํ๋ ๊ฒ์ด ๋ค๋ฅธ ๊ณณ์์ ์ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ด๊ฒ์ด ๋ฌธ์ ์ ๋๋ค( https://github.com/docker/docker/issues/18596 ).
@jakirkham ๊ฐ์ฌ
๋์ปค ๋ค์ค ์์ ๊ธฐ๋ฅ์ ๊ฒฝ์ฐ +1
ํธ์งํ๋ค:
๋ํ ์ฐธ์กฐ: https://github.com/docker/docker/issues/13026
์ ์๊ฐ์ ๋น์ ์ด ๊ฒช๊ณ ์๋ ๋ฌธ์ ๋ ๋ ์ํผ๋ฅผ ์์ฑํ ์ ์๋ค๋ ๊ฒ์ด ๋ง์ด ๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. Docker compose๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ๋ฌ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ์ ํฉํฉ๋๋ค. Docker swarm์ ์ฌ๋ฌ ๋ ธ๋์์ ๋์ผํ ์์ ์ ์ํํ๋ ๋ฐ ์ ํฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ง์ ๊ฒฝ์ฐ์ ์์ค ์ฝ๋ ์์ค์์ ๋ค๋ฅธ ์ฌ๋์ ์์ ์ ํฌํจํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ํ ๋ฒ ์์ํ๊ฑฐ๋ ๋ค์ ๋ง๋ค์ด์ผ ํ๋ฏ๋ก ์ ํ์ ์ ๋๋ค.
2016๋ 3์ 18์ผ ๊ธ์์ผ ์ค์ 9์ 1๋ถ, Alvin Chevolleaux < [email protected]
์ผ๋ค:
@thaJeztah https://github.com/thaJeztah ์ ๋ต์ฅ์ ๋งค์ฐ
๊ณ๋ชฝ. ๋๋ Docker๋ฅผ ์ฒ์ ์ฌ์ฉํ๊ณ ์ ๊ฒฐํฉํ ์ ์๋์ง ์ดํดํ์ง ๋ชปํฉ๋๋ค.
์ฌ๋ฌ _์ด๋ฏธ์ง_๋ฅผ ํจ๊ป ์ฌ์ฉํ์ง๋ง Docker Compose๊ฐ
๋ด๊ฐ ์ฐพ๊ณ ์๋ ํ๋์ ์์ฉ ํ๋ก๊ทธ๋จ์ผ๋ก ์ฌ๋ฌ _containers_ ๊ฒฐํฉ
์์ํ.๋ด ๋ฌธ์ ๋ ๋ด๊ฐ ์ฒ์์ Docker๋ฅผ ์ดํดํ๋ค๊ณ ์๊ฐํ๋ค๋ ๊ฒ์ ๋๋ค.
ํ์ง๋ง ์ง๊ธ์ ๊ทธ๋ ์ง ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค. ๋์๊ฐ์ ์ข ๋ ํด๋ด์ผ๊ฒ ๋ค
๋ ์!โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/docker/issues/3378#issuecomment -198426036
๋ฌ์ ์ ๋ twitter.com/rjurney russell. [email protected] relato.io
@rjurney ์, Docker Compose๋ฅผ ์กฐ๊ธ ๋ debian:jessie
์์ง๋ง Centos ๊ธฐ๋ฐ ์ค์ ์ ์ํ๋ฏ๋ก ํน์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋๋จธ์ง ์ค์ ์ ์๋ฝํ๊ฑฐ๋ ์์ค Dockerfile์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ด์ผ ํฉ๋๋ค. ๋ด ์์ ์ ์ด๋ฏธ์ง๋ฅผ ์ฒ์๋ถํฐ ๋กค๋งํ ๋ ์ด๋ฏธ์ง๋ฅผ ๋ฏน์ค ์ค ๋งค์นํ ์ ์๋ ์ค๊ฐ ์ง์ ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํธ์งํ๋ค:
๋ช
ํํํ๊ธฐ ์ํด Ubuntu์ Centos ๊ธฐ๋ฐ ์ด๋ฏธ์ง๋ฅผ ํจ๊ป ํผํฉํ ์ ์๋ ์ด์ ๋ฅผ ์ดํดํ์ง๋ง ์ผ์ข
์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์ ์๋ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ ์ฒด ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ๋ ๋์ ํ ์ด๋ฏธ์ง์์ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ก ๋ณ๊ฒฝ ์ฌํญ์ ๋ค์ด๋ก๋ํ๋ฉด ๋ฉ๋๋ค.
INCLUDE
๋ ๋์๊ฒ๋ ๋งค์ฐ ์ ์ฉํ ๊ฒ์
๋๋ค. ๊ทธ๊ฒ ์์ด๋ ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ํด์ผ ํฉ๋๋ค.
@RomanSaveljev ์ดํดํ ์ ์์ต๋๋ค.
Docker ๋ก๋๋งต ์ ๋ฐ๋ฅด๋ฉด
docker exec
ํตํด ์คํ ์ค์ธ ์ปจํ ์ด๋๋ฅผ ํ๋ก๋น์ ๋ํ๋ ๊ฒ์ ๋๊ฐ์ด ์๋ชป๋ ์ ์์ต๋๋ค.
docker exec
๊ฐ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ ๊ฒ์ด๋ผ๊ณ ๋งํ์ง ์์ต๋๋ค. docker exec
๋ ํญ์ ๋๋ฒ๊น
๋๊ตฌ์์ผ๋ฉฐ Docker ์ปจํ
์ด๋์ SSH๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค.
๋๋ ์ด๊ฒ์ ์ฐธ์ฌํ๋ ๊ฒ์ด ์ด๋ฆฌ์์ ๊ฒ์ฒ๋ผ ๋๊ปด์ง์ง๋ง ๋๋์ฒด ... ๋๋ ์ด๊ฒ์ ๋ค์ ์ ์ ํ ๊ฒ์ ๋๋ค :
๋ฌธ์ ๋ฅผ ๋จ์ํํ๊ณ ์์์ ํ์ฉํ์ง ์๋๋ก INCLUDE๋ฅผ ๊ตฌํํ๋ ๊ฒ์ผ๋ก ์์ํ์ง ์๊ฒ ์ต๋๊น? ์ฆ, FROM์ด ์๋ ํ์ผ๋ง ํฌํจํ ์ ์์ต๋๋ค.
๊ทธ๋ ๊ฒ ํ๋ฉด ๋ง์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ ํฉ๋ฆฌ์ ์ธ ์ด์ ์ฒด์ ์์ ์์ ํ๋ ์ฌ๋๋ค์ด INCLUDE ํ์ผ์ ์์ ๊ฒ์ ๋๋ค. uname์ ์ด์ ๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๊ฐ ๋ ๊ฒ์ด๋ฉฐ ์ด ๊ตฌํ์ ๋ํ ํผ๋๋ฐฑ์ ๋ ๋ง์ ๊ฒ์ ์ ์ํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
์ฝ๊ฒ ๊ฒฐ์ ํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๊ฒ์ ๋ง์ ์์ ์ด ์๋ ๊ฒ์ ๋๋ค. ๋ณต์กํ์ง ์์ ๊ฒ์ ๋๋ค. ์ค๋ฅธ์ชฝ?
@rjurney ๋ ๊ธฐ๋ณธ์ ์ผ๋ก https://github.com/docker/docker/pull/12749 ๊ฐ ํ๋ ์ผ์ ๋๋ค.
@rjurney : ์ด๋ฆฌ์๊ฒ ์๊ฐํ์ง ๋ง์ญ์์ค. INCLUDE๊ฐ ์ด๊ธฐ ์ง๋ฌธ์ ์์ ํ ๋ค๋ฃจ์ง๋ ์์ง๋ง ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ผ๋ก ๋์๊ฐ๋ ๋จ๊ณ์ ๋๋ค. ์บก์ํ ๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ด ๋ชฉ๋ก์ ์ถ๊ฐํ ์ ์๋ ํญ๋ชฉ์ด ๋ ์์ ์ ์์ต๋๋ค. INCLUDE ์๋ฃจ์ ์ ์ฒซ ๋ฒ์งธ ๊ธ๋จธ๋ฆฌ ๊ธฐํธ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ์ผ๋จ ๊ทธ๊ฒ์ด ์๋ฆฌ๋ฅผ ์ก์ผ๋ฉด ๋ฐ์ด๋๋ฆฌ ์คํ ๋ฆฌ์ง ํจ์จ์ฑ์ด ์ต์ข ์ฌ์ฉ์์๊ฒ ํฌ๋ช ํ๊ฒ ๊ฐ์ ๋ ์ ์๋ ํ์ค ํ๋ ์์ํฌ๊ฐ ๋ง๋ จ๋ฉ๋๋ค. ๊ทธ๊ฒ์ด ์ ์๋ฆฌ์ ์์ผ๋ฉด ์ด๋ฏธ์ง ํ์ผ์ ๋ํด ๋์ผํ ์กฐ์์ ์ง์ ์ํํ๋ ๋๊ตฌ์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ๋ง์ง๋ง ๋จ๊ณ๋ ๋ฌผ๋ก ๋งค์ฐ ์์ฌ์ค๋ฝ์ต๋๋ค. ์ด๋ฏธ์ง ํ์ผ์์ ์ง์ ์ํํ๋ ์ฆ์ ์ด๋ฏธ์ง๊ฐ ๊นจ์ง ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ํฝ๋๋ค. ๊ทธ๋ฌ๋ ํ์ ์ ์ (์์ ์ด ๋ฌด์์ ํ๊ณ ์๋์ง ์ ํํ ์๊ณ ์๋ ์ฌ๋)๋ง์ด ์ธ ๋ฒ์งธ ์ต์ ์ ํ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ๋ค๋ฉด, ๊ทธ๊ฒ์ ๋์๊ฒ ๋ถํฉ๋ฆฌํ ์ถ๊ฐ์ฒ๋ผ ๋ณด์ด์ง ์์ต๋๋ค... ๊ฒฐ๊ตญ.
์ด๋ฐ ์์ผ๋ก ์ง์ ์ผ๋ก ๊ตฌ์ฑ ๊ฐ๋ฅํ ๊ฒ์ ์ํ๋ ์ฌ๋๋ค์ ์ํด Nix(NixOS, Linux ๋ฐฐํฌ ๋ฐ ํจํค์ง ๊ด๋ฆฌ ์์คํ )๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์์ค์์ ๋น๋ํ๊ณ Linux์ ๋ํด ์๊ณ ์๋ค๊ณ ์๊ฐํ๋ ๋ชจ๋ ๊ฒ์ ๋ฒ๋ฆฌ๊ณ ๋ชจ๋ ์ํํธ์จ์ด๋ฅผ ๋ค์ ํจํค์งํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์ข์ ์์คํ ์ด์ง๋ง ์ฌ์ฉํ๋ ์ฌ๋์ด ๋ง์ง ์์ ์์ด ๋ง์ด ๊ฐ๋ ์์คํ ์ด์ง๋ง ์ ํ์ฉ๋๊ธฐ๋ฅผ ์ง์ฌ์ผ๋ก ๋ฐ๋๋๋ค.
๋ค๋ฅธ ์ฌ๋๋ค์ด ๋งํ๋ฏ์ด Docker ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ์ ์๋น์ค ์์ค์์ ๊ตฌ์ฑํ๋ ๊ฒ์ ๊ดํ ๊ฒ์ ๋๋ค.
:+1: ๊ตฌ์ฑ ๊ฐ๋ฅํ ๋ชจ๋ธ์ ๋ํด ์๊ฐํ ๊ฐ์น๊ฐ ์๋ defo - ๋์์ dockerfile๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค๋ฉด ํ๋ฅญํ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ํ์ธ ๋ฆฌ๋ ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋งค์ฐ ๋ค์ํ ๋น๋ ์ปจํ ์ด๋์ apache thrift๋ฅผ ํฌํจํ๋ ค๋ ์ ์ค ์ผ์ด์ค๊ฐ ์์ต๋๋ค.
๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ๋ ๊ฒ๋ณด๋ค ์ ์ฝํ ์ค์น๋ฅผ ํฌํจํ ์ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ํ์ง๋ง ์ ์คํฌ๋ฆฝํธ๋ก ์ฝ๊ฒ ์ถ์ถํ๊ณ ์ถ๊ฐํ๊ณ ์คํํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ruby-2.3๊ณผ java-8 ์ด๋ฏธ์ง๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? ๊ทธ๋ค์ ๊ธฐ๋ณธ์ผ๋ก ๋์ผํ ๋ฐ๋น์ jessie ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค(๋์ปค ํ์ผ์ ์ฝ์์ต๋๋ค). ๋ ๋ค์ ์๋ ๋ช ๋ น์ ์คํํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋๋ก Java Dockerfile์ Ruby Dockerfile์ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐํด์ผ ํ์ต๋๋ค. ์ฑ์๋ ๋ ๋ค ํ์ํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ฐฉ๋ฒ์ด ์ ํ ์์ต๋๋ค.
๋ช ๊ฐ์ง Dockerfile ๋ช ๋ น์ ๋ถ์ฌ๋ฃ๋ ๋์ ์ ๊ฑฐํ ๊ธฐํ๋ฅผ ์ก์์ต๋๋ค. "๊ธฐ๋ณธ" Dockerfile(๋ช ๋ น์ ๋ถ์ฌ๋ฃ์)์ด ์ด๋ฏธ ํด๋น ๋จ๊ณ๋ฅผ ์ํํ๊ธฐ ๋๋ฌธ์ ํด๋กญ์ง๋ ์์์ง๋ง ๋จ์ํ ๋ถํ์ํ์ต๋๋ค. ๋ฐ๋ผ์ "ruby" & "java" ์ด๋ฏธ์ง๋ฅผ ์ํ์ง ์์๋ค๋ ์ฃผ์ฅ์ ๋ณผ ์ ์์ต๋๋ค. ์ค์ ๋ก ์ธ ๋ฒ์งธ "ruby+java ์ฌ์ธ์" ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ถํ๊ณ ์์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด ํน๋ณํ ๊ฒฝ์ฐ ๋ ์ด๋ฏธ์ง์ ๋ช ๋ น์ ์์ ํ ํธํ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋จ์ํ ์ฐ๊ฒฐํ๊ธฐ๋ง ํ๋ฉด ์๋
๊ทธ๋ฌ๋ ์ด ๊ธฐ๋ฅ์ ์ํ๋ ๋์ ๊ฐ์ ๋ชจ๋ ์ฌ๋์๊ฒ๋ ์ด๊ฒ์ด ๋ฌธ์ ๊ฐ ๋ ์ ์๋ ์ํฉ์ ๋ง์ด ๋ณผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋์ผํ ๋์ปค ์ด๋ฏธ์ง์์ "nginx"๋ฅผ ์คํํ ๋ค์ "ssh"๋ฅผ ์คํํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฒ๋ง์ด ๋ฌธ์ ๊ฐ ์๋๋๋ค. ๋์ผํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด "debian" ๋ฐ "centos"๋ฅผ ์คํํ ์๋ ์์ต๋๋ค. ์คํ ๊ฐ๋ฅํ ์ด๋ฏธ์ง. ๊ทธ๊ฒ์ด ๋์ ๋๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ํด์ ๋์ด ๋ง์ ๊ฒฝ๊ณ ๊ฐ ์ฒจ๋ถ ๋ ์คํ์ ์ต์ ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
๋ฐ๋ผ์ ์ด ๊ธฐ๋ฅ์ ๋ํ ์ธํฐํ์ด์ค๊ฐ ๋ฌด์์ด๋ ๊ฐ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋์(๋ช ๋ น ์ธํธ)์ ์ฌ๋ฐ๋ฅด๊ฒ ์ป๋ ์ฑ ์์ Dockerfile ๊ฐ๋ฐ์์๊ฒ ์์์ ๋งค์ฐ ๋ถ๋ช ํ ํด์ผ ํฉ๋๋ค.
ํธ์ง: ์, INCLUDE ํ ๋ก ์ ๋์ณค์ต๋๋ค.
๋ฌธ์ ๋ฅผ ๋จ์ํํ๊ณ ์์์ ํ์ฉํ์ง ์๋๋ก INCLUDE๋ฅผ ๊ตฌํํ๋ ๊ฒ์ผ๋ก ์์ํ์ง ์๊ฒ ์ต๋๊น? ์ฆ, FROM์ด ์๋ ํ์ผ๋ง ํฌํจํ ์ ์์ต๋๋ค.
๊ทธ๋ ๊ฒ ํ๋ฉด ๋ง์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ ํฉ๋ฆฌ์ ์ธ ์ด์ ์ฒด์ ์์ ์์ ํ๋ ์ฌ๋๋ค์ด INCLUDE ํ์ผ์ ์์ ๊ฒ์ ๋๋ค. uname์ ์ด์ ๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๊ฐ ๋ ๊ฒ์ด๋ฉฐ ์ด ๊ตฌํ์ ๋ํ ํผ๋๋ฐฑ์ ๋ ๋ง์ ๊ฒ์ ์ ์ํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
์ฝ๊ฒ ๊ฒฐ์ ํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๊ฒ์ ๋ง์ ์์ ์ด ์๋ ๊ฒ์ ๋๋ค. ๋ณต์กํ์ง ์์ ๊ฒ์ ๋๋ค. ์ค๋ฅธ์ชฝ?
:+1:
@rjurney ๊ทธ๊ฒ ๊ธฐ๋ณธ์ ์ผ๋ก #12749๊ฐ ํ๋ ์ผ์ ๋๋ค
:+1: ์๋ฒฝ, ์ต์ข ํํ๋ก ๋ฌด์์ ํ ์ ์์์ง ๊ธฐ๋๋ฉ๋๋ค.
์ด ๊ฐ๋ ์๋ ๋งค์ฐ ๊ด์ฌ์ด ์์ต๋๋ค. "INCLUDE" ๋ฉ์ปค๋์ฆ์ ๋งค์ฐ ์กฐ์กํ ์๋ฃจ์ ์ด์ง๋ง ์์งํ ๋์ปค ํ์ผ ์ธํธ์ ์ ์ง ๊ด๋ฆฌ ์ธก๋ฉด์์ ๊ฝค ํฐ ์ง์ ์ ๋ํ๋ ๋๋ค.
๊ฐ์ธ์ ์ผ๋ก FROM
๊ฐ ๋ฐ์ํ์ ๋ _์คํจ_ ํ๋ ๊ฒ์ ์ํ์ง ์๊ณ FROM
_๋ฌด์_ ํ๊ณ ๋๋จธ์ง ๋ช
๋ น์ ์์๋๋ก ์ ์ฉํ๊ธฐ๋ฅผ ์ํฉ๋๋ค.
FROM ์ง์ ์์ด๋ ์์ง ์ด๋ฐ ์ผ์ด ๋ฐ์ํ์ง ์์๋ค๋ ๊ฒ์ ์คํ ์์ค์
๋๋ค.
์ฅ๋.
2017๋
1์ 19์ผ ๋ชฉ์์ผ ์ค์ 10:19, Ken Williams ์๋ฆผ @github.com
์ผ๋ค:
์ด ๊ฐ๋ ์๋ ๋งค์ฐ ๊ด์ฌ์ด ์์ต๋๋ค. "INCLUDE" ๋ฉ์ปค๋์ฆ์ ๋งค์ฐ
์กฐ์กํ ์๋ฃจ์ ์ด์ง๋ง ์์งํ ๋งํ๋ฉด
๋์ปค ํ์ผ ์ธํธ์ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ.๊ฐ์ธ์ ์ผ๋ก FROM์ด ๋ฐ์ํ ๋ ์คํจ ํ๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค.
FROM์ ๋ฌด์ ํ๊ณ ๋๋จธ์ง ๋ช ๋ น์ ์ ์ฉํ๊ธฐ๋ฅผ ์ํฉ๋๋ค.
์์.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/docker/issues/3378#issuecomment-273854850 ๋๋ ์์๊ฑฐ
์ค๋ ๋
https://github.com/notifications/unsubscribe-auth/AACkpS8-EQ7r0BHid75rxeBDhOUDFRXlks5rT6kXgaJpZM4BWkJ9
.
--
๋ฌ์
์ ๋ twitter.com/rjurney russell. [email protected] relato.io
์ฌ๊ธฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ณํฉ์ด ๋ฐ๋์ ํ์ํ ๊ฒ์ ์๋๋๋ค. ๋ฆฌ๋ฒ ์ด์ค๋ก ๋ง์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ด ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋
A(์ฐ๋ถํฌ) -> B(์: nginx)
A(์ฐ๋ถํฌ) -> C(์: ๋
ธ๋)
๊ทธ๋ฆฌ๊ณ ๋๋ ๊ฒฐํฉ ๋ B & C ์ด๋ฏธ์ง๋ฅผ ์ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ทธ๋ค์ ์๋ก ์๋ฌด ๊ด๋ จ์ด ์์ผ๋ฏ๋ก A์ C ์ฌ์ด์ ๋ชจ๋ diff๋ฅผ B์ ๋ฆฌ๋ฒ ์ด์คํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค. ์ฆ
A -> B -> C'
ํด๊ฒฐํ๊ธฐ๊ฐ ๋ ์ฌ์ด ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
@cloutiertyler ์ผ๋ฐ์ ์ผ๋ก Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ Nginx์ ์๋ํ๊ธฐ ์ํด ์ด ๊ธฐ๋ฅ์ด ํ์ํ์ง ์์ต๋๋ค(์ ์๊ฐ์๋). Docker ๋ฐฉ์์ ๋ ๊ฐ์ ์ปจํ ์ด๋๊ฐ ๋ ๊ฒ์ ๋๋ค. ํ๋๋ Nginx์ฉ์ด๊ณ ๋ค๋ฅธ ํ๋๋ Node.js์ฉ์ ๋๋ค. ํฌํธ๋ฅผ Nginx ์ปจํ ์ด๋์๋ง ๋ ธ์ถํ๋๋ก ๋ ธ๋ ์ปจํ ์ด๋๋ฅผ ๊ตฌ์ฑํ๊ณ Nginx ์ปจํ ์ด๋๊ฐ ๊ณต์ฉ ํฌํธ(์: 80)๋ฅผ ์์ ํ๋๋ก ํฉ๋๋ค. Nginx๊ฐ Node์ ๋์ผํ ์ปจํ ์ด๋์ ์์ด์ผ ํ๋ ์ด์ ๊ฐ ์์ต๋๊น?
์ํ Docker Compose ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
version: "2.1"
services:
app: # Node.js application image
build: .
nginx: # Nginx container who can make request to app container
image: nginx:1.10-alpine
depends_on:
- app
ports:
- "${PORT:-8080}:80" # public port, you may want PORT=80
@franklinyu ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. ์ค์ ๋ก ์์ ๋ก ๋ ๊ฐ์ ์์ ์๋น์ค๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ๋ด ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ ์ผ๋ฐ ์๋น์ค(์: ์ฐ๋ถํฌ ๊ธฐ๋ฐ ๋ ธ๋)์ ๋ด ์ฌ์ฉ์ ์ ์ ์ด๋ฏธ์ง(์ฐ๋ถํฌ ๊ธฐ๋ฐ)๋ก ์์ํ์ฌ ์ด๋ค์ ๊ฒฐํฉํ๋ ค๋ ๊ฒ์ ๋๋ค.
btw, ์ ํํ ๋ฆฌ๋ฒ ์ด์คํ์ง๋ ์์ง๋ง Dockerfiles์ ๋ํ ๋ง์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ฝ๋๋ค.
Dockerfile์ ์ด์ ๋ค๋จ๊ณ ๋น๋๋ฅผ ์ง์ํฉ๋๋ค. ์์:
FROM golang AS myapp
COPY . /myapp
RUN cd /myapp && go build
FROM scratch
COPY --from=myapp /myapp /usr/bin/myapp
๋น์ ์ ๋น์ ์ด ์ํ๋๋งํผ ๋ง์ ๋จ๊ณ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
--from
๋งค๊ฐ๋ณ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ปจํ
์คํธ๋ฅผ ์ง์ ๋ ๋น๋ ๋์ ์ด๋ฆ์ผ๋ก ์ ํํฉ๋๋ค.
docker build -t myapp .
ํ๋ฉด myapp:latest
๋ผ๋ ๊ฒฐ๊ณผ ์ด๋ฏธ์ง๊ฐ ๋ง์ง๋ง ๋จ๊ณ์์ ์์ฑ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด docker build --target=myapp
ํ์ฌ ํน์ ๋จ๊ณ๋ฅผ ๋น๋ํ ์๋ ์์ต๋๋ค.
17.05(ํ์ฌ RC1๋ก ์ฌ์ฉ ๊ฐ๋ฅ)์๋ ๋ช ๊ฐ์ง ๋ค๋ฅธ ๋งค์ฐ ๋ฉ์ง Dockerfile ๊ฐ์ ์ฌํญ์ด ์์ต๋๋ค. ์๋ํด ๋ณด์ญ์์ค!
์ด์ ํฅ๋ฏธ๋กญ์ต๋๋ค! ๋น์ ์ด ๊ทธ๋ ๊ฒ ํ ์ ์๋์ง ๋ชฐ๋์ด์. ๋ด ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํด๊ฒฐํ๋์ง ํ์ธํ๊ธฐ ์ํด ์๋ํด์ผ ํฉ๋๋ค.
์ด๊ฒ์ ํ๋ฅญํ ๊ธฐ๋ฅ์ด์ง๋ง ์ฌ์ฉํด ๋ณธ ํ์๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง๋ ์์ต๋๋ค. ์ค๋์์์ผ ๋ ๋นํ์ต๋๋ค.
์ปจํ ์ด๋ ๋ด์์ ๋น๋ํ ์ ์๋๋ก Docker๊ฐ ์ค์น๋ Jenkins ์ด๋ฏธ์ง๋ฅผ ์ํฉ๋๋ค. ๋ฌธ์ ๋ ๋ด Dockerfile์์ ๋ ์ค ํ๋์ ์ค์น ํ๋ก์ธ์ค๋ฅผ ๋ณต์ ํ์ง ์๊ณ ๋ ์ด ์์ ์ ์ํํ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ ๊ฐ ์ปจํ ์ด๋๊ฐ ํ๋์ ์๋น์ค์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์ ํ์ํ์ง ์๋ค๋ ์ ๋ฉธ๋ ์ฃผ์ฅ์ด ๋ถ๋ช ํ ์ ์ฉ๋์ง ์๋ ๊ฒฝ์ฐ์ ๋๋ค. ๋ด "ํ๋์ ์๋น์ค"๋ Docker์ Jenkins์ ๊ธฐ๋ฅ์ ๊ฒฐํฉํฉ๋๋ค.
๋ฌธ์ ๋ ๋ด Dockerfile์์ ๋ ์ค ํ๋์ ์ค์น ํ๋ก์ธ์ค๋ฅผ ๋ณต์ ํ์ง ์๊ณ ๋ ์ด ์์ ์ ์ํํ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ ๋๋ค.
๋ฐ๋ผ์ ๋ ๊ฐ์ dockerfile์ ํ๋๋ก ๋ถ์ด์ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ํ ํ์๊ฐ ์์ต๋๊น?
๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ๋ ์ด ๊ฒฝ์ฐ ๋ถ๊ธฐ์ ๋์ผํฉ๋๋ค. ๋ด๊ฐ ํ๊ณ ์ถ์ ๊ฒ์ Dockerfile์ ๋ถ๊ธฐํ์ง ์๋๋ก ํ์ฌ ๋์ค์ ๋ณํจ์์ด ๋ณ๊ฒฝ๋ ๋ ๋ฒ๊ทธ/๋ณด์ ๊ฐ์ ๋๋ ๊ธฐํ ๋ณ๊ฒฝ ์ฌํญ์ ๋์น์ง ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฅ ์ง๋์น ์ ์์ต๋๋ค. ๊ธด ์ด๋ฏธ์ง ์์ ์ฒด์ธ(2๋ณด๋ค ๊น์)์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์์ต๋๋ค. ๋ค๋จ๊ณ๋ ๋ฌธ์ ๋ฅผ ๋ช ํํ ํ๋ ๊ฒ ๊ฐ์ง ์์ต๋๋ค. ์ง์๋ฌธ ๋ธ๋ก๋ง ํฌํจํ ์ ์๋ ์ํฐํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ์ด๋ฏธ์ง ๊ธฐ๋ฅ๊ณผ ํจ๊ป ๋ชจ๋ ์์ ์ด๋ฏธ์ง์ ํฌํจํ ์ ์๋ค๋ ๊ฒ์ ํฉ๋ฆฌ์ ์ธ ์งํ์ฒ๋ผ ๋ณด์ ๋๋ค.
Docker ๊ด์ ์์ ์ด ์์
์ ์ํํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ด ๊ถ๊ธํ๋ค๋ฉด ์ ์ ์๊ฐ์ ๋ด์ด ๋ค์์ ๊ฒํ ํ์ธ์.
https://github.com/floydhub/dockerfiles
์ฌ๊ธฐ์์ ๊ทธ๋ Dockerfile์ ์ ์ฒด ํธ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค. ํธ๋ฆฌ ์๋๋ก ๋ด๋ ค๊ฐ๋ฉด ํธ๋ฆฌ์ ์ ๋ ๋ฒจ์์ ๊ฐ๊ฐ ๋ค๋ฅธ ์ข
์์ฑ ์กฐํฉ์ ์ฐพ์ ์ ์์ต๋๋ค. ๊ทธ๋์ ๋ง์ฝ ๋น์ ์ด ๋๋ฌด๋ฅผ ๋ฐ๋ผ๊ฐ๋ค๋ฉด
-ubuntu->common-deps->python3->deepLearningBase->pyTorch
๊ทธ๋ฆฌ๊ณ ๋น์ ์ ์ ๋ง๋ก ์ํ์ต๋๋ค
-ubuntu->common-deps->python3->deepLearningBase->pyTorch
+
-ubuntu->common-deps->python3->deepLearningBase->TensorFlow
๋ ๊ฐ์ง ๋ชจ๋์ ๋ํด deepLearningBase ์๋์ ๋
ธ๋(ํด๋)๋ฅผ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
-ubuntu->common-deps->python3->deepLearningBase->TensorFlow-pyTorch
์ด์ pyTorch์ TensorFlow dockerfile์ ๊ฒฐํฉํ dockerfile์ ๋ง๋ค์ด์ผ ํ์ง๋ง
ํต์ฌ์ ํด๋น ํ์ผ์ด deepLearningBase ์์ ๋ช ์ค๋ง ์ค์นํ๋ฉด ๋งค์ฐ ๊ฐ๋จํ๋ค๋ ๊ฒ์
๋๋ค.
๋ฐ๋ผ์ ์ค์ ๋ก ํ์ํ ๊ฒ์ ์น ๊ฐ๋ฐ, ๋ฅ ๋ฌ๋, ์๋ฒ ๋๋ ์ํํธ์จ์ด ๋ฑ๊ณผ ๊ฐ์ ๋ค์ํ "์ธ๊ณ"์ ๋ํด ์ด์ ๊ฐ์ ์ฌ๋ฌ ๋๊ท๋ชจ github ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๊ฒ์ ๋๋ค.
๊ทธ๋ฐ ๋ค์ ํ์ํ ๋น๋๋ก ํธ๋ฆฌ๋ฅผ ๋ฐ๋ผ๊ฐ๊ณ ์์ง ์๋ฌด๋ ๋ง๋ค์ง ์์๋ค๋ฉด ๋ ธ๋๋ฅผ ์ถ๊ฐํ๊ณ 2 ๋๋ 3๊ฐ์ apt-get ๋ผ์ธ์ ๊ฒฐํฉํ์ฌ ์ ํ๊ฒฝ์ ๋ง๋์ญ์์ค.
๊ทธ๊ฒ์ "์์ ๋ง์ ๋ชจํ์ ์ ํํ๋" ์คํ์ผ์ ๊ตฌ์ฑ์ฒ๋ผ ๋ณด์
๋๋ค. INCLUDE๋ ํจ์ฌ ๊ฐ๋จํฉ๋๋ค. ์ ์ฅ, nano
๋ก ์ง์ ๋ gcc
์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ฑํ๊ณ ์ถ๊ธฐ ๋๋ฌธ์ ๋งค๋ฒ apt-get์์ nano๋ฅผ ์ค์นํ ํ์๊ฐ ์์ต๋๋ค!
๋๋ ๊ทธ์ ์ ์ฝ๋ฉํธ์์ @chambm ์ ๋์ํฉ๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ด๊ฒ์ด ๊ฐ๋ฅํ์ง ์์์ผ ํ ์ด์ ๊ฐ ์์ต๋๋ค(์ถฉ๋์ ์๋์ผ๋ก ๊ด๋ฆฌ๋๋ OS์์ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์๋นํ ๋๋ฌผ์ด์ผ ํจ).
์ด๊ฒ์ @cloutiertyler๊ฐ ์ธ๊ธ ํ ๊ฒ๊ณผ ๋งค์ฐ ์ ์ฌํ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค. @franklinyu ์ ์๋ฃจ์ ๋ @cpuguy83์ด ์ธ๊ธ ํ ๋ค๋จ๊ณ ๋น๋๋ ์ ์ฉ๋์ง ์์ต๋๋ค.
์ด๋:
D(๋ฐ/๋๋ E)๋ฅผ ๋น๋ํ๋ ค๋ ์ฌ์ฉ์๋ dockerfileAC์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ์์ด์ผ ํ์ง๋ง dockerfileAB์ ๋ํด ์ ํ์๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์๋ ํ ์ข
์์ฑ(C)์ ๋ค๋ฅธ ์ข
์์ฑ(B)๋ณด๋ค ๋ ์ ์ดํดํด์ผ ํฉ๋๋ค. ์ด์์ ์ผ๋ก๋ ํ A์ B์ ์์กดํ๊ณ D๋ฅผ A + (diff(B,A) + diff(C,A))
(๋ณํฉ) ๋๋ A + diff(B,A) + diff(C,A)
(๋ฆฌ๋ฒ ์ด์ค)๋ก ๋น๋ํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
GHDL์ ์น ์๋น์ค๊ฐ ์๋๊ณ VUnit์ ์น ํด๋ผ์ด์ธํธ๊ฐ ์๋๋ฏ๋ก ๋ ๋๊ตฌ๋ฅผ ๋์ผํ ์ด๋ฏธ์ง/์ปจํ
์ด๋(E)์ ์ค์นํด์ผ ํฉ๋๋ค. ๋ค๋จ๊ณ ๋น๋๋ ์ ์ฉํ์ง ์์ต๋๋ค. ๋ ๊ฐ์ FROM
๋ ์ด๋ธ์ด ์๋ (์๋ง๋ ์๋ ค์ง์ง ์์) dockerfile์ ๋น๋ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋จ์ผ ํฌ์๋ ์ฒด์ธ์ด ์๋๋๋ค.
๋ git ๋ธ๋์น์ ๋ณํฉ/๋ฆฌ๋ฒ ์ด์ค์ ์ ์ฌํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ฐพ์ผ๋ฉด ์ถฉ๋์ด ์๋ ๊ฒฝ์ฐ๋ ์๊ณ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ ๊ฒฝ์ฐ๋ ์๊ณ ๊ณตํต ํ์คํ ๋ฆฌ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ณํฉํ ์ ์๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค... ๋๊ตฌ๊ฐ ์๋์? ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ณต์ ๋๋ ์ธ๋ถ? ๋๊ตฌ๊ฐ ๋ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ git ๋ธ๋์น๋ก ๋ด๋ณด๋ด๊ณ ์ค์ ๋ก ๋ณํฉ์ git์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ด์ฐฎ์ต๋๋ค.
@1138-4EB https://github.com/moby/buildkit ์ฐธ์กฐ
๋๋๊ฒ๋ ์ด๊ฒ์ ์ฌ์ ํ โโ๋ฌธ์ ์ด์ ์ฃผ์ ์ ๋๋ค. "INCLUDE someimage"๊ฐ ์ผ๋ง๋ ์ด๋ ค์ด์ง, ๊ทธ๋ฐ ๋ค์ ๊ตฌ๋ฌธ ๋ถ์ํ ๋ ๋ฒ ์ด์ค๊ฐ ํธํ๋๋์ง ํ์ธํ๊ณ (FROM ์ฒด์ธ์์) ๊ทธ๋ ๋ค๋ฉด ํด๋น ์ง์ ์์ ๋๋จธ์ง ํด๋น ํ์ผ์ ์คํํฉ๋๋ค(ํ๋ก์ ํธ์์ Dockerfile์ ๋ณต์ฌํ ๊ฒ์ฒ๋ผ ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋ด ๊ฒ์ ๋ถ์ฌ๋ฃ์๋ค)?
"์ฌ๋๋ค์ด ๊นจ๋ซ์ง ๋ชปํ๋ ๋์ ์ผ์ ํ ๊ฒ์ด๋ค"๋ผ๋ ๋ณ๋ช ์ ์ด๋ฐ ๋งฅ๋ฝ์์ ํฐ๋ฌด๋์๋ค. ์ด๊ฒ์ ์ด๋ฏธ ์์ฒญ๋๊ฒ ๋ณต์กํ๊ณ ๋จ์ํํ๋ ๋ฐ ์ด๊ฒ์ด ํ์ํ ์ด์ ์ ๋๋ค.
@rainabba ์ ํ ๋์์ด ๋์ง ์๋ ๋๊ธ์
๋๋ค.
์๋ฃ๋์ง ์์ ๋ฐ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๊ฐ์ง ์ด์ ๊ฐ ์์ต๋๋ค.
์ค์ ๋ก๋ ์ผ๋ฐ์ ์ผ๋ก ๋ ๋ค์ ๋๋ค.
์๋ก์ด ์ฝ๋๊ฐ ์ฝ๋์ ์ด๋์ ์๋์ง ์๋ค๋ฉด 10๋ถ ๋ง์ ์๋ฃํ ์ ์๋ ๊ตฌ๋ฌธ ๋ถ์ ๋ฐ ๋ฌธ์์ด ๊ต์ฒด ๋ฌธ์ ์ ๋๋ค. ๋ชจ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ ์ ์๋ค๊ณ ๋งํ๋ ๊ฒ์ ์๋์ง๋ง ์ฌ๊ธฐ์์ ๊ณ์ํด์ ์ ์๋๋ ์ ํ๋ ๊ฒฝ์ฐ(๊ธฐ์ง๊ฐ ํจ๊ณผ์ ์ผ๋ก ๊ณตํต์ ์ธ ๊ฒฝ์ฐ)์ ๊ฒฝ์ฐ์๋ ๋งค์ฐ ์ค์ํฉ๋๋ค.
๋ฌผ๋ก ๊ทธ๋ ์ง ์์ต๋๋ค. ์ด ์ค๋ ๋๋ ์ํํ ์ ์๊ฑฐ๋ ์ํํด์๋ ์ ๋๋ ~102๊ฐ์ง ์ด์ ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ ๋๊ตฌ๋ ์ง ์๊ด์์ด ์ํํ ์๊ฐ์ ํ ๊น์?
๋ค๋ฅธ ํํธ์ผ๋ก, ๋ด ์๊ฒฌ์ (์ฌ๊ธฐ์ ์๋ ๋ง์ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก) ๋ฐฉํดํ๋ ํ๋์ ์ํฅ์ ๋ฏธ์น๊ฑฐ๋ ์ ์ด๋ ์๊ธฐ์ํค๋ ์ญํ ์ ํ ํ์๊ฐ ์๊ณ ํฌ๋ง์ด ์์์ ์ ์ฆํ๋ ์ญํ ์ ํฉ๋๋ค. "์์ ํ ๋์์ด ๋์ง ์๋" ๊ฒฝ์ฐ ์ด ๋ฌธ์ (๊ธฐ๋ฅ ์์ฒญ ๋ฌด์)๊ฐ ์ฌ์ ํ ์กด์ฌํ๊ณ ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๊ฐ ์๋ ์ด์ ๋ฅผ ์ค๋ช ํ์ต๋๋ค.
๋ฌธ์์ด์ ํ์ฑํ๋ ๊ฒ ๋ณด๋ค ํจ์ฌ ๋ ์ค์ํฉ๋๋ค.
Docker์ Dockerfile์ ์๋ฐฑ๋ง ๋ช
์ ์ฌ๋๋ค์ด ์ฌ์ฉํฉ๋๋ค. API๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์ค์ํ ์ผ์
๋๋ค... ๊ธฐ๋ณธ ๊ตฌํ์ด "๋ฌธ์์ด ๊ตฌ๋ฌธ ๋ถ์"์ด ์๋๋ผ๋ ์ ์ ์ ์ธํ๋ฉด.
์ด์จ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ง์ ์ ์์ด ์์ผ๋ฉฐ ์ด๊ฒ์ ๋งค์ฐ ์ค๋๋๊ณ ๋ซํ ๋ฌธ์ ์ ๋๋ค.
Docker๊ฐ ์ด ์๋๋ฆฌ์ค์ ๋ํ ๊นจ๋ํ ์๋ฃจ์ ์ ์ฐพ์ง ๋ชปํ๋ค๋ฉด ์๋ง๋ ๊ทธ๊ฒ์ ์์๋ด๋ ๋๊ตฌ๋ก ๋์ฒด๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋๋ฃ ์ค ํ ๋ช ์ด ๋ค์ ํจํด์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐ๊ฒฌํ๋๋ฐ ์ด๋ ์ ์ ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ ์ ์์ต๋๋ค.
ARG from
FROM $from
... rest of dockerfile
๋๋ ๊ทธ๊ฒ์ ์ง์ ์๋ํ์ง ์์์ผ๋ฏ๋ก ์บ์ฑ๊ณผ ํจ๊ป ์๋ํ๋ ๋ฐฉ์ ๋ฑ๊ณผ ๊ฐ์ด ์ค์ ๋ก ์ด๋ป๊ฒ ์๋ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ค์ ๋ก ์ด๊ฒ์ ๋งค์ฐ ์ค์ํ ๋ฌธ์ ์ด๋ฉฐ ์ ๋๋ก ํด๊ฒฐ๋์ง ์์์ต๋๋ค. Docker๋งํผ ํฐ ํ์ฌ๊ฐ ์์ง ์ด๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ๋ค๋ ์ฌ์ค์ ๋๋์ต๋๋ค.
๋จ๋ 2์ผํธ... ์ ๋ ํ์ฌ Docker์ ๋ํด ๋ ๋ง์ด ๋ฐฐ์ฐ๊ณ ์์ผ๋ฉฐ INCLUDE์ ๊ฐ์ ๊ฒ์ด ๋งค์ฐ ์ ์ฉํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ์์ ๋ค์ค ์์ ์์ ๊ฐ ๋ง์์ ๋ค์๊ณ ๊ฐ๋ฅํ ๋ฌธ์ ์ ์ถฉ๋์ ๋ํ ์๊ฒฌ์ ๋ค๋ฃจ๊ณ ์ถ์์ต๋๋ค.
๋ค์ค ์์์ ์ง์ํ๋ ๋ชจ๋ ์ธ์ด์์ ์ด๋ ต์ง๋ง ์ถฉ๋์ด ๋ฐ์ํ๋ฉด Docker ํ์ผ ์์ฑ์๊ฐ ์ํ ์ค์ธ ์์ ์ ์ฌ๊ณ ํ๊ณ ๋ค์ ์์ํด์ผ ํฉ๋๋ค. Docker๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ธฐ๋ง ํ๊ณ ๋น๋์ ๋ฌธ์ ๊ฐ ์์์ ์ฆ๋ช ํ๋ ค๊ณ ํด์๋ ์ ๋ฉ๋๋ค.
@cosminonea
INCLUDE์ ๊ฐ์ ๊ฒ์ด ๋งค์ฐ ์ ์ฉํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
https://github.com/larytet/dockerfile-generator/ ์์ ๋งคํฌ๋ก์ ๋ํ ์ง์์ด ์์ต๋๋ค. "ํฌํจ"๋ ์ง์ํ ์ ์์ต๋๋ค.
๊ทธ๊ฒ์ ์์ ์ ๋์น๋ ๊ฒ์
๋๋ค. ๋ชฉํ๋ Dockerfile์ ํฌํจํ์ง ์๋ ๊ฒ์
๋๋ค.
์ ์. ๋ชฉํ๋ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ํฌํจํ๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์
๊ทธ๊ฒ์ ๋ด ๋จธ๋ฆฌ ๊ผญ๋๊ธฐ์์ ๋จ์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ํฐ๋ฌด๋์๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค.
ํ๋๋ผ์์
์ฐ๋ถํฌ/์ฐ๋ถํฌ ํฌํจ
๋ฐ๋น์/๋ฐ๋น์ ํฌํจ
ํฉ๋ฆฌ์ ์ผ๋ก ๋๋ ์ด๊ฒ์ด ํ๋๋ผ์ ์ด๋ฏธ์ง๋ก ์์๋ ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ /ubuntu ํด๋ ์๋์ ์ฐ๋ถํฌ์ฉ ์ด๋ฏธ์ง๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ถ๊ฐ
/debian ์๋์ ๋ฐ๋น์ ์ด๋ฏธ์ง.
์ด๊ฒ์ ๋ฌผ๋ก ํฐ๋ฌด๋์๋ ์ผ์
๋๋ค. ์ ๋ด๊ฐ ๋ง์ ์ด์ ์ฒด์ ๋ฅผ ํผํฉํ๊ณ ์ถ์ต๋๊น?
์์คํ
์ ํ๋์ ์ด๋ฏธ์ง๋ก? ๊ทธ๋ฌ๋ ๋ ์ ์ฉํ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ๋๋ผ์์
ํ๋ ์ค/ํ๋ ์ค ํฌํจ
commericalremover /plex/add-on/commericalremover ํฌํจ
์ด์ ์ด ๊ฒฝ์ฐ์ ๋ ์๋ฏธ๊ฐ ์์ต๋๋ค. ์ด๊ฒ๋ค์ด ๋ค๋ฅธ ์ด๋ฏธ์ง๋ผ๋ฉด
์๋ํ๋ ํน์ ๊ตฌ์ฑ ์์๊ฐ ์์ต๋๋ค. ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
๋ชจ๋์.
2018๋
8์ 8์ผ ์์์ผ 15:48 Arkady Miasnikov [email protected]
์ผ๋ค:
๋๋ INCLUDE์ ๊ฐ์ ๊ฒ์ ๋๋๋ค.
๋งคํฌ๋ก๋ฅผ ์ง์ํฉ๋๋ค.
https://github.com/larytet/dockerfile-generator/ "ํฌํจ"์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์ง์๋.โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/moby/moby/issues/3378#issuecomment-411529506 ๋๋ ์์๊ฑฐ
์ค๋ ๋
https://github.com/notifications/unsubscribe-auth/ADBcWAtBDEp_LXpW3HUkHd3Pw5IVAXvqks5uO0ChgaJpZM4BWkJ9
.
๋ง์ง๋ง ๊ฒ์ ์ด๋ฏธ ๊ฐ๋ฅํฉ๋๋ค. COPY --from
๋ ๋น๋ ๋จ๊ณ ๋๋ ์ด๋ฏธ์ง๋ฅผ ๋ชจ๋ ํ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
FROM busybox
COPY --from=alpine:latest / /
COPY --from=docker:latest /usr/local/bin/docker /usr/local/bin/
ํธ์งํ๋ค; ๋๋ ์ค์ ์๋ฅผ ๋ค๋ฉด;
FROM fedora
COPY --from=ubuntu:latest / /ubuntu/
COPY --from=debian:latest / /debian/
์ ํํ. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ "COPY
--from"์ ์๋ ์์ฒญ์ ์๋ฃํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์ ๋์ ์ผ๋ก
์ด ํฐ์ผ์์ ๋ด๊ฐ ๋ ์ด์ ์ฐพ๊ณ ์๋ ๊ฒ์ ์์ต๋๋ค.
ํฌํจ์ ์๋์ผ๋ก ๋ฆฌ๋ฒ ์ด์คํ๋ ๊ฒ๊ณผ ๊ฐ์ด ๋์ค์ ์ ๊ธฐ๋ ์์ด๋์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ข์ ๊ธฐ๋ฅ. ๊ทธ๋ฌ๋ ๊ทธ๋ค์ ์๋์ ์๊ตฌ๋ฅผ ๋ฐ์ด ๋์ต๋๋ค.
๋ฌธ์ ์ธ์ฌ,
์ฒญ๊ตฌ์
2018๋
8์ 9์ผ ๋ชฉ์์ผ 12:55 Sebastiaan van Stijn ์๋ฆผ @github.com
์ผ๋ค:
๋ง์ง๋ง ๊ฒ์ ์ด๋ฏธ ๊ฐ๋ฅํฉ๋๋ค. COPY --from ๋ ๋ค ํ์ฉ
์๋ฅผ ๋ค์ด ๋น๋ ๋จ๊ณ ๋๋ ์ด๋ฏธ์ง;๋น์ง๋ฐ์ค์์
๋ณต์ฌ --from= ์ํ์ธ:์ต์ //
๋ณต์ฌ --from= ๋์ปค:์ต์ /usr/local/bin/docker /usr/local/bin/โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/moby/moby/issues/3378#issuecomment-411824851 ๋๋ ์์๊ฑฐ
์ค๋ ๋
https://github.com/notifications/unsubscribe-auth/ADBcWPE738cs9xf3ZHSOaUd1foI1XVIQks5uPGmYgaJpZM4BWkJ9
.
@thaJeztah ์ด๋ฅผ ์ํด ๋ค๋จ๊ณ ๋น๋๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ฌ์ ํ ๊ฐ ์ด๋ฏธ์ง์์ ๋ณต์ฌํ ํ์ผ์
๋ฌผ๋ก Docker ์ด๋ฏธ์ง๋ฅผ ๋ณํฉํ๋ ๊ฒ์ ์ฌ์ด ์ผ์ด ์๋๋๋ค. ์์์ ์คํฌ๋ฆฝํธ๋ ๋น๋ ์ค์ ์คํํ ์ ์์ผ๋ฏ๋ก ๋น๋ ํ๋ก์ธ์ค๋ ์๋ ์ถฉ๋ ๊ฐ์ง์ ์ผ๋ฐ์ ์ธ ์๋์ ์ ํญํฉ๋๋ค. ์ ์ง ๋ฌธ์ ๋ ์๋
์ด๋ผ๊ณ ๋งํฉ๋๋ค! ๋น์ ์ด ํ ์ ์๋ ์ต์ ์ (๋น๋๊ฐ ํ ์ ์๋ ์ผ์ ํฌ๊ฒ ์ ํํ๋ ๊ฒ ์ธ์๋) ์ ํํ ์๋ฏธ๋ฅผ ์ ์ํ๋ ๊ฒ์
๋๋ค: ๋ง์ง๋ง FROM
/ INCLUDE
์ด๊ธด๋ค(์: ๊ฐ์ ํ์ผ์ "์ฐ๋" ๊ฒฝ์ฐ) ๋๋ ํ์ผ ์์คํ
์์ค ์ถฉ๋ ์ ์คํจ ๋๋ ....
๋ค๋ฅธ "๊ธฐ๋ณธ" ์ด๋ฏธ์ง(stretch vs ubuntu vs alpine vs ...)์ ๋ํด ๋๋๋ก ์ธ๊ธ๋ ๋ฌธ์ ์ด์ง๋ง _is_ ๊ฐ๋จํฉ๋๋ค. ์ด๋ฏธ์ง ์ข ์์ฑ์ DAG์๋ ๋จ์ผ ์์ค(ํ์ฌ ์ด๋ฏธ์ง)๋ฟ๋ง ์๋๋ผ ๋จ์ผ ์ฑํฌ๋ ์์ด์ผ ํฉ๋๋ค. ("๊ณ์ธต ๊ตฌ์กฐ"์ ์๋ ๋ชจ๋ ์ด๋ฏธ์ง์ ๊ณต์ "์์").
๊ถ๊ทน์ ์ผ๋ก, ๋ฌผ๋ก , ๋น์ ์ ์ฐ๋ ๊ธฐ ์์ ์ฐ๋ ๊ธฐ๋ฅผ ๋ฒ๋ฆฌ๊ฒ ๋ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ ์ ๋ง๋ก ๋ค๋ฅธ๊ฐ์?
FWIW, ๋ด ์ฌ์ฉ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
@reitzig ์ด๊ฒ์ ์ ์ผํ ์ต์ ์ด ์๋๋๋ค. ์ฌ๋ฐ๋ฅธ ์ต์ ์ ํฐ ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด INCLUDE๋ฅผ ์ ํํ๋ ๊ฒ์ ๋๋ค. INCLUDE๋ ์์ํ ์ ์์ต๋๋ค. ๊ฑฐ๊ธฐ๋. ๋จ์ํ. ์ฌ์ ํ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
์ด ๊ธฐ๋ฅ ์์ฒญ์ ์ธ๊ธฐ๊ฐ ์์ง๋ง Docker๋ Beer์์์ ๊ฐ์ด ๋ฌด๋ฃ์ด์ง๋ง Freedom์์์ฒ๋ผ ๊ฒฐ์ฝ ๋ฌด๋ฃ๋ ์๋๋๋ค.
@rjurney 18.06 ์ดํ ๋น๋ํท ์ง์์ ํฌํจํ์ฌ ์ฌ์ฉ์๋ ๋น๋์ ๋ํ ์์ฒด ํ๋ก ํธ์๋ ํ์๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ๋ง์ ์๋ก์ด ๊ธฐ๋ฅ(์ด๋ณด์๋ฅผ ์ํ ๋น๋ฐ ์ง์)์ ํฌํจํ๋ ๊ณต์(Docker Inc) ์คํ์ฉ Dockerfile ํ์๊ฐ ์ด๋ฏธ ์์ต๋๋ค.
๋ฌผ๋ก ์ฌ์ฉ์ ์ง์ Dockerfile ํ๋ก ํธ์๋์ ๊ณ ์ ํ "INCLUDE" ๋์์ ์ถ๊ฐํ๊ฑฐ๋ Dockerfile์ด ์๋ ์์ ํ ๋ค๋ฅธ ์์ ์ ์ํํ ์๋ ์์ต๋๋ค(buidpack์ ๋ํ ์๊ฐ ์์).
์ปค์คํ
ํ๋ก ํธ์๋๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด Docker๊ฐ ์ฒ๋ฆฌํ ์ ์๋ ์ด๋ฏธ์ง๋ฅผ ๊ฐ๋ฆฌํค๋ฉด ๋ฉ๋๋ค. Dockerfile(๋๋ ๋ฌด์์ด๋ ์ง)์ ์ฒซ ๋ฒ์งธ ์ค์ ์ฃผ์์ผ๋ก ์ด ์์
์ ์ํํฉ๋๋ค. syntax = myCustomFrontendImage
์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ:
https://docs.docker.com/develop/develop-images/build_enhancements/#overriding -default-frontends
๋น๋ํท์ด ํ์ฑํ๋๋ฉด Docker๋ ํ์ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ํ๋ ๋ชจ๋ ๊ฒ์ ๋น๋ํ ์ ์์ต๋๋ค(Dockerfile ํ์์ผ ํ์๋ ์์).
์ด ๊ธฐ๋ฅ ์์ฒญ์ ์ธ๊ธฐ๊ฐ ์์ง๋ง Docker๋ Beer์์์ ๊ฐ์ด ๋ฌด๋ฃ์ด์ง๋ง Freedom์์์ฒ๋ผ ๊ฒฐ์ฝ ๋ฌด๋ฃ๋ ์๋๋๋ค.
๊ทธ ๋ฉ๋ชจ๊ฐ ์ฃผ์ ๊ฐ ์๋ ๊ฒ์ฒ๋ผ, ๋๋ ๋น์ ์ด ํ๋ ธ๋ค๋ ์ ์ ์ฃผ๋ชฉํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. Docker์ Apache ๋ผ์ด์ ์ค ๋๋ถ์ ๋ชจ๋ ์ฌ๋์ ์ฌ๊ธฐ์์ ๊ฐ๋ฐ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ Dockerfile์ ๋ํ ์์ฒด ์ธํฐํ๋ฆฌํฐ๋ฅผ ํฌํฌํ๊ณ ๊ฐ๋ฐํ ์ ์์ต๋๋ค. ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด๋ฉด ๊ฒฐ๊ณผ ์ด๋ฏธ์ง๊ฐ ๊ธฐ์กด Docker ๋ฐํ์/๋๊ตฌ์ ํธํ๋ฉ๋๋ค.
๋ฌผ๋ก Docker ํ๋ก์ ํธ์ ์ ์ง ๊ด๋ฆฌ์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๋ฌํ ๊ธฐ๋ฅ์ ํฌํฌ(์๋ณธ?)์ ๋ณํฉํ์ง ์์ ์์ ๊ฐ ์์ต๋๋ค.
@reitzig ๊ทธ๊ฒ์ ์ค์ ๋ก ์์ ์ํํธ์จ์ด๊ฐ ๋ฌด์์ธ์ง ์ธ๊ธํ์ง ์๊ณ ๋ถ๋ช ํ ์๋ฏธ์๋
๋๋ ๊ทธ๊ฒ์ด ์ง๊ธ Apache ๋ผ์ด์ผ์ค์ธ์ง ๋ชฐ๋์ต๋๋ค. ๋ฐ์ธ์ ๋ํด ์ฌ๊ณผ๋๋ฆฌ๋ฉฐ
์ด๊ฒ์ด ํ๋ฅญํ๋ค๊ณ ์๊ฐํ์ญ์์ค!
๋ฌ์
์ ๋ @rjurney http://twitter.com/rjurney
๋ฌ์
. [email protected] LI http://linkedin.com/in/russelljurney FB
http://facebook.com/jurney datasyndrome.com
2019๋ 1์ 16์ผ ์์์ผ ์ค์ 4์ 17๋ถ์ Raphael R. [email protected]์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ด ๊ธฐ๋ฅ ์์ฒญ์ ์ธ๊ธฐ๊ฐ ์์ง๋ง Docker๋ Beer์์์ ๊ฐ์ด ๋ฌด๋ฃ์ด์ง๋ง
๋ชจ๋ ๊ฒ์ ์์ ์์์ ๊ฐ์ด ์์ ๋ฅผ ์๋ฏธํฉ๋๋ค.๊ทธ ๋ฉ๋ชจ๊ฐ ์ฃผ์ ๊ฐ ์๋ ๊ฒ์ฒ๋ผ, ๋๋ ๋น์ ์ด
์๋ชป๋. Docker์ Apache ๋ผ์ด์ ์ค ๋๋ถ์ ๋ชจ๋ ์ฌ๋์ด
์ ๊ณตํ๋ Dockerfiles์ ๋ํ ์์ฒด ์ธํฐํ๋ฆฌํฐ๋ฅผ ํฌํฌํ๊ณ ๊ฐ๋ฐํ์ญ์์ค.
์ฌ๊ธฐ์์ ๊ฐ๋ฐ๋ ๊ธฐ๋ฅ. ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด๋ฉด ๊ฒฐ๊ณผ ์ด๋ฏธ์ง๊ฐ
๊ธฐ์กด Docker ๋ฐํ์/๋๊ตฌ์ ํธํ๋ฉ๋๋ค.
๋ฌผ๋ก Docker ํ๋ก์ ํธ์ ์ ์ง ๊ด๋ฆฌ์๋ ์ ์ฌํ๊ฒ ๋ฌด๋ฃ์ ๋๋ค.
์ด๋ฌํ ๊ธฐ๋ฅ์ ํฌํฌ(์๋ณธ?)์ ๋ณํฉํฉ๋๋ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/moby/moby/issues/3378#issuecomment-454758482 ๋๋ ์์๊ฑฐ
์ค๋ ๋
https://github.com/notifications/unsubscribe-auth/AACkpdj_YO76ge79bm4G8FBmhOdbjhO9ks5vDxhvgaJpZM4BWkJ9
.
์ฃ์กํฉ๋๋ค, ์ ์ ์ ๋ชป ์์ ์ค์๋ฅผ ํ์ต๋๋ค. ๋ด ์๊ฒฌ์ด ์ ์์ต๋๋ค.
๋น์ด์์์ฒ๋ผ ๋ฌด๋ฃ๋ Apache๋ฅผ ์๋ฏธํฉ๋๋ค. ์์ ์์์ ๊ฐ์ด ์์ ๋ ์ปค๋ฎค๋ํฐ ํต์ ๋ฅผ ์๋ฏธํฉ๋๋ค.
Apache ํ๋ก์ ํธ ๋๋ ๋ค๋ฅธ ํํ์ ๊ฑฐ๋ฒ๋์ค.
๋ฌ์
์ ๋ @rjurney http://twitter.com/rjurney
๋ฌ์
. [email protected] LI http://linkedin.com/in/russelljurney FB
http://facebook.com/jurney datasyndrome.com
2019๋
1์ 16์ผ ์์์ผ ์คํ 12:32 Russell Jurney [email protected]
์ผ๋ค:
๋๋ ๊ทธ๊ฒ์ด ์ง๊ธ Apache ๋ผ์ด์ผ์ค์ธ์ง ๋ชฐ๋์ต๋๋ค. ๋ฐ์ธ์ ๋ํด ์ฌ๊ณผ๋๋ฆฌ๋ฉฐ
์ด๊ฒ์ด ํ๋ฅญํ๋ค๊ณ ์๊ฐํ์ญ์์ค!๋ฌ์ ์ ๋ @rjurney http://twitter.com/rjurney
๋ฌ์ . [email protected] LI http://linkedin.com/in/russelljurney FB
http://facebook.com/jurney datasyndrome.com2019๋ 1์ 16์ผ ์์์ผ ์ค์ 4:17 Raphael R. [email protected]
์ผ๋ค:์ด ๊ธฐ๋ฅ ์์ฒญ์ ์ธ๊ธฐ๊ฐ ์์ง๋ง Docker๋ Beer์์์ ๊ฐ์ด ๋ฌด๋ฃ์ด์ง๋ง
๋ชจ๋ ๊ฒ์ ์์ ์์์ ๊ฐ์ด ์์ ๋ฅผ ์๋ฏธํฉ๋๋ค.๊ทธ ๋ฉ๋ชจ๊ฐ ์ฃผ์ ๊ฐ ์๋ ๊ฒ์ฒ๋ผ, ๋๋ ๋น์ ์ด
์๋ชป๋. Docker์ Apache ๋ผ์ด์ ์ค ๋๋ถ์ ๋ชจ๋ ์ฌ๋์ด
์ ๊ณตํ๋ Dockerfiles์ ๋ํ ์์ฒด ์ธํฐํ๋ฆฌํฐ๋ฅผ ํฌํฌํ๊ณ ๊ฐ๋ฐํ์ญ์์ค.
์ฌ๊ธฐ์์ ๊ฐ๋ฐ๋ ๊ธฐ๋ฅ. ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด๋ฉด ๊ฒฐ๊ณผ ์ด๋ฏธ์ง๊ฐ
๊ธฐ์กด Docker ๋ฐํ์/๋๊ตฌ์ ํธํ๋ฉ๋๋ค.
๋ฌผ๋ก Docker ํ๋ก์ ํธ์ ์ ์ง ๊ด๋ฆฌ์๋ ์ ์ฌํ๊ฒ ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ธฐ๋ฅ์ ํฌํฌ(์๋ณธ?)์ ๋ณํฉํ์ง ๋ง์ญ์์ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/moby/moby/issues/3378#issuecomment-454758482 ๋๋ ์์๊ฑฐ
์ค๋ ๋
https://github.com/notifications/unsubscribe-auth/AACkpdj_YO76ge79bm4G8FBmhOdbjhO9ks5vDxhvgaJpZM4BWkJ9
.
๋น์ด์์์ฒ๋ผ ๋ฌด๋ฃ๋ Apache๋ฅผ ์๋ฏธํฉ๋๋ค.
๋์ํ์ง ์๋๋ค. ํ๋ฆฌ์จ์ด๋ ๋ ์ ์ํํธ์จ์ด์ผ ์ ์์ต๋๋ค.
์์ ์์์ ๊ฐ์ด ์์ ๋ ์ปค๋ฎค๋ํฐ ํต์ ๋ฅผ ์๋ฏธํฉ๋๋ค.
์ปค๋ฎค๋ํฐ ์ปจํธ๋กค์ด๋? ์ฌ๋จ์์ ์ด์ํ๋ ํ๋ก์ ํธ? ๊ทธ๋ ๋ค๋ฉด VS Code, Atom ํธ์ง๊ธฐ ๋ฐ Ubuntu๋ฅผ ๋น์์ ์ํํธ์จ์ด๋ก ๊ฐ์ฃผํ์๊ฒ ์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด ๊ทํ์ ์ ์๋ FSF, EFF ๋ฐ ๊ธฐํ ์ฌ๋ฌ ์กฐ์ง์์ ์ ์ํ ์ ์์ ํฌ๊ฒ ๋ค๋ฆ ๋๋ค.
๋๋ Docker Inc๊ฐ ์ด ๋ฌธ์ ์ ๋ํด ์ปค๋ฎค๋ํฐ์ ์ ๊ทน์ ์ผ๋ก ๋ ผ์ํ์ง ์๋๋ค๋ ๋ฐ ๋์ํ์ง๋ง ์ด๊ฒ์ "Free as in Freedom"๊ณผ ์๋ฌด ๊ด๋ จ์ด ์์ต๋๋ค.
์ฃ์กํฉ๋๋ค. ์ด์ ํธ๋์ปค์์ ์ด๋ฐ ์ข ๋ฅ์ ํ ๋ก ์ ํ์ง ๋ง์๋ค.
Docker Inc๊ฐ ์ด ๋ฌธ์ ์ ๋ํด ์ปค๋ฎค๋ํฐ์ ์ ๊ทน์ ์ผ๋ก ๋ ผ์ํ์ง ์๋๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.
docker build
๋ฅผ ํตํด ์ํ๋ ๋ชจ๋ ๋น๋ ํ์์ ์ง์ํ ์ ์์ต๋๋ค. "๊ณต์" Dockerfile ํ์์ ์ด ์ต์
์ ์ง์ํ์ง ์์ง๋ง docker build
์ด ์ต์
์ ์ฌ์ฉํ ์ ์๋ค๋ ์๋ฏธ๋ ์๋๋๋ค.
docker build
์ ํจ๊ป ์๋ํ๋ ์ฌ์ฉ์ ์ ์ ํ๋ก ํธ์๋๋ฅผ ๋น๋ํ๋ ์์ ๋ก https://matt-rickard.com/building-a-new-dockerfile-frontend/ ๋ฅผ ํ์ธํ์ญ์์ค.
์ด ํ๋ก ํธ์๋๋ Dockerfile ํ์๊ณผ ์์ ํ ๋ค๋ฅธ ์์
์ ์ํํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์ด์ง๋ง ๋ฐ๋์ ํ์ํ ๊ฒ์ ์๋๋๋ค. ๊ธฐ์กด Dockerfile ํ์์ ์ฌ์ฉํ๊ณ ์ํ๋ ๊ฒฝ์ฐ ๊ณ ์ ํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๊ณต์ Dockerfile ํ์์ ๋ฌด์ธ๊ฐ๋ฅผ ์ถ๊ฐํ๋ ํ.... ์ ์์ ์ธ์ ๋ ํ์ ์
๋๋ค. ํ์์ .
๊ทธ๋ฌ๋ ๋ชจ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ฏธ๋์ ์ํํ ์ ์๋ ์์
์ ์ ํํ๋ ๊ฒ์ ํฌํจํ์ฌ ์ ์ง ๊ด๋ฆฌ์ ๋ํ ์๋ก์ด ๋ถ๋ด์ ์๋ฏธํ๋ค๋ ์ ์ ๋ช
์ฌํ์ญ์์ค.
์ฌ๋ฌ Dockerfile์ ๊ฒฐํฉํ๋ ๋ง์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์ค์ ๋ก Dockerfile์ ์๋ก์ด ๊ธฐ๋ฅ์ผ๋ก ํด๊ฒฐํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํนํ ์์์ ์ด๋ฏธ์ง์์ COPY --from
๋ฐ RUN --mount
์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ๊ฐ์์ INCLUDE๊ฐ @#$%๋ฅผ ์ ๊ณตํ ํ์ ์์ด ๋จ์ํ ์ธ๋ถ ์ ๋ณด๋ก ์ถ๊ฐ ์ปจํ ์ด๋๋ฅผ ์์ฑํ ์ ์๋ค๋ฉด ๊ตฌ์ฑ ๊ฐ๋ฅํ ์ปจํ ์ด๋์ ์์์ ์ด๊ณ ์๋ฑํ ํ๋งค ํผ์น๋ฅผ ๋๋ฌ์ผ ์ข์ ๊ฐ์ ํฌ๊ฒ ์ค์ผ ์ ์์ต๋๋ค. ์ ๋ ์ ๋ง๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋์๊ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์ถ์ต๋๋ค. ๋์ ๋ถ์๊ธฐ์ ๋ํด ๋ฏธ์ํ์ง๋ง ๋๋ docker/container noob์ด๊ณ ๋ค๋ฅธ ๋ง์ ํฌ์คํฐ๊ฐ ์ด๋ฏธ ํํํ ๊ฒ๊ณผ ๊ฐ์ ํผ๋์ ๋น ์ก์ต๋๋ค.
/--- python:3.8.3-alpine3.12 ---\
/ \
alpine:3.12.0 custom image (with both python and rust)
\ /
\----- rust:1.44-alpine3.12 ----/
_๋ ์ด๋ฏธ์ง ๋ชจ๋ ๋์ผํ ์ด๋ฏธ์ง์ ์์์ด๋ผ๋ ์ ์ ์ ์ํ์ญ์์ค. ์ด๊ฒ์ด ํต์ฌ์ ๋๋ค!_
FROM alpine:3.12.0
INCLUDE rust:1.44-alpine3.12
INCLUDE python:3.8.3-alpine3.12
_"COPY --from image" ๋ช ๋ น(๋ค๋จ๊ณ ๋น๋)์ ์ฌ์ฉํ ๋์ ๋น๊ตํ ๋ ๊ตฌํ ์ธ๋ถ ์ ๋ณด(๋ณต์ฌํ ํ์ผ/ํ๊ฒฝ ๋ณ์)์ ๋ํด ์๊ฐํ ํ์๊ฐ ์์ต๋๋ค._
FROM alpine:3.12.0
# INCLUDE rust:1.44-alpine3.12
COPY --from=rust:1.44-alpine3.12 / /
ENV RUSTUP_HOME=/usr/local/rustup \
CARGO_HOME=/usr/local/cargo \
PATH=/usr/local/cargo/bin:$PATH \
RUST_VERSION=1.44.1
# INCLUDE python:3.8.3-alpine3.12
COPY --from=python:3.8.3-alpine3.12 / /
ENV PATH /usr/local/bin:$PATH
ENV LANG C.UTF-8
ENV GPG_KEY E3FF2839C048B25C084DEBE9B26995E310250568
ENV PYTHON_VERSION 3.8.3
ENV PYTHON_PIP_VERSION 20.1.1
ENV PYTHON_GET_PIP_URL https://github.com/pypa/get-pip/raw/eff16c878c7fd6b688b9b4c4267695cf1a0bf01b/get-pip.py
ENV PYTHON_GET_PIP_SHA256 b3153ec0cf7b7bbf9556932aa37e4981c35dc2a2c501d70d91d2795aa532be79
_ENV ์ง์นจ์ ์ด ์ด๋ฏธ์ง์ Dockerfile์์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์์ต๋๋ค._
์ด๊ฒ์ ๋ํ ํจ์ฌ ๋ ๋์ ์ปจํ ์ด๋ ์ฌ์ฌ์ฉ์ ํ์ฉํ๊ณ , ์ปดํ์ผํ๊ฑฐ๋ ๋น๋ํ๋ ๋ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์๋ ๊ฒ๋ค์ ํจ๊ป ๋์ง๋ ๊ฒ์ ๋งค์ฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค!
์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ํ๋ก๊ทธ๋จ์ ํ๋ซํผ/๊ธฐ๋ณธ ์ด๋ฏธ์ง ๋ฒ์ ๋น ํ ๋ฒ๋ง ์ปดํ์ผํ๋ฉด ๋๋ฉฐ, ์ง์ ๊ตฌํํ๋ ๊ฒ๋ณด๋ค ์ฌ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ฝ์ต๋๋ค. ์ข์/๋ฒ์ฉ ํจํค์ง ๊ด๋ฆฌ์๊ฐ ์๊ธฐ ๋๋ฌธ์ C++์์ "ํ ์ด ๋ค์ ๊ตฌํ๋" ํ์๋ฅผ ์๊ฐํด ๋ณด์ญ์์ค. Docker์ ๋ํด ์ ์ฌํ ์ํฉ์ด ๋ฐ์ํ๊ธฐ๋ฅผ ์ํ์ญ๋๊น?
@bergkvist , https://github.com/moby/moby/issues/3378#issuecomment -381449355 ๋ฐ https://github.com/moby/moby/issues/3378#issuecomment -381641675๋ฅผ ์ฐธ์กฐ ํ์ธ์ .
๋น์ ์ด ์ ์ํ ์๋ฃจ์ ์ค ์ด๋ ๊ฒ๋ ๋ค์ด์ด๊ทธ๋จ๊ณผ ์ผ์นํ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋์ ๋ค์์ ์ํํ๊ณ ์์ต๋๋ค.
/--- python:3.8.3-alpine3.12 ---\
/ \
alpine:3.12.0 \
\ \
\----- rust:1.44-alpine3.12 --------\ custom image
๊ทธ๋์, ๋ น์ ์์ ๋ ๋ชจ๋ ํ์ผ์ ํ์ด์ฌ์ผ๋ก ๋ฎ์ด ์๋๋ค. ์๋ก๋ฅผ ๋ณต์ฌํ์ง ์๊ณ ๊ฒฐํฉํ๋ ค๋ฉด ๋ณํฉ์ด ํ์ํฉ๋๋ค.
@eine ์, ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ํ์ผ์ ๋ฎ์ด์๋๋ค. ๊ทธ๊ฑด ์ฌ์ค์ด์ผ. ๋ฐ๋ผ์ ๋์นญ์ธ ๊ทธ๋ฆผ์ (๊ด๋ จ) ํ์ผ์ด ๊ฒน์น์ง ์๋ ํน์ํ ๊ฒฝ์ฐ์ ๋๋ค. ๊ทธ๋ฆผ์ ๋ฒ์ ์ด ๋ ์ผ๋ฐ์ ์ ๋๋ค.
๋ ์ด๋ฏธ์ง๊ฐ ๋์ผํ ์ ํํ ์ด๋ฏธ์ง์์ ์์๋๋๋ก ํ๋ ๊ฒ์ ๋ํ ์ ์์ ์ ์ค์ํ ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ํฌ๋ฐํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
ํจํค์ง ๊ด๋ฆฌ์ ํ์ผ๊ณผ ๊ด๋ จ๋ ์ถฉ๋์ด ๋ฐ์ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ ์ด๋ฏธ์ง๊ฐ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๊ฒ์ ์ค์นํ ๊ฒฝ์ฐ. ์ผ์ข ์ ํน๋ณํ ๊ฒฝ์ฐ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๊ฒ๊ณผ ๊ฐ์ ๋ค๋ฅธ "๊ณตํต ์ถฉ๋"์ด ์๋์ง ํ์คํ์ง ์์ต๋๋ค.
๋ ํ์ผ์ ๋ณํฉํ๋ ๊ฒ์ ๊ฐ๋จํ์ง ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์๋ ํ๋ช ํ๊ฒ ์ฐ๋ ค๊ณ ํ๋ ๊ฒ๋ณด๋ค ๊ทธ๋ฅ ๋ฎ์ด์ฐ๋ ๊ฒ์ด ๋ ๋์ ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ์ด๋ ์ผ์ด ์๋ํ์ง ์์ ๋ ๋๋ฒ๊ทธํ๋ ๊ฒ์ด ๋ ์ฝ์ต๋๋ค.
4์ผ ์ ์ ์ฌ๊ธฐ์ ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ Golang์ ๋ฐฐ์ฐ๊ณ moby/buildkit ์ฝ๋์ ํ๋ก ํธ์๋ ์ฝ๋๋ฅผ ์ดํด๋ณด๊ธฐ๋ก ํ์ต๋๋ค.
#syntax=bergkvist/includeimage
FROM alpine:3.12.0
INCLUDE rust:1.44-alpine3.12
INCLUDE python:3.8.3-alpine3.12
์ฌ์ฉ์ ์ ์ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ ค๋ฉด ๋น๋ํ ๋ DOCKER_BUILDKIT=1์ ์ค์ ํด์ผ ํฉ๋๋ค.
DOCKER_BUILDKIT=1 docker build -t myimage .
์ฝ๋๋ https://github.com/bergkvist/includeimage์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Docker Hub์ ์ด๋ฏธ์ง: https://hub.docker.com/r/bergkvist/includeimage
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
genericA --> specificA
์ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ ์ ์์ง๋ง ๋ค์๊ณผ ๊ฐ์ ์์ ์ ์ํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น??