https://github.com/docker/docker/issues/3156 ์ @cpuguy83 ์ด ์ ์ํ ๋๋ก
๋ค์์ ๋น๋ ์ ์ ์ฐํ -v ์ต์
์ ์ฌ์ฉ ์ฌ๋ก์
๋๋ค.
Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ์ ์ค์นํด์ผ ํฉ๋๋ค. DB์ฉ 1๊ฐ์ ์ค์นํด์ผ ํ๋ ์ฑ์ฉ 1๊ฐ(์คํค๋ง, ๊ฐ์ฒด, ์ ์ ๋ฐ์ดํฐ, ์๊ฒฉ ์ฆ๋ช
๋ฑ)์ ๋ tarball์ ๋ชจ๋ ํฌํจ๋์ด ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ ์ฒด ์๋ฃจ์
์ ์ฌ๋ฌ ์
ธ ๋ณ์๋ฅผ ์ฒ๋ฆฌํ๊ณ ๊ทธ์ ๋ฐ๋ผ OS ์๊ฒฉ ์ฆ๋ช
๋ฐ ๊ธฐํ ์ฌํญ์ ์กฐ์ ํ๋ ์
ธ ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ์คํ๋ฉ๋๋ค.
์์ tarball์ ํญ๋ฐ์ํค๋ฉด(๋๋ Dockerfile ADD ์ง์๋ฌธ์ ์ฌ์ฉํ์ฌ) ์ ์ฒด๊ฐ ์ฝ 1.5GB(!)๊น์ง ํฝ์ฐฝํฉ๋๋ค. ์์ํ ์ ์๋ ๊ฒ์ฒ๋ผ ์ด์์ ์ด์ง ์์ต๋๋ค.
์ด '-v /distrib/ready2installApp:/distrib' ์ง์๋ฌธ์ด ์ฌ์ ํ ๊ฐ๋ฅํ๋๋ก ํ๊ณ ์ถ์ต๋๋ค(ํ์ฌ Dockerfile์ ์์).
ํ์ง๋ง
Dockerfile ๋์์ ์คํํ ์ ์๋ --unmount-volume ์ต์
์ด ์์ต๋๊น?
๋๋
ํ์ฌ Dockerfile์์ Volume์ด ์๋ํ๋ ๋ฐฉ์์ ๊ฐ์ํ ๋ ์ฌ๋๋ค์ด ์ค์นํ๋ ๋์ ์ฌ์ฉํ๋ ์์ ๋ณผ๋ฅจ์ ๋ํ ์๋ก์ด Dockerfile ์ง์๋ฌธ์ด ํ์ํ ๊น์? @fatherlinux ์์ ์ ๊ณตํ Puppet ์์ ๊ฐ ๋น์ทํ ์ค์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค...
๋๋
์ฌ๋ฌ๋ถ์ด ์๊ฐํ ์ ์๋ ๋ชจ๋ ๊ฒ.
๋ชฉํ๋ ๋ฐฐํฌ๋ ์ฑ ๋๋ ์๋น์ค์ ์ธ๋ชจ์๋ ๋ชจ๋ ๋ฌด๊ฒ๋ฅผ ์ง์ด์ ธ์ผ ํ๋ ๊ฒ์ ํผํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ ์์ค์ @install-time์ ํ์ํฉ๋๋ค. ๋ชจ๋ ์ฌ๋์ด ๊ณต์ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๊ฐ๋จํ "yum ์ค์น"๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋๋๋ค. :)
๋งค์ฐ ๊ฐ์ฌํฉ๋๋ค
๋น์ทํ ์๋ฃจ์ ์ ์ฐพ๊ณ ์์ต๋๋ค.
์ต๊ทผ์ ๋ด๊ฐ ์ผํ๋ ๊ธฐ์ ์ SSL ๊ฒ์ฌ๋ฅผ ํตํด Zscaler ํ๋ก์๋ฅผ ํ์ฑํํ์ต๋๋ค. ์ด๋ ์ธ์ฆ์๊ฐ ์ค์น๋์ด ์๊ณ ๋น๋ ์ค์ ์ผ๋ถ ํ๊ฒฝ ๋ณ์๊ฐ ์ค์ ๋์ด ์์์ ์๋ฏธํฉ๋๋ค.
์์ ํด๊ฒฐ์ฑ ์ ์ธ์ฆ์์ ํ๊ฒฝ ๋ณ์๊ฐ ์ค์ ๋ ์ Dockerfile์ ๋ง๋๋ ๊ฒ์ด์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฅ๊ธฐ์ ์ผ๋ก ๋ณผ ๋ ์ด๋ ํฉ๋ฆฌ์ ์ด์ง ์์ ๋ณด์ ๋๋ค.
๊ทธ๋์ ๋ด ์ฒซ ๋ฒ์งธ ์๊ฐ์ HTTP ๋ฐ HTTPS๋ก ํฌ๋ช ํ๋ก์๋ฅผ ์ค์ ํ์ง๋ง ๋ค์ ๋น๋ํ๋ ๋์ ์ธ์ฆ์๋ฅผ ์ ๋ฌํด์ผ ํฉ๋๋ค.
์ด์์ ์ธ ์๋๋ฆฌ์ค๋ ๋์ผํ Dockerfile์ ์ฌ์ฉํ์ฌ ๋ฉํฑ, ๊ฐ์ ๋ฐ ๊ธฐ์ ์์ ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ถํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
# Enterprise
$ docker build -v /etc/ssl:/etc/ssl -t myimage .
# Home
$ docker build -t myimage .
ASP.Net 5 ํจํค์ง ๊ด๋ฆฌ์ ์ ์ํด ๋ค์ด๋ก๋/์ ๋ฐ์ดํธ๋๋ ์ด ๊ธฐ๋ฅ์ ๋ํ ์ฝ๊ฐ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. ํจํค์ง ๊ด๋ฆฌ์๋ ์์ฒด ์บ์ ํด๋๋ฅผ ๊ด๋ฆฌํ๋ฏ๋ก ๊ถ๊ทน์ ์ผ๋ก ๋น๋ ๊ฐ์ ์ฌ์ฌ์ฉํ ์ ์๋ ํด๋๋ง ์์ผ๋ฉด ๋ฉ๋๋ค.
์ฆ:
docker build -v /home/dokku/cache/dnx/packages:/opt/dnx/packages -t "dokku/aspnettest" .
@yngndrw ๋น์ ์ด ์ ์ํ ๊ฒ์ ๋์๊ฒ๋ ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค. ์ฆ, ์ปจํ ์ด๋์ ์ค์น๋์๊ธฐ ๋๋ฌธ์ ๋ฐํ์์๋ ํ์ํ์ง ์์ ์ถ๊ฐ ๋ฆฌ์์ค๋ฅผ ๋น๋ ์ ๋ง์ดํธํด์ผ ํฉ๋๋ค.
FWIW ์ด ํ์ด์ง์ ์ด๋๊ฐ์์ ๋๊ตฐ๊ฐ๊ฐ "์ ์ฌํ ํธ์คํธ ์์คํ
์์ ์ปดํ์ผ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ค์ ์ปจํ
์ด๋์ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ํฐํฉํธ ๋๋ exe๋ฅผ ์ค์นํ์ญ์์ค"๋ผ๋ ๋ผ์ธ์ ๋ฐ๋ผ ๋ฌด์ธ๊ฐ๋ฅผ ๋งํ๋ ๊ฒ์ ๋ณด์์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ด ๊ทธ๋ ๊ฒ ๋จ์ํ ์ฌ๋์ด ์๋๋ผ๋ ๊ฒ์ด ๋๋ ต๋ค. ๋๋๋ก /usr/bin์ ์ค์นํด์ผ ํ์ง๋ง ์ผ๋ถ ๊ตฌ์ฑ ํ์ผ๋ ํธ์งํด์ผ ํฉ๋๋ค. ์คํ ์ค์ธ OS, ์กฐ์ ํด์ผ ํ๋ ์ปค๋ ๋งค๊ฐ๋ณ์, ๋ณ์์ ๋ฐ๋ผ ์์ฑํด์ผ ํ๋ ํ์ผ ๋๋ ๋งค๋ํ์คํ ๋น๋ ํ์ผ์ ํ์ธํฉ๋๋ค. ์ปดํ์ผ๋ ์ ํ์ ๋จ์ํ ๋ณต์ฌ๋ณธ์ผ๋ก ๋ง์กฑํ์ง ๋ชปํ๋ ๋ง์ ์ข
์์ฑ์ด ์์ต๋๋ค.
๋ฌธ์ ๋ฅผ ์ด โโ๋ ๋งํ ๋ด์ฉ์ ๋ค์ ์ค๋ช
ํฉ๋๋ค. ๋งค๋ํ์คํธ ์ ์ธ ํ์ผ๊ณผ ํด๋น ํ๋ก์ธ์ค์ ์ํฐํฉํธ์ ๋ฐํ์ ๊ฐ์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ฝ๋๋ก์์ ์ธํ๋ผ์ ๋ ๋์๊ฐ ๋ถ๋ณ์ ์ธํ๋ผ๋ฅผ ์ง์ ์ผ๋ก ๋ฏฟ๋๋ค๋ฉด, ๋์ปค ์์ฒด๊ฐ ๋์ฑ ์ด์ง๋๊ณ ์๊ณ ์ ๋ ๊ทธ๊ฒ์ ์ข์ํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด๊ฒ์ IMO๋ก ์ฌ๊ฐํ๊ฒ ๊ณ ๋ ค๋์ด์ผ ํฉ๋๋ค(์ฌ๊ธฐ์ ํจ๊ป ํฌ์คํธ 1์ ํฝ์ฐฝ ์ฐธ์กฐ)
๋ค์ ๊ฐ์ฌํฉ๋๋ค
์ ๋ง ํฅ๋ฏธ๋ก์ด ๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ ์ํํธ์จ์ด ์ ๊ทธ๋ ์ด๋์ ๋๋ค. FreeIPA์ ๋ง์ฐฌ๊ฐ์ง๋ก ํ๋ก๋์ ๋ฐ์ดํฐ์ ๋ณต์ฌ๋ณธ์ผ๋ก ์ค์ ๋ก ํ ์คํธํ์ฌ ๋ค๋ฅธ ๋ชจ๋ ๊ตฌ์ฑ ์์๊ฐ ์์ ํ ์ ๊ทธ๋ ์ด๋๋ ์ ์๋์ง ํ์ธํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ฌ์ ํ "๋น๋" ํ๊ฒฝ์์ ์ ๊ทธ๋ ์ด๋๋ฅผ ์ํํ๋ ค๊ณ ํฉ๋๋ค. ์๋ก์ด ์ ๊ทธ๋ ์ด๋ ๋ฒ์ ์ ์ปจํ ์ด๋๋ฅผ ํ๋ก๋์ ์ผ๋ก ์ด๋ํ ๋ ์ ๊ทธ๋ ์ด๋๋ฅผ ์ํํ ์ ํํ ๋ฐ์ดํฐ๋ฅผ ๋ง์ด๋ํ ์ ์๋๋ก ๋ฐ์ดํฐ์ ํ๋ก๋์ ๋ณต์ฌ๋ณธ์ด ๋ค๋ฅธ ์์น์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค.
๋ ๋ค๋ฅธ ์๋ก๋ ์คํค๋ง๋ฅผ ์์ฃผ ๋ณ๊ฒฝํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ Oracle์์ ๋ฒ์ 5.6(IIRC)์ Postgresql๋ก ๋ณ๊ฒฝํ๋ Satellite/Spacewalk๊ฐ ์์ต๋๋ค.
ํนํ ๋ถ์ฐ/๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋ํ๋ ๋น๋์์ ์ํํธ์จ์ด ์ ๊ทธ๋ ์ด๋๋ฅผ ์ํํ๋ ๋์ ์ผ์์ ์ผ๋ก ๋ฐ์ดํฐ์ ์ก์ธ์คํด์ผ ํ๋ ๋ง์ ์๋๋ฆฌ์ค๊ฐ ์์ต๋๋ค....
๋ณธ์ง์ ์ผ๋ก ์ ๋ ์ด์ -v bind ๋ง์ดํธ๋ก ์ผ๋ฐ ์ปจํ ์ด๋๋ฅผ ์คํํ ๋ค์ "๋์ปค ์ปค๋ฐ"์ ์ํํ์ฌ ์๋ ์ ๊ทธ๋ ์ด๋๋ฅผ ์ํํด์ผ ํฉ๋๋ค. ์๋ํ๋ Dockerfile ๋น๋์์ ๋์ผํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ ์ด์ ๋ฅผ ์ดํดํ ์ ์์ต๋๊น?
๋ ๋ฒ์งธ @yngndrw ๋ ์บ์ฑ์ ์ง์ ํฉ๋๋ค. ๋๊ฐ์ ๋ ผ๋ฆฌ๊ฐ Maven, npm, apt, rpm๊ณผ ๊ฐ์ ๋ง์ ์ธ๊ธฐ ์๋ ํ๋ก์ ํธ์ ์ ์ฉ๋ฉ๋๋ค. ๊ณต์ ์บ์๋ฅผ ํ์ฉํ๋ฉด ๋น๋ ์๋๊ฐ ํฌ๊ฒ ๋นจ๋ผ์ง ์ ์์ง๋ง ์ต์ข ์ด๋ฏธ์ง์ ํฌํจ๋์ด์๋ ์ ๋ฉ๋๋ค.
@stevenschlansker์ ๋์ํฉ๋๋ค. ์ฐ๊ฒฐ ์บ์ ๋ณผ๋ฅจ์ ๋ํ ๋ง์ ์๊ตฌ ์ฌํญ์ด ๋ ์๋ ์๊ณ ์ต์ข ์ด๋ฏธ์ง์ (๋ถ์๋ ์ํ๋ก) ํ์๋์ด์ผ ํ์ง๋ง ์์ ๋ฐ์ดํฐ๊ฐ ์๋ ๋ช ๊ธฐ๊ฐ๋ฐ์ดํธ์ ๋ฐ์ดํฐ๊ฐ ๋ ์ ์์ต๋๋ค.
๋๋ ๋ํ docker run
์์ ์ฌ์ฉํ ์ ์๋ ๋ณผ๋ฅจ์ ์ง์ํ๊ธฐ ์ํด docker build
๋ฅผ ํ์ฅํ๋ ๊ฒ์ ๋ํ ์ผ๊ด๋ ์ ํญ์ ๋ฌผ๋ ธ์ต๋๋ค. ์ฌ๊ตฌ์ถํ ๋๋ง๋ค ์ ์ฒด ํจํค์ง ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ค์ ๋ค์ด๋ก๋ํด์ผ ํ ๋ Docker ์ด๋ฏธ์ง์์ ๊ฐ๋ฐ ๋ฐ ๋ฐ๋ณต ์์
์ ๋ ์ด๋ ต๊ฒ ๋ง๋ค๊ณ ์๊ฐ์ ์๋ชจํ๊ฒ ๋ง๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ 'ํธ์คํธ ๋
๋ฆฝ ๋น๋'๋ผ๋ ์ฃผ๋ฌธ์ด ๋งค์ฐ ์ค๋๋ ฅ ์๋ค๋ ๊ฒ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค. ์ด๋ฏธ์ง.
๋์ ์ด๊ธฐ ์ฌ์ฉ ์ฌ๋ก๋ ๊ฐ๋ฐ ๋ฐ๋ณต ์๋๋ฅผ ๋์ด๊ธฐ ์ํด OS ํจํค์ง ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์บ์ํ๋ ค๋ ๊ฒ์ด์์ต๋๋ค. ๋ด๊ฐ ์ฝ๊ฐ์ ์ฑ๊ณต์ ๊ฑฐ๋๋ฉด์ ์ฌ์ฉํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ @fatherlinux ๊ฐ ์ ์ํ ์ ๊ทผ ๋ฐฉ์๊ณผ ๋น์ทํฉ๋๋ค. docker build
๋ฐ Dockerfile
๋ก ๋ ์ฌ๋ง์ ์์ ํ ํฌ๊ธฐํ๊ณ docker run
๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ์๋ถํฐ ์์ํ๋ ๊ฒ์
๋๋ค. docker commit
docker run
์ฝ๊ฐ์ ์คํ์ผ๋ก, ์ฝ๊ฐ์ POSIX ์
ธ ์คํฌ๋ฆฝํ
: dockerize ๋ฅผ ์ฌ์ฉํ์ฌ docker build
์ ๋ํ ๋ณธ๊ฒฉ์ ์ธ ๋์ฒด ๊ธฐ์ ๋ก ๋ด ๊ธฐ์ ์ ํ์ฅํ์ต๋๋ค.
๋๊ตฌ๋ ์ง ์ด ์คํฌ๋ฆฝํธ๋ ์ผ๋ฐ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ํ
์คํธํ๊ณ ์ถ๋ค๋ฉด ๊ทธ๊ฒ์ด ํฅ๋ฏธ๋กญ๊ฑฐ๋ ๋์์ด ๋๋์ง(๋๋ ๋น์ ์๊ฒ ์ ํ ํจ๊ณผ๊ฐ ์๋์ง) ์๋ ค์ฃผ์ญ์์ค. ์ฌ์ฉํ๋ ค๋ฉด ์คํฌ๋ฆฝํธ๋ฅผ PATH์ ์ด๋๊ฐ์ ๋ฃ๊ณ ๋น๋ ์คํฌ๋ฆฝํธ( #!
ํญ๋ชฉ)์ ๋ํ shebang์ผ๋ก ์ถ๊ฐํ ๋ค์ Docker ์ค์น ์คํฌ๋ฆฝํธ์ ์์์ ํ์ํ๋ ๋ ๋ฒ์งธ shebang ์ค ์์ ๊ด๋ จ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.
FROM
, RUNDIR
๋ฐ VOLUME
๋ณ์๋ docker run
์ธ์๋ก ์๋ ์ ๋ฌ๋ฉ๋๋ค.
TAG
, EXPOSE
๋ฐ WORKDIR
๋ณ์๋ docker commit
์ธ์๋ก ์๋ ์ ๋ฌ๋ฉ๋๋ค.
๋ค๋ฅธ ๋ชจ๋ ๋ณ์๋ ์
ธ์์ ํ๊ฐ๋๊ณ docker run
ํ๊ฒฝ ์ธ์๋ก ์ ๋ฌ๋์ด ๋น๋ ์คํฌ๋ฆฝํธ ๋ด์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ด ์คํฌ๋ฆฝํธ๋ ๋น๋ ๊ฐ์ Alpine Linux ํจํค์ง๋ฅผ ์บ์ํ๊ณ ์ฌ์ฌ์ฉํฉ๋๋ค(VOLUME์ ํ ๋๋ ํ ๋ฆฌ๋ฅผ CACHE์ ๋ง์ดํธํ ๋ค์ ์ค์น ์คํฌ๋ฆฝํธ์์ OS์ ํจํค์ง ์ ์ฅ์ ์บ์์ ๋ํ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ก ์ฌ์ฉ๋จ).
#!/usr/bin/env dockerize
FROM=alpine
TAG=${TAG:-wjordan/my-image}
WORKDIR=/var/cache/dockerize
CACHE=/var/cache/docker
EXPOSE=3001
VOLUME="${HOME}/.docker-cache:${CACHE} ${PWD}:${WORKDIR}:ro /tmp"
#!/bin/sh
ln -s ${CACHE}/apk /var/cache/apk
ln -s ${CACHE}/apk /etc/apk/cache
set -e
apk --update add gcc g++ make libc-dev python
[...etc etc build...]
๊ทธ๋์ ์ง๋ ์ฃผ MesoCon์์ Docker์ ํ๋์ค ํ๊ฒฌ๋จ :)์ ๋ง๋ ํ (์ฆ๊ฑฐ์ ์ต๋๋ค) ์ฌ๋ด์์ ๋์ผํ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์๊ณ ๊ทธ๋ค์ ํ์ํ ๊ฒ์ ์๋ก์ด ์ฌ๋ฆผ ์ด๋ฏธ์ง๋ก ๋ณต์ฌํ๋ ํดํน์ ๊ฐ๋ฐํ์ต๋๋ค. .
๋๋ ๊ธฐ์
์ธ๊ณ์์ ํดํน์ ํ์ํฉ๋๋ค ;) ์ด ์์ฒญ์ ์ ์ ํ๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋ค๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค.
๋ค์ด์ค์ ๊ณ ๋ง์ ์๋ค์...
๋ํ ๋น๋ ์๊ฐ -v
ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ์ฌ ๋น๋ ์ฌ์ด์ ์บ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ณต์ ํ์ฌ ๋น๋ ์๋๋ฅผ ๋์ด๋ ๋ฐ ์ฐฌ์ฑํฉ๋๋ค.
@yngndrw ๊ด๋ จ ๋ฌธ์ ๋ ๊ฐ๋ฅผ ๋ซ์ ์ด์ ๋ฅผ ์ดํดํ ์ ์์ต๋๋ค. ๊ทํ์ #59 ๋ฌธ์ ๋ฅผ ์ฝ์์ง๋ง ์ด๊ฒ์ด ์ด๊ฒ๊ณผ ์ด๋ค ๊ด๋ จ์ด ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ด๋ค ๊ฒฝ์ฐ์๋ ๋ฐํ์์ ํ์ํ์ง ์์ ๋ ์ปจํ
์ด๋๊ฐ ์์ฒญ๋๊ฒ ๋ถํ๋ ค์ง๋๋ค. 1๋ฒ ํฌ์คํ
์ ์ฝ์ด์ฃผ์ธ์.
๋๋ ๋ด๊ฐ ์ฌ๊ธฐ์์ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค ... ๊ธด ํ๋ฃจ ์๊ธฐ ๋๋ฌธ์ :-o
@zrml ๋ฌธ์ https://github.com/aspnet/aspnet-docker/issues/59 ๋ ๋ชจ๋ ๋์ปค ํ์ผ์ ๋น๋ํ๋ ๋์ ๋์ปค๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ์ ๊ณต ๋ ์ด์ด๋ณ ์บ์ฑ๊ณผ ๊ด๋ จ๋์์ง๋ง ์ด ํ์ฌ ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฏธ๋ฌํ๊ฒ ๋ค๋ฆ ๋๋ค. ์ฐ๋ฆฌ๋ ํธ์คํธ ๋ณผ๋ฅจ์ ์ฌ์ฉํ์ฌ ๋ณผ๋ฅจ์ ํน๋ณํ ์ฌ์ฉํ๋ dockerfile์ ์์กดํ๋ dockerfile ํน์ ์บ์ฑ์ ์ ๊ณตํ๋ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. https://github.com/aspnet/aspnet-docker/issues/59 ๋ฌธ์ ๋ aspnet-docker ํ๋ก์ ํธ/๋ฆฌํฌ์งํ ๋ฆฌ์ ํน๋ณํ ๊ด๋ จ์ด ์๊ธฐ ๋๋ฌธ์ ์ข ๋ฃํ์ต๋๋ค.
๋น์ ์ด ์ธ๊ธํ๊ณ ์๋ค๊ณ ์๊ฐํ๋ ๋ค๋ฅธ ๋ฌธ์ ๋ https://github.com/progrium/dokku/issues/1231 ๋ฌธ์ ์ ๋๋ค. ์ด ๋ฌธ์ ๋ ๊ธฐ๋ณธ ์ ๊ณต ๋์ปค ๋ ์ด์ด ์บ์ฑ์ ๋ช ์์ ์ผ๋ก ๋นํ์ฑํํ๋ Dokku ํ๋ก์ธ์ค์ ๊ดํ ๊ฒ์ ๋๋ค. Michael์ ์ด ๋์์ ๊ตฌ์ฑํ ์ ์๋๋ก Dokku๋ฅผ ๋ณ๊ฒฝํ์ผ๋ฉฐ Dokku ํ๋ก์ ํธ/๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ด๋ จ๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ด ํด๋น ๋ฌธ์ ๋ ์ข ๋ฃ๋์์ต๋๋ค.
์์ง ํด๊ฒฐ๋์ง ์์ Docker ๊ด๋ จ ๋ฌธ์ ๊ฐ ์์ ์ ์์ง๋ง(์: https://github.com/aspnet/aspnet-docker/issues/59 ๋ฌธ์ ์์ ์์ํ ๋๋ก Docker๊ฐ ๋ด์ฅ ๊ณ์ธต ์บ์ฑ์ ์ฒ๋ฆฌํ์ง ์๋ ์ด์ ) ๋๋ ๊ทธ๊ฒ์ด ์ ์ผ์ด๋๋์ง ์์๋ผ ๊ธฐํ๊ฐ ์์๊ณ ์ฌ์ ํ ์ผ์ด๋๊ณ ์๋์ง ํ์ธํ ๊ธฐํ๊ฐ ์์์ต๋๋ค. ์ฌ์ ํ ๋ฌธ์ ์ธ ๊ฒฝ์ฐ ์ด ํ๋ก์ ํธ/๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ ๋ฌธ์ ๊ฐ ์ด ํ์ฌ ๋ฌธ์ ์ ๊ตฌ๋ณ๋๋ฏ๋ก ์ด์ ๋ํด ์ ๊ธฐํด์ผ ํฉ๋๋ค.
@yngndrw ์ ํํ, ๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ด๊ฒ์ด ๋ค๋ฅด๊ณ ์๋ ค์ง @docker.com์ด๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค. ๊ทธ๋์ ๊ด์ฐฎ์ผ์๋ค๋ฉด ๋ค์ ์ด๊ฒ ์ต๋๋ค... ๊ธ์์. ๊ด์ฐฎ์ผ์ธ์?
์ ์ด๋ ๋ซ๊ธฐ ์ ์ SF ๋๋ฃ๋ค์ ์๊ฒฌ์ ๋ฃ๊ณ ์ถ์ต๋๋ค.
BTW ๋ก๊ทธ #3156์์ @cpuguy83 ์ด ์ฌ์ฉ์ ์ฌ๋ก๋ฅผ ์ด๊ณ ๋ชจ๋ ๊ฒ์ ์ค๋ช ํ๋ผ๋ ์์ฒญ์ ๋ฐ์์ต๋๋ค.
@zrml ๋ด๊ฐ ํ๋ก์ฐํ๊ณ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ค์ ์ด๊ณ ์ถ์ ๊ฒ์ด https://github.com/aspnet/aspnet-docker/issues/59 ์ ๋๊น? /aspnet/aspnet-docker ๋ฌธ์ ๊ฐ ์๋๋ฏ๋ก ํด๋น ๋ฌธ์ ๋ฅผ ๋ค์ ์ฌ๋ ๊ฒ์ด ์ณ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. /docker/docker์์ ์ค์ ๋ก ์๋ก์ด ๋ฌธ์ ์ฌ์ผ ํ์ง๋ง ํ์ธ์ด ํ์ํ๊ณ ๋จผ์ ์์ฑํ๋ ์ฌํ ๊ฐ๋ฅํ ๋จ๊ณ๊ฐ ํ์ํฉ๋๋ค.
์๋, ์๋.. ์ด์ ๋ซ์ #14080์ ๋๋ค.
์ด ๋ฌธ์ ๊ฐ ์์ง ์ด๋ ค ์์ต๋๊น?
@yngndrw ๋นจ๊ฐ์ "๋ซํ" ์์ด์ฝ์ ์๋ชป ์ฝ์ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ๊ณผ.
build time -v๊ฐ ํฐ ๋์์ด ๋ ๊ฒ์ด๋ผ๋ ๋ฐ ์ง์ฌ์ผ๋ก ๋์ํฉ๋๋ค.
๋น๋ ์บ์ฑ์ ํ ๊ฐ์ง ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค.
๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ ๋น๋ ์ ssh ํค๋ฅผ ์ฌ์ฉํ์ฌ ๊ณ์ธต์ ์ ์ฅํ์ง ์๊ณ ๊ฐ์ธ ์ ์ฅ์์์ ๋น๋ํ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ https://github.com/dockito/vault ์ ๊ฐ์ ํดํน(์ ์ค๊ณ๋)์ด ํ์ํ์ง ์์ต๋๋ค.
์ฌ๊ธฐ๊ฐ ๊ธฐ์
์ธ๊ณ์ ์ง์ฅ์ด๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ ๋๊ธ์ ๋ค๋ ๊ฒ์
๋๋ค.
์ฐ๋ฆฌ๋ SSL ๊ฐ๋ก์ฑ๋ ํ๋ก์๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ด๊ฐ ์ด๋ฅผ ํตํด ํธ๋ํฝ์ ๋ณด๋ผ ์ ์์ง๋ง ๋ง์ ํ๋ก์ ํธ๋ SSL ์ฐ๊ฒฐ์ด ์ํธํ๋ค๊ณ ๊ฐ์ ํ๋ฏ๋ก ๋์ฐํ๊ฒ ์ฃฝ์ต๋๋ค.
๋ด ์ปดํจํฐ(๋ฐ๋ผ์ ๋์ปค ๋น๋)๊ฐ ํ๋ก์๋ฅผ ์ ๋ขฐํ๋๋ผ๋ ๋์ปค ์ด๋ฏธ์ง๋ ์ ๋ขฐํ์ง ์์ต๋๋ค.
์ต์
์ ๋ชจ๋ฒ ์ฌ๋ก๋ ์ด์ ์ปจํ
์ด๋ ๋ด๋ถ์์ ์ปฌ์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ฏ๋ก ๊ณ ํต์ค๋ฝ์ต๋๋ค. Dockerfile์ ์์ ํ์ฌ ๋น๋ํ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค. -v ์ต์
์ ์ฌ์ฉํ์ฌ ์ธ์ฆ์๋ฅผ ๋ง์ดํธํ๊ณ ๋ง์กฑํ ์ ์์ต๋๋ค.
์ด๋ง์ ๋๋ค. docker์ ์ค๋ฅ๊ฐ ์ ์์๋ก apt-get์ด ์๋ํ๋ ๋ฐฉ์๊ณผ ์ ์ฌํ ์์คํ ์ ์ฌ์ฉํด์ผ ํ ๋ https๋ฅผ ์ฌ์ฉํ๋ ํจํค์ง ๊ด๋ฆฌ์์ ์ค๋ฅ๊ฐ ๋ ๋ง์ต๋๋ค. ๊ทธ๊ฒ์ ์ฌ์ ํ โโโโ์์ ํ๊ณ ๊ฒ์ฆ ๊ฐ๋ฅํ๋ฉฐ http ํ๋ก์์ ์ํด ์บ์ ๋ ์๋ ์์ต๋๋ค.
@btrepp ๋ ๋ค๋ฅธ ์ข์ ์ฌ์ฉ ์ฌ๋ก์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋ค๋ฅธ ์ํฉ์ ์๊ฐํ ์ ์์ต๋๋ค.
๋ด dockerfiles๋ก ํ๊ณ ์ถ์ ๊ฒ ์ค ํ๋๋ "์ปดํ์ผ๋" ๋์ปค ํ์ผ๊ณผ ํจ๊ป ๋น๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํ์ง ์๋ ๊ฒ์ ๋๋ค. C ์ฑ์ด gcc๋ฅผ ํ์๋ก ํ๊ฑฐ๋ ๋ฃจ๋น ์ฑ์ด ์ด๋ฏธ์ง์ ๋ฒ๋ค๋ฌ๋ฅผ ํ์๋ก ํ ์ด์ ๊ฐ ์์ง๋ง ํ์ฌ ์ด๊ฒ์ ๊ฐ์ง๊ณ ์๋ ๋์ ๋์ปค ๋น๋๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋ด๊ฐ ๊ฐ์ง ์์ด๋์ด๋ ๋ด๋ถ์ ๋น๋ํ ๋ ์ฌ๋ฌ docker ๋ช ๋ น์ ์คํํ๋ dockerfile์ ์ง์ ํ๋ ๊ฒ์ ๋๋ค. ์๋์ ์ ์ฌ dockerfiles.
๋ค๋ฅธ ์ฌ๋์ ๋น๋ํ๋ Docker ํ์ผ
FROM dockerbuilder
RUN docker build -t docker/builder myapp/builder/Dockerfile
RUN docker run -v /app:/app builder
RUN docker build -t btrepp/myapplication myapp/Dockerfile
btrep/myapplication dockerfile
FROM debian:jessie+sayrubyruntime
ADD . /app //(this is code thats been build using the builder dockerfile
ENTRYPOINT ["rails s"]
์ฌ๊ธฐ์ ๋ชจ๋ ๋ฒ๋ค๋ง ์ค์น/ํจํค์ง ๊ด๋ฆฌ ๋ฐ ๋น๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ํํ์ง๋ง ๋ฐํ์ ์ปจํ ์ด๋์ ํ์ํ ํ์ผ์ ์์ฑํ๋ ์์ ์ปจํ ์ด๋๊ฐ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋ฐํ์ ์ปจํ ์ด๋๋ ์ด๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ฆ, ์ค์น๋ ruby โโ์ด์์ด ํ์ํ์ง ์์ต๋๋ค. GCC ๋๋ ๋ ๋์ ์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋ go์ ๊ฒฝ์ฐ ์ฝ์ด OS ํ์ผ์ ์คํํ๋ ๊ฒ ์ธ์ ๋ค๋ฅธ ๊ฒ์ด ํ์ํ์ง ์์ ์ ์์ต๋๋ค.
๊ทธ๋ ๊ฒ ํ๋ฉด ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ด๊ฒฝ๋์ผ๋ก ์ ์งํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋ฌธ์ ๋ ์์ ๋น๋ ์ปจํ ์ด๋๊ฐ ๊ฒฐ๊ตญ ์ฌ๋ผ์ง ๊ฒ์ด๋ผ๋ ๊ฒ์ ๋๋ค. ์ฆ, ์ผ์ข ์ ์บ์๋ฅผ ๋ก๋ํ ์ ์๋ ๊ธฐ๋ฅ์ด ์์ผ๋ฉด ๋งค์ฐ ๋น์ธ๊ณ debian:jessie ๋ฅผ ์ฌ๋ฌ ๋ฒ ์ก์์ผ ํ๋ค๋ ์๋ฏธ์ ๋๋ค.
๋๋ ์ฌ๋๋ค์ด ์ด์ ๊ฐ์ ํน์ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ณด์์ง๋ง ์ธ๋ถ http ์๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ ํ์ผ์ ์ถ๊ฐํ์ต๋๋ค. ๋๋ ๋ชจ๋ ๊ฒ์ docker๋ก ๋น๋ํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค. ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ ๋๋ก ์ํํ๋ ๋ฐฉ๋ฒ์ด ์์ ์ ์์ง๋ง. run์ ์ฌ์ฉํ์ฌ ๋ณผ๋ฅจ์ ๋ง์ดํธํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ ๋ ๋ค๋ฅธ ์๊ฐ ์์ต๋๋ค. ์ปค๋์ ๋ํ ๋ชจ๋ ๋๋ฒ๊ทธ ๊ธฐํธ(Yuuuuge)๊ฐ ์๋ systemtap์ฉ ์ปจํ ์ด๋๋ฅผ ๋น๋ํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. yum ๋ช ๋ น์ด ์ค์นํ RPM์ ์ ์ ์๋๋ก ๊ธฐ๋ณธ /lib/modules๋ฅผ ๋ง์ดํธํด์ผ ํฉ๋๋ค.
๋ํ 1.5GB ์ด๋ฏธ์ง(๋๋ฒ๊ทธ ๊ธฐํธ์์)๊ฐ ์๋ ๋ค๋ฅธ ์์น์ ์ด๋ฌํ ์ด๋ฏธ์ง๋ฅผ ํ์ํ๊ณ ์ถ์ต๋๋ค.
๋๋ Dockerfile์ ์์ฑํ๋ฌ ๊ฐ๊ณ ๊ทธ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค :-(
docker run --privileged -v /lib/modules:/lib/modules --tty=true --interactive=true rhel7/rhel-tools /bin/bash
yum --enablerepo=rhel-7-server-debug-rpms install kernel-debuginfo-$(uname -r) kernel-devel-$(uname -r)
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
52dac30dc495 rhel7/rhel-tools:latest "/bin/bash" 34 minutes ago Exited (0) 15 minutes ago dreamy_thompson
docker commit dreamy_thompson stap:latest
ํด๋น ๋ฒ๊ทธ๊ฐ ๋ค๋ฅธ ์ด์ ๋ก ์ข ๋ฃ๋์์ผ๋ฏ๋ก #3949์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ฌ๊ธฐ์์ ๋ฐ๋ณตํ๊ณ ์ถ์ต๋๋ค.
๋์ปค์์ ๋ ์ ์ํํธ์จ์ด๋ฅผ ์๋๋ฐ์ค ์ฒ๋ฆฌํ๊ณ ์ถ์ต๋๋ค. ์ด๋์์๋ ํธ์คํ ํ๋ ๊ฒ์ ๋ถ๋ฒ์ด๋ฉฐ ๋ค์ด๋ก๋ ํ๋ก์ธ์ค๋ ํ์ค์ ์ผ๋ก(๋๋ ๋ฒ์ ์ผ๋ก) ์๋ํํ ์ ์์ต๋๋ค. ์ ์ฒด์ ์ผ๋ก ์ค์น ํ๋ก๊ทธ๋จ์ ์ฝ 22GB์ ๋ฌํฉ๋๋ค(๋ฆด๋ฆฌ์ค๋ง๋ค ์ ์ ์ปค์ง๊ณ ์์). ๋น๋ ์ ์ด๊ฒ์ด ๋์ปค ์ด๋ฏธ์ง์ ๋ณต์ฌ๋์ด์ผ ํ๋ค๊ณ ๊ธฐ๋ํ๋ ๊ฒ์ ์ด๋ฆฌ์์ ์ผ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ด ํ์ํ ๊ธฐ๋ฅ์ ๋ํ ์์์ด ์์ต๋๊น?
๊ฐ์ฌ ํด์
_USER POLL_
_์ด ํ ๋ก ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ ๋ ์๋ฆผ์ ๋ฐ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์ค๋ฅธ์ชฝ ์๋จ์ ๊ตฌ๋ ๋ฒํผ์ ํด๋ฆญํ๋ ๊ฒ์ ๋๋ค._
์๋์ ๋์ด๋ ์ฌ๋๋ค์ ๋ฌด์์ +1๋ก ๊ทํ์ ์๋ฏธ ์๋ ํ ๋ก ์ ๊ฐ์ฌํ์ต๋๋ค.
@vad
์ด ๊ธฐ๋ฅ์ +1!
๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ ๋น๋ ์ ssh ํค๋ฅผ ์ฌ์ฉํ์ฌ ๊ณ์ธต์ ์ ์ฅํ์ง ์๊ณ ๊ฐ์ธ ์ ์ฅ์์์ ๋น๋ํ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ https://github.com/dockito/vault ์ ๊ฐ์ ํดํน(์ ์ค๊ณ๋)์ด ํ์ํ์ง ์์ต๋๋ค.
์ด๊ฒ์ ์ฐ๋ฆฌ์ ์ฌ์ฉ ์ฌ๋ก์ด๊ธฐ๋ ํฉ๋๋ค(์ด ๊ฒฝ์ฐ ํธ์คํธ์์ tmpfs๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๋๋ง๋ ssh ํค).
์ด์ ๋ํ ๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ ๋น๋ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด CI ์๋ฒ์ ์๋ node_modules
๋๋ ํ ๋ฆฌ์ ๋ก์ปฌ ์บ์์
๋๋ค.
npm install
๋ ๋งค์ฐ ๋๋ฆฌ๊ณ package.json
๊ฐ ์ด๋ฏธ์ง์ ADD
์ธ ํ์ฌ "์ต์์" ๊ฒฝ์ฐ์๋ npm install
๊ฐ ์คํ๋๊ณ ๊ทธ ๋ค์์์ผ ์คํ๋ฉ๋๋ค. package.json
์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ๋ฐ์ผ๋ก ์ถ๊ฐ๋๊ณ ๊ตฌ์ถ๋ ์ค์ ํ๋ก์ ํธ ์์ค๋ ๋ชจ๋ ์ข
์์ฑ์ ๋ค์ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค.
Node/npm ์ธก์์ ์ด์ ๋ํ ๋ฌธ์ ๋ npm/npm#8836์ ์ฐธ์กฐํ์ญ์์ค.
๋๋ฆฐ ํจํค์ง ๋ณต์ ๋ฐ ๋ ์ด์ด์ ํ์ฌ ํจํค์ง ์บ์ฑ ๊ฒฐ๊ณผ ์ด๋ฏธ์ง ํฌ๊ธฐ์ ๊ด๋ จ๋ aspnet-docker ๋ฌธ์ ์
๋๋ค. ํจํค์ง ์บ์ฑ์ ์ํด ํ์ฌ๋ ๋ณผ๋ฅจ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ๋ ์ข์ต๋๋ค.
https://github.com/aspnet/aspnet-docker/issues/123
์ด๊ฒ์ ์ธ์ด๋ณ ๋ฌธ์ ๊ฐ ์๋๋ฉฐ ํจํค์ง ๊ด๋ฆฌ์๊ฐ ์ด์ ํ์ฉ๋๋ ํ์ค์ด๋ผ๋ ์ ์ ๊ฐ์ํ ๋ ๋ง์ ์ฌ๋๋ค์๊ฒ ์ํฅ์ ๋ฏธ์น ๊ฒ์ ๋๋ค.
OP๋ "docker build -v"๊ฐ ๋ฐํ์ ํ๊ฒฝ์์ ๋น๋ ํ๋ก์ธ์ค๋ฅผ ๋ถ๋ฆฌํ๋ ๋ฐ ํฌ๊ฒ ๋์์ด ๋๋ค๋ ์ ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
๋๋ ํธ์/๋ฐฐํฌ๋๋ ์ค์ ๋์ปค๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ฌ์ฉ๋๋ "Mulberry ํญ๊ตฌ"๋ฅผ ๊ตฌ์ถํ๋ ์ฌ๋ฌ ํ๋ก์ ํธ๋ฅผ ๋ณด์์ต๋๋ค. ์ด๋ ๊ด๋ฆฌ ๋ฐ ์ปดํจํ ๋ฆฌ์์ค ๊ด์ ๋ชจ๋์์ ์ง๋์น๊ฒ ๋ณต์กํ์ฌ CI ๋ฐ ๋จ์ ํ ์คํธ ์๋๊ฐ ๋๋ ค์ง๊ณ ์ ๋ฐ์ ์ผ๋ก ์์ฐ์ฑ์ด ๋จ์ด์ง๋ ๊ฐ๋ฐ ์ํฌํ๋ก๋ก ์ด์ด์ง๋๋ค.
๋๋ ์ด๊ฒ์ ๋ํด ์๊ฐํด ์์ผ๋ฉฐ ์๊ฐํ ์์๋ ๋ค๋ฅธ ์ต์ ์ ๋ ์ด์ด๋ฅผ "src"๋ ์ด์ด๋ก ํ์ํ๋ ๊ธฐ๋ฅ์ ๋๋ค.
ํด๋น ๋ ์ด์ด์ ๋ผ์ธ์ ๋ฐ๋ผ ๋์ปค ๋น๋ ์ค์๋ง ์ก์ธ์คํ ์ ์์ง๋ง ๊ฒฐ๊ณผ ์ด๋ฏธ์ง ํ์ผ์์๋ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
์ด ๋ฐฉ๋ฒ์ผ๋ก ๋์ปค๋ ์ด์ ๋ ์ด์ด/์ด๋ฏธ์ง, ์์ ๋น๋ ์ํฐํฉํธ๋ฅผ ์บ์ํ ์ ์์ง๋ง ์ต์ข ์ด๋ฏธ์ง๋ฅผ ํ์ฉํ๋ ๋ฐ ํ์ํ ๊ฒ์ ์๋๋๋ค.
์.
FROM ubuntu
RUN apt-get install gcc
ADDPRIVATE . /tmp/src <--these can be cached by docker locally
RUNPRIVATE make <-- basically these layers become scoped to the current build process/dockerfile
RUN make install <--result of this layer is required.
๋ฌผ๋ก ์ด๊ฒ์ ์ค์ํ ํ์ผ์ ์ ์ธํ ์ ์์ผ๋ฏ๋ก ์์ ์ด ๋ฌด์์ ๋ ์ํ๊ณ ์๋์ง ์์์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
@yngndrw
netcore์ ๊ฐ์ ์ํฉ์ ๋ํ ํจ์ฌ ๋ ๋์ ์๋ฃจ์
์ ํจํค์ง ๊ด๋ฆฌ์ HTTPS๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋์ปค ๋น๋๋ฅผ ์ํ ํฌ๋ช
ํ ์บ์ฑ ํ๋ก์๋ฅผ ๊ฐ๋๋ก iptables+squid๋ฅผ ์ค์ ํ๋ ๊ฒ์
๋๋ค. ์ ๊ฐ์ธ์ ์ธ ์๊ฒฌ์ ์ด๋ฌํ ํจํค์ง ๊ด๋ฆฌ์๊ฐ ๊ฒ์์์ ssl ์ฌ์์ผ๋ก ์ธํด ๊ธฐ์
ํ๊ฒฝ์์ ์ฌ์ฉํ๊ธฐ์๋ ๋์ฐํ์ง๋ง apt-get๊ณผ ๊ฐ์ ๊ฒ๋ค์ ์๋ฒฝํ๊ฒ ์ ์๋ํ๊ณ ์ด๋ฏธ docker์ฉ iptables+squid๋ก ์บ์ํ ์ ์์ต๋๋ค.
๋ํ ๋น๋ ์๊ฐ ๋ณผ๋ฅจ ์ฌ์ฉ์ ๋จ์ ์ ๋ณผ ์ ์์ต๋๋ค. dockerfiles๋ ์ฌํํ ์ ์์ผ๋ฉฐ docker build -t btrepp/myapp ์ธ๋ถ์์ ์ถ๊ฐ ์ค์ ์ด ํ์ํฉ๋๋ค. ๋ํ dockerhub์์ ์๋ํ๋ ๋น๋๋ฅผ ์ด๋ ต๊ฒ ๋ง๋ค ๊ฒ์ ๋๋ค.
@brepp : ๋๋ ๋น์ ์ ์ ์์ ์ข์ํฉ๋๋ค. ๋๋ Docker๊ฐ ์ฐ๋ฆฌ์๊ฒ ์๋ ค์ฃผ๋ ํ๋์ฝ๋ฉ๋(์ผ๋ฐ์ ์ผ๋ก ๋์ ์ผ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์) ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ํด ์ด ์๋ ์์ต๋๋ค. ๊ทธ๋์ผ ๋ชจ๋ ๋ ์ด์ด์์ ์ต์ข
์ํฐํฉํธ๋ฅผ ๋น๋ํ ๋ ์์ด๋ฒ๋ฆด ์ ์๋/์ ๊ฑฐํ ์ ์๋ ์ต์ข
์ํฐํฉํธ๋ฅผ ์ ์ ์์ต๋๋ค. /this_is_the_tmp_explosion_folder_that_will_be_removed_from_your_final_container_image์ ํ์ฌ๋จ
์ถฉ๋ถํ ์ฌ์ด....
@btrepp ์์ค ๋ ์ด์ด ์์ด๋์ด๊ฐ ์์ฃผ ๋ง์์ ๋ญ๋๋ค.
๊ทธ๋ฌ๋ SSL์ ์ฌ์ฉํ์ง ์๋ ํจํค์ง ๊ด๋ฆฌ์์ ๊ดํด์๋ ๋์ํ์ง ์์ ์ ์์ต๋๋ค.
๊ทธ๋ฐ ํจํค์ง๋ฅผ ์บ์ํ๋ ค๋ฉด ๊ณต์ ์์ค๋ฅผ ๋ฏธ๋ฌ๋งํ๋ ๋์ (๋ก์ปฌ) ๊ฐ์ธ ํจํค์ง ํผ๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ํนํ ๋ง์ ํจํค์ง ๊ด๋ฆฌ์๊ฐ ํจํค์ง์ ์๋ช ํ์ง ์์ HTTPS์ ์์กดํ๋ค๋ ์ ์ ๊ณ ๋ คํ ๋ HTTP๋ก ๋๋๋ฆฌ๋ ๊ฒ์ ์ข์ง ์์ ์๊ฐ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ๋ฌธ์ ๊ฐ ์์ง ํด๊ฒฐ๋์ง ์์ ๋์ ์ฌ์ฉํ ์ ์๋ ๋ฌธ๋ฒ/๋ก์ปค ๋๊ตฌ๊ฐ ์์ต๋๋ค.
@yngndrw
๋ด ์์ ์ ๋ก์ปฌ ํ๋ก์ ๋ฑ์ด ์ค๋ซ๋์ ํด๊ฒฐ๋ ๋ฌธ์ ์ ๋๋ค. ํจํค์ง ๊ด๋ฆฌ์๋ ํ์ธ๋ง ํ์ํ๋ฉฐ ๊ฐ์ธ ์ ๋ณด๋ ํ์ํ์ง ์์ต๋๋ค. https๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ธ์ฆ์ ์ ๊ณตํ๋ ๊ฒ์ผ๋ฅธ ๋ฐฉ๋ฒ์ด์ง๋ง ๊ฐ์ธ ์ ๋ณด ์ฒจ๋ถ ํ์ผ๊ณผ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค.
http(s)๋ฅผ ํตํด ํ๋ค์ด๋ ๋ "super_awesome_ruby_lib"๋ฅผ ๋น๊ณต๊ฐ๋ก ์ค์ ํด์ผ ํ๋ ์ด์ ๋ ์์ต๋๋ค. ๋ ์ข์ ๋ฐฉ๋ฒ์ ๋ฃจ๋น ๋ณด์์ ์ด์ ๊ณ ๋ฆฌ๊ฐ ์๋ ๊ฒ์ ๋๋ค. ๋๋ ์๋ ค์ง ๊ณต๊ฐ ํค๋ฅผ ์ฌ์ฉํ์ฌ ํจํค์ง์ ์๋ช ํ ์๋ ์์ต๋๋ค. ์ด๊ฒ์ apt-get์ด ์๋ํ๋ ๋ฐฉ์์ด๋ฉฐ ํ์ค http ํ๋ก์๊ฐ ์บ์ํ ์ ์๋๋ก ํฉ๋๋ค.
๋ก์ปฌ ๊ฐ์ธ ํจํค์ง ํผ๋์ ๊ด๋ จํ์ฌ docker๋ ์์ฒด์ ์ผ๋ก ์ด๋ฅผ ์ ์ง์ํ์ง๋ ์์ต๋๋ค. ํ์ค ํผ๋๋ฅผ ๋นํ์ฑํํ๋ ๋ฐฉ๋ฒ์ ์์ผ๋ฉฐ https ์ธ์ฆ์๊ฐ ์ธ์ฆ์ ์ ์ฅ์์ ์์ผ๋ฉด _์ฌ๋ฐ๋ฅด๊ฒ_ ๋์จํด์ง๋๋ค. ๋๋ docker๊ฐ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ฌ ๋๋ ์ต์ํ ๋ฉ์ธ ํผ๋๋ฅผ ํญ์ ํ์ธํ๊ธฐ๋ฅผ ์ํ๋ค๊ณ ํ์ ํฉ๋๋ค. Afaik ๋ก์ผ/rkt ๊ตฌํ์ ์๋ช +http๋ฅผ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ํ์ต๋๋ค.
๋น๋ ์๊ฐ ๋ณผ๋ฅจ์ ์ฃผ์ ๋๊ธฐ๊ฐ ํจํค์ง ์บ์ฑ์ธ ๊ฒฝ์ฐ ํ์ฌ docker์ ์๋ํ/์์์ฑ์ ์ผ๋ถ ์์์ํค๊ธฐ๋ณด๋ค๋ ์บ์ฑ์ ๋ ์ ์ง์ํ๋๋ก ํจํค์ง ๊ด๋ฆฌ์์๊ฒ ์๋ ฅ์ ๊ฐํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ถ๋ช ํ ๋งํด์, ์ ๋ ํจํค์ง ๊ด๋ฆฌ์๊ฐ http๋ฅผ ์ฌ์ฉํ๊ณ https๋ฅผ ์ญ์ ํ๋๋ก ์ ํํ๋ ๊ฒ์ ์นํธํ์ง ์์ต๋๋ค. ์ค๊ฐ์ ๊ณต๊ฒฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํจํค์ง ๊ฒ์ฆ์ด ํ์ํฉ๋๋ค. ๊ทธ๋ค์ด ํ์๋ก ํ์ง ์๋ ๊ฒ์ https๋ฅผ "๋ณด์ catch all sledgehammer" ์ ๊ณต์ผ๋ก ์ฌ์ฉํ๋ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ์ธก๋ฉด์ ๋๋ค.
์ ๋ง ์ข์ ์์ผ์ ๋๋ค. ๋น์ ์ ํจํค์ง ๊ด๋ฆฌ์์ ์ ์ฒด ์์ญ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ตฌ์ถ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ ๋ฐฉ์์ ๋ํ Docker์ ์ฒ๋ฐฉ์ ๋ง๊ฒ ๋์ ๋ฐฉ์์ ๋ณ๊ฒฝํ๋๋ก ์์ฒญํ๊ณ ์์ต๋๋ค.
์ด ์ค๋ ๋์์ ์ด๊ฒ์ด ํ์ํ ์ด์ ์ ๋ํ ๋ค๋ฅธ ์๋ ๋ง์ด ์์ต๋๋ค. "์์ฉ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ถํ๋ ๋ฐ ์ฌ์ฉํ๋ ๋ชจ๋ ๋๊ตฌ๊ฐ ์๋ํ๋ ๋ฐฉ์์ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค"๋ผ๊ณ ๋งํ๋ ๊ฒ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด ์๋๋ผ ์ฌ์ฉ์๋ฅผ ๋ฉ์ด์ง๊ฒ ํ ๋ฟ์ ๋๋ค.
(๋๋ ๋ํ ๊ณต๊ฐ ๋ ์ง์คํธ๋ฆฌ์ ๋ํ Docker์ ์ฒจ๋ถ์ ๋ํด ๊ฐ๋ ฅํ ๋์ํ์ง ์์ต๋๋ค. ๊ณต๊ฐ ๋ ์ง์คํธ๋ฆฌ์ ๋ํ ์ก์ธ์ค๋ฅผ ๊ธ์งํ๊ณ ๋ด๋ถ ๋ ์ง์คํธ๋ฆฌ๋ง ์ฌ์ฉํ๋๋ก ํ์ฉํ๋ ๊ฒ์ ๋งค์ฐ ์ ํธํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์์ ํ ๋ค๋ฅธ ์ฃผ์ ์ ๋๋ค.)
์ ์๊ฒ๋ docker build -v
๋ ํ์ํฉ๋๋ค.
์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ๊ด๋ จ ์ ํ์ ์ฌ์ ๊ตฌ์ฑ๋ ์ค์น๋ก ๊ตฌ์ฑ๋ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ณ ์ ํ๋ฉฐ ์ค์น ํ๋ก๊ทธ๋จ์ 2GB ์ด์์ ๋๋ค. ํธ์คํธ ๋ณผ๋ฅจ์ ๋ง์ดํธํ ์ ์๊ธฐ ๋๋ฌธ์ ํธ์คํธ OS์ ์ด๋ฏธ ๋ค์ด๋ก๋๋ฅผ ํ์์๋ ๋ถ๊ตฌํ๊ณ ์ค์น ํ๋ก๊ทธ๋จ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ํด https cert/auth๊ฐ ์๋ ํ๋ก์์ ๊ฐ์ ๋ค์ํ ๋๊ตฌ/ํ๋กํ ์ฝ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. , ๋๋ ์ด์ฉ๋ฉด ๋นํธ ํ ๋ ํธ.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด wget์ ์ฌ์ฉํ์ฌ docker build
๋์ ์ค์น ํ๋ก๊ทธ๋จ์ ๋ค์ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค. ์ด๋ ํจ์ฌ ์ ํ๋ ํ๊ฒฝ์ด๊ณ ํจ์ฌ ๋ ํธ๋ฆฌํ๊ณ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค.
๋ํ ์ ํ ์ค์น/๊ตฌ์ฑ ์ต์ ์ ์ ์ฐ์ฑ ๋๋ฌธ์ ์ค์น ํ๋ก๊ทธ๋จ๊ณผ ํจ๊ป ์ด๋ฏธ์ง๋ฅผ ๋ฐฐ์กํ๋ ๊ฒ๋ณด๋ค ์ ํ์ด ์ฌ์ ์ค์น๋ ์ํ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ฐฐ์กํ๋ ๊ฒ์ด ํจ์ฌ ๋ ํฉ๋ฆฌ์ ์ ๋๋ค.
@thaJeztah ์ด๋ฐ ์ผ์ด ์ผ์ด๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น?
Fwiw ์ด๊ฒ์ด ๋ด๊ฐ docker๋ฅผ ์ฌ์ฉํ์ง ์๋(๋๋ ์ค์ ๋ก ํ ์ ์๋) ์ ์ผํ ์ด์ ์ ๋๋ค.
-v ์ต์ ์ด ํฌํจ๋ Red Hat ๋ฒ์ ์ docker์ ํจ์น๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ํ ์ง์ ํ ํด๊ฒฐ์ฑ ์ docker ๋น๋๊ฐ ์๋ OCI Container Images๋ฅผ ๋น๋ํ๋ ์๋กญ๊ณ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๋น๋ํ๋ ๊ฒ์ ๋๋ค.
@rhatdan RHEL ๋๋ Fedora?
์ฐ๋ฆฌ๋ ๋ํ resin.io์์ ๋ด๋ถ ๋ฒ์ ์ ๋์ปค์์ ๋์ปค ๋น๋์ -v ์ต์ ์ ๊ตฌํํ์ต๋๋ค. ์ฌ๊ธฐ์์ ์ฐจ์ด์ ์ ์ฐพ์ ์ ์์ต๋๋ค. https://github.com/resin-io/docker/commit/9d155107b06c7f96a8951cbbc18287eeab8f60cc
@rhatdan @petrosagg ์ด์ ๋ํ PR์ ์์ฑํ ์ ์์ต๋๊น?
@jeremyherbert ํจ์น๋ RHEL, CentOS ๋ฐ Fedora์ ๋ชจ๋ ์ต์ ๋ฒ์ ์ ์ ๊ณต๋๋ ๋์ปค ๋ฐ๋ชฌ์ ์์ต๋๋ค...
@graingert ๊ณผ๊ฑฐ์ ์ ์ถํ์ง๋ง ๊ฑฐ๋ถ๋์์ต๋๋ค.
@rhatdan ๋งํฌ๊ฐ ์๋์?
@runcom ๋งํฌ ์๋์?
@thaJeztah ์ด๊ฒ์ด ๋ํฌ๋ค์ด ๊ฑฐ๋ถํ์ ๊ฒ์ ๋๊น?
๋ค์์ ์ข
๋ฃ๋์๊ฑฐ๋ ์๋ตํ์ง ์์ ๊ธฐ์กด ๋ฌธ์ ๋ชฉ๋ก์
๋๋ค.
https://github.com/docker/docker/issues/3949
https://github.com/docker/docker/issues/3156
https://github.com/docker/docker/issues/14251
https://github.com/docker/docker/issues/18603
RHEL/CentOS/Fedora์์ ์ฌ์ฉ๋๋ Project Atomic ํจ์น์ ๋ํ ์ ๋ณด๋ ๋ค์์์ ์ฐพ์ ์ ์์ต๋๋ค.
http://www.projectatomic.io/blog/2016/08/docker-patches/
@daveisfera ๋ RW ๋ณผ๋ฅจ์ด ์๋ R ๋ณผ๋ฅจ๋ง ์ถ๊ฐํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ฏ๋ก @yngndrw ๋ฐ ๋ด ์ฌ์ฉ ์ฌ๋ก์์๋ ์๋ํ์ง ์์ต๋๋ค.
@graingert RW ๋ณผ๋ฅจ์ด ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น? ํน์ ๊ฒฝ์ฐ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ์ฝ๊ธฐ ์ ์ฉ์ ์ดํดํฉ๋๋ค.
์คํค๋ง ๋ง์ด๊ทธ๋ ์ด์ ์ ํ ์คํธํ๋ ๊ฒ์ด ์ข์ ์ด์ ์ค ํ๋์ ๋๋ค...
2016๋ 11์ 1์ผ ์ค์ 10์ 36๋ถ์ Brian Goff๋ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@graingert https://github.com/graingert RW ๋ณผ๋ฅจ์ด ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น?
ํน์ ๊ฒฝ์ฐ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ์ฝ๊ธฐ ์ ์ฉ์ ์ดํดํฉ๋๋ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/docker/issues/14080#issuecomment -257582035,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAHLZdp0D6fAtuNglajPBIwnpWGq3slOks5q5050gaJpZM4FIdOc.
์ค์ฝง ๋งค์นดํฐ
์ค์ฝง. [email protected]
@fatherlinux
@cpuguy83 RW์ ๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ ccache ์ ๋๋ค.
@fatherlinux ํ๋ก์ฐ๊ฐ ํ์คํ์ง ์์ต๋๋ค. ์ด ์์ ์ ๋ณผ๋ฅจ์ด ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ํ ๋น๋ ๋จ๊ณ์์ ์ํํด์ผ ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
ASP.Net 5 ํจํค์ง ๊ด๋ฆฌ์์ ์ํด ๋ค์ด๋ก๋/์ ๋ฐ์ดํธ๋๋ ์บ์ฑ ํจํค์ง๋ผ๋ ์ด ๊ธฐ๋ฅ์ ๋ํ ์ฝ๊ฐ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. ํจํค์ง ๊ด๋ฆฌ์๋ ์์ฒด ์บ์ ํด๋๋ฅผ ๊ด๋ฆฌํ๋ฏ๋ก ๊ถ๊ทน์ ์ผ๋ก ๋น๋ ๊ฐ์ ์ฌ์ฌ์ฉํ ์ ์๋ ํด๋๋ง ์์ผ๋ฉด ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ง์ดํธ๋ฅผ ๋ฐ์ธ๋ฉํฉ๋๋ค.
docker build -v /home/jenkins/pythonapp/cache/pip:/root/.cache/pip -t pythonapp .
docker build -v /home/jenkins/scalaapp/cache/ivy2:/root/.ivy2 -t scalaapp .
์คํค๋ง ๋ง์ด๊ทธ๋ ์ด์
์ ์ํํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์
์ํํธ์จ์ด๊ฐ ์ค์น๋ฉ๋๋ค. ์ฝ๊ธฐ ์ ์ฉ ์ปจํ
์ด๋๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ ๋ค์์ ์ํํด์ผ ํฉ๋๋ค.
์ ์์ ๋ ์ธ์๋ ์ํํธ์จ์ด๋ฅผ ์ค์นํ์ง ๋ง์ญ์์ค.
๋น๋ ๋จ๊ณ.....
2016๋ 11์ 1์ผ ์ค์ 10์ 42๋ถ์ Brian Goff๋ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@fatherlinux https://github.com/fatherlinux ํ๋ก์ฐํ๊ณ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ด ์์ ์ ๋ณผ๋ฅจ์ด ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ํ ๊ทธ ๋์ ์ํ๋์ด์ผ ํ๋ ์ด์
๋น๋ ๋จ๊ณ?โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/docker/issues/14080#issuecomment -257583693,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAHLZfhBG8RUWtqPD-6RaLC7uoCNc-3nks5q50_TgaJpZM4FIdOc.
์ค์ฝง ๋งค์นดํฐ
์ค์ฝง. [email protected]
@fatherlinux
์ด ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ์ผ๋ก ์ธํด ๋น๋๊ฐ ํธ์คํธ์ ์ข ์๋์ง ์๋๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค(์ด ๋ง์ดํธ๊ฐ ์์ผ๋ฉด ๋น๋๊ฐ ์ด์จ๋ ์๋ํ๊ฒ ๋์ง๋ง ์๋๊ฐ ๋๋ ค์ง ์ ์์).
NFS๋ 30๋ ์ ์ ์ด๊ฒ์ ํด๊ฒฐํ์ต๋๋ค...
2016๋ 11์ 1์ผ ์ค์ 10์ 45๋ถ์ Thomas Grainger๋ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ด ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ์ด ๋น๋๋ฅผ ์ค์งํ์ง ์๋๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
๋ฉฑ๋ฑ์ฑ ๋๋ ํธ์คํธ ์ข ์์ฑ(์ด๋ฌํ ๋ง์ดํธ๊ฐ ์์ผ๋ฉด
์ด์จ๋ ์๋ํ๋ ๋น๋)โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/docker/issues/14080#issuecomment -257584576,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAHLZS75Vq0BSEvUjI2oXORsS0el2mwOks5q51CQgaJpZM4FIdOc.
์ค์ฝง ๋งค์นดํฐ
์ค์ฝง. [email protected]
@fatherlinux
NFS๋ 30๋ ์ ์ ์ด๊ฒ์ ํด๊ฒฐํ์ต๋๋ค...
๋์์ด ๋์ง ์๋ ๋๊ธ
@graingert ์ฃ์กํฉ๋๋ค. ์ฌ๊ฐํ๊ฒ ์๋ชป๋์์ต๋๋ค. ๋๋ฌด ๋นจ๋ฆฌ ์๋ตํ๋ ค๊ณ ํ๊ณ ์ถฉ๋ถํ ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํ์ง ์์์ต๋๋ค. ์ง์งํ๊ฒ, ์ฐ๋ฆฌ๋ ์ด๋ฌํ ์ ํ์ ๋ฌธ์ ์ค ์ผ๋ถ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด CRIO์ ํจ๊ป NFS๋ฅผ ์ฐพ๊ณ ์์ต๋๋ค.
์ด๋ฏธ์ง ๋ ์ง์คํธ๋ฆฌ์ buld๋ ๊ณตํต์ ์ด ๋ง์ต๋๋ค. ๋น์ ์ด ๋งํ๋ ๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์บ์ฑ ๋ฌธ์ ์ ๋๋ค. NFS, ํนํ ๋ด์ฅ๋ ์บ์ฑ์ ๋น๋ ํธ์คํธ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๋ง๋ค๊ณ ๋ชจ๋ ์บ์ฑ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ -v ๋น๋ ์๊ฐ ์ต์ ์ ์ฌ์ฉํ๋๋ผ๋ ๋น๋๋ฅผ ํ๋์ ํธ์คํธ์๋ง ์ ๊ธ ํ์๋ ์์ต๋๋ค. ์ธํฐ๋ท ๊ท๋ชจ์ ๋ ๋ฆฝ์ ์ด์ง ์์ ์๋ ์์ง๋ง ๋จ์ผ ์ฌ์ดํธ ๋๋ ์์น์์ ๋น๋ ํ๊ฒฝ์ ์ ์ดํ๋ โโ๋ง์ ์ฌ๋๋ค์๊ฒ๋ ์ถฉ๋ถํฉ๋๋ค.
@fatherlinux gitlab ๋๋ travis ์บ์ฑ์ ์ฌ์ฉํ์ฌ ์บ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ค๊ณ S3์ ์ ๋ก๋/๋ค์ด๋ก๋ํฉ๋๋ค.
@graingert ์, ํ์ง๋ง ํน์ ์ ํ์ ๋ฐ์ดํฐ/์ฑ์์๋ง ์๋ํ๋ฉฐ, posix ๋ฉํ ๋ฐ์ดํฐ ๋ฐ ๋ธ๋ก ์์ค์ด ์๋ ์ค๋ฅธ์ชฝ ๋ฒํท ์์ค์์๋ง ์๋ํฉ๋๋ค. certian ์ ํ์ ํ๋ฐํธ ์๋ ๋ฐ ๋ฏธ๋ค์จ์ด ์ฑ์ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ง์ด๊ทธ๋ ์ด์ ์ ๊ฒฝ์ฐ ๋ฏธ๋ฆฌ ํ ์คํธํ๊ณ ์๋๋ฅผ ์ํด ์บ์๋ฅผ ๋ก์ปฌ๋ก ์ ์งํด์ผ ํ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก posix์ฌ์ผ ํฉ๋๋ค.
1TB์ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ MySQL Galera ํด๋ฌ์คํฐ๊ฐ ์๊ณ ์ ๊ทธ๋ ์ด๋๋ฅผ ํ๋ ค๊ณ ํ๋๋ฐ ๋ชจ๋ ์ปจํ ์ด๋์ ์๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. Containerized/Orchestrated multi-node, sharded Galera๋ ์ ๋ง ํธ๋ฆฌํฉ๋๋ค. ์ ๊ทธ๋ ์ด๋ํ ๋๋ง๋ค ์คํค๋ง ๋ง์ด๊ทธ๋ ์ด์ ์ ์๋์ผ๋ก ํ ์คํธํ๊ณ ์ถ์ง ์์ต๋๋ค.
๋ฐ์ดํฐ ๋ณผ๋ฅจ(Kube ์ธ๊ณ์ pv)์ ์ค๋ ์ทํ๊ณ ๋น๋ ์๋ฒ์ ๋ ธ์ถํ ๋ค์ ์ ๊ทธ๋ ์ด๋ ๋ฐ ์คํค๋ง ๋ง์ด๊ทธ๋ ์ด์ ์ ํ ์คํธํ๊ณ ์ถ์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๊ณ ํ ์คํธ๊ฐ ํต๊ณผ๋๋ฉด ํ๋ก๋์ ์ปจํ ์ด๋๋ฅผ ๋น๋ํ๊ณ ํ๋ก๋์ ์์ ์คํค๋ง ๋ง์ด๊ทธ๋ ์ด์ ์ด ๋ฐ์ํ๋๋ก ํฉ๋๋ค....
@graingert ์ฃ์กํฉ๋๋ค. ์ถ๊ฐํ๋ ๊ฒ์ ์์ ๋ค์ ํ ์คํธ ์คํ์ ์ฌ์ฉ๋ ์ค๋ ์ท์ ๋ฒ๋ฆฝ๋๋ค... ๋น๋ ๋ฐ ํ ์คํธ ์ด๋ฒคํธ๋ฅผ ๋ณ๋๋ก ์กฐ์ ํ๊ณ ์ถ์ง๋ ์์ง๋ง ๊ฐ๋ฅํ๊ฒ ์ง๋ง...
@fatherlinux ๋๋ ๊ทธ๊ฒ์ด ์ง๊ต ์ ์ค ์ผ์ด์ค๋ผ๊ณ ์๊ฐํฉ๋๋ค ...
@graingert ์ ์ฉํ ์๊ฒฌ์ด ์๋๋๋ค. ๋ฌด์์ ์ง๊ตํฉ๋๊น? ๋น๋ ์ค -v์ ๋ํ ์์ฒญ๊ณผ ์ง๊ตํ์ฌ ์ด ๋ํ๋ฅผ ์ดํดํ์ต๋๋ค.
์ด ํ๋๊ทธ์๋ ๋ช ๊ฐ์ง ๋ค๋ฅธ ์ฉ๋๊ฐ ์์ต๋๋ค.
๋์ค์ ๋ ๊ฐ์ง ์ฌ์ฉ ์ฌ๋ก๋ ๋ ๊ฐ์ ์๋ก์ด ํค์๋๋ก ๋ ๊น๋ํ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค.
BUILDCONSTFILE <path>
๊ฐ RUN ์ ์ COPY <path>
๋ฅผ ์คํํ๊ณ ์ดํ ์ด๋ฏธ์ง์์ <path>
๋ฅผ ์ญ์ ํฉ๋๋ค.
TEST <cmd> WITH <paths>
๊ฒฝ๋ก๋ฅผ ๋ณต์ฌํ๊ณ ๋ช ๋ น์ ์คํํ ๋ค์ ์ข ๋ฃ ์ํ๊ฐ 0์ด๋ฉด ์์ ์ด๋ฏธ์ง์์ ๋น๋๋ฅผ ๊ณ์ํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ๋น๋๋ฅผ ์ค์งํฉ๋๋ค.
๊ฐ์ธ์ ์ผ๋ก TEST ... WITH๋ ์ปจํ ์ด๋ ์ ์ฒด๋ฅผ ํ ์คํธํ๋ ๋ค๋ฅธ CI ๋จ๊ณ์์ ๋ ์ ์ฒ๋ฆฌ๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ์์ํ๊ฒ ์ต๋๋ค. ์ ๋ --mount
๋ฅผ ๋น๋์ ์ถ๊ฐํ๋ ๊ฒ์ด _์๊ฐ_ํฉ๋๋ค("-v"๋ ๊ทธ๋ค์ง ๋ง์ง ์์ ๊ฒ์
๋๋ค). ๊ตฌํ, ์บ์ฑ ์ฒ๋ฆฌ(๋๋ ์ฒ๋ฆฌ๋์ง ์์) ๋ฑ์ ๋ํด 100% ํ์ ํ ์ ์์ต๋๋ค.
๋์ปค ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ์ฐ๋ฆฌ๊ฐ ํ๋ ์ผ์ ๋น๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๊ฒ์
๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ํ ๋ชจ๋ ๊ฒ์ด ์๊ณ ์ฝ๋๋ฅผ ๋ณต์ฌํ์ง๋ง ์ค์ ๋ก ๋์ปค๋ฅผ ๋น๋ํ์ง๋ ์์ต๋๋ค.
์ด๊ฒ์ ์กฐ์ ํ๋ Makefile
๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ make build
๋ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ make binary
๋ build
๋ฅผ ์ข
์์ฑ์ผ๋ก ์ฌ์ฉํ์ฌ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋น๋ํฉ๋๋ค.
๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ง๋ค๋ฉด ๋น๋ ์ด๋ฏธ์ง๊ฐ ์คํ๋๊ณ ๋น๋๊ฐ ์ํ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฆ๋ถ ๋น๋๋ฅผ ์ํ ํจํค์ง ์บ์๋ฅผ ํฌํจํ์ฌ ํ์ํ ๊ฒ์ ๋ง์ดํธํ ์ ์์ต๋๋ค.
์ด ์ค ๋๋ถ๋ถ์ ๋งค์ฐ ๊ฐ๋จํ๊ณ ์ฝ๊ฒ ์กฐ์ ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์ค๋๋ ์๋ ํ์คํ ์ด ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋์ปค๋ง์ผ๋ก๋ 100% ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ(๋ฐ๋์ ๋์ ๊ฒ์ ์๋๋๋ค) CI ์์คํ
๊ณผ ํจ๊ป ์ด ์์
์ ์ํํด์ผ ํฉ๋๋ค.
@ cpuguy83 ๋ด ์ฌ์ฉ ์ฌ๋ก์ ๋๋ถ๋ถ์ ๋ชป์ก์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ด๊ฐ ์ดํดํ๊ธฐ ์ํด, ์ฝ๊ธฐ ์ ์ฉ์ ์๋ฏธํ๋ --mount๋ฅผ ์๋ฏธํฉ๋๊น? ๊ทธ๋ฆฌ๊ณ -v๋ ์ฝ๊ธฐ/์ฐ๊ธฐ์ ๋๊น?
@cpuguy83 ์ฐ๋ฆฌ๋ ๋ํ IMHO๊ฐ ์ ์ ๋ ์ผ๋ฐ์ ์ธ ํจํด์ด ๋๊ณ ์๋ "๋น๋" ์ด๋ฏธ์ง๋ฅผ ์ฃผ๋ก ๊ตฌ์ถํ๊ณ ์์ต๋๋ค...
@fatherlinux swarm ์๋น์ค ๋ฐ ํ์ฌ(1.13์ฉ) docker run
๋ ํจ์ฌ ๋ ์ ํํ๊ณ ์ ์ฐํ --mount
๋ฅผ ์ง์ํฉ๋๋ค. https://docs.docker.com/engine/reference/commandline/service_create/# /add -bind-mounts-or-volumes
๋ฌธ์์ ์ธ ๋ฒ์งธ ์ ํ์ ๋ง์ดํธ์ธ tmpfs
๊ฐ ๋๋ฝ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ ์ ๋ง ๋ฉ์ง๋ค์...๊ฐ์ฌํฉ๋๋ค...
2016๋ 11์ 1์ผ ์คํ 2์ 20๋ถ์ Brian Goff๋ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@fatherlinux https://github.com/fatherlinux ๋ผ ์๋น์ค ๋ฐ ํ์ฌ
(1.13์ฉ) |๋์ปค ์คํ| ์ง์ |--mount| ํจ์ฌ ๋ ์ ํํ
์ ์ฐํจ:
https://docs.docker.com/engine/reference/commandline/service_create/#/add -bind-mounts-or-volumes๋ฌธ์์ ์ธ ๋ฒ์งธ ์ ํ์ ๋ง์ดํธ์ธ |tmpfs|๊ฐ ๋๋ฝ๋ ๊ฒ ๊ฐ์ต๋๋ค.
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/docker/docker/issues/14080#issuecomment -257648598,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAHLZXv_VBfVi4WUAjVijE-SKR0ErRC4ks5q54L2gaJpZM4FIdOc.
์ค์ฝง ๋งค์นดํฐ
์ค์ฝง. [email protected]
@fatherlinux
@cpuguy83 ์ฐ๋ฆฌ๋ ๋ํ ๋น๋ ํจํด์ ๋ง์ด ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์ด๋ฏธ์ง์ ์ง์๋์ง ์๊ณ ๋ ์ด์ด ๋ฌดํจํ์๋ ์ด์๋จ๋ ์บ์ฑ์ด ํ์ํฉ๋๋ค.
์ฐ๋ฆฌ๋ Yocto ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ถํ๊ณ NFS ์คํ ๋ฆฌ์ง์ ๊ณต์ ์ํ ์บ์๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ npm ์บ์๋ก ์ ์ฒด RUN npm install
๋ ์ด์ด๋ฅผ ๋ฌดํจํํ ์ ์์ง๋ง ์บ์๋ ํจํค์ง๋ก ์ธํด ๋ ๋น ๋ฅด๊ฒ ๋ค์ ๊ณ์ฐํ ์ ์์ต๋๋ค.
@graingert ์ ๊ฒ์๋ฌผ์ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฐ๋ฅํ ํํ์ผ๋ก dockerfile์ ๊ฑฐ๋ํ ํ์ผ์ ์ ํ์ ํด์๊ฐ ์์ ์ ์์ผ๋ฉฐ docker๋ ๋น๋๋ฅผ ์คํํ ๋ ์ด๊ฒ์ ํ์ธํฉ๋๊น? ๊ทธ๋ฌ๋ฉด ๊ฒฐ์ ์ ๋น๋์๋ ๋ฌธ์ ๊ฐ ์์ผ๋ฉฐ, ๋น๋ํ๋ ์ฌ๋์๊ฒ๋ ํน์ ์ง์ ์์ ์ด์ํ ์ค๋ฅ๊ฐ ํญ๋ฐํ๊ธฐ๋ณด๋ค๋ ํ์ํ ์ข ์์ฑ์ด ์๋ค๋ ๊ฒ์ด ๋ช ๋ฐฑํ ๊ฒ์ ๋๋ค. ์ด์จ๋ dockerfile๊ณผ ํจ๊ป ๋ฐฐํฌํด์ผ ํ๋ ssh ํค ๋ฑ์ ๋ํด์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
๋ํ ๊ฑฐ๋ํ ํ์ผ์ _๋ณต์ฌ_ํด์ผ ํ๋ ์์ด๋์ด๋ ์ด์์ ์ด์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ด๊ฐ ์ฌ์ฉํ๊ณ ์ถ์ ํ์ผ ํฌ๊ธฐ๋ 10-40GB ์ ๋์ด๋ฉฐ, ์ข์ ssd๋ฅผ ์ฌ์ฉํ๋๋ผ๋ ์ต์ 1~2๋ถ ๋ถ๋์ ๋ณต์ฌ๊ฐ ํ์ํฉ๋๋ค. ์ด๊ฒ์ ์ด๋ฏธ ๋์ปค์ ์๋ ADD ์ง์๋ฌธ์ ๋ํ ๋ด ๋ฌธ์ ์ ๋๋ค. ๋น๋ํ ๋๋ง๋ค ์ด๋ฏธ์ง์ 30GB๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์ง ์๊ณ ์ถ๊ฐ ์ฌ์ ๊ณต๊ฐ์ ํ๋ณดํ๊ณ ์ด๋ฏธ์ง๋ฅผ ์ค์ฟผ์ํด์ผ ํ๋ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
๊ทธ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ํด ์๋ํ์ง ์์ ๊ฒ์ ๋๋ค. yocto ๋น๋ ์์คํ ์ sstate ์บ์๊ฐ ํฌํจ๋ ๋ณผ๋ฅจ์ด ์๋๋ฐ ์ด๋ ๋น๋์์ RW์ ๋ฐ์ธ๋ ๋ง์ดํธ๋ ๊ฒ์ ๋๋ค. ๋ชจ๋ ์บ์ ๋๋ฝ์ด ๋น๋ ์ค์ ๊ณ์ฐ๋๊ณ ์ดํ๋ฅผ ์ํด sstate์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฐ๋ฆฌ ๋๋ ํ ๋ฆฌ๋ ~30GB์ ์์ผ๋ฏ๋ก ํด์๋ฅผ ๊ณ์ฐํ๋ ๋ฐ์๋ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
๋๋ ๊ฒฐ์ ๋ก ์ ๋น๋ ๊ฐ๋
์ ๊ฒฐ์ฝ ์ดํดํ์ง ๋ชปํ๋ค. ์ค๋๋ ์ ์๋ฏธ๋ก ์๋ ๋ฐ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ด๋ถ IP์์ ๋ฌด์ธ๊ฐ๋ฅผ curl
ํ ์ ์์ต๋๋ค. ๊ฐ์๊ธฐ ์ด Dockerfile์ ๋ชจ๋ ๊ณณ์์ ์๋ํ์ง ์์ผ๋ฉฐ ํธ์คํธ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค. ํ์ง๋ง ์ ๊ทธ๋ ๊ฒ ํ๊ณ ์ถ์์ง ์ ๋นํ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ก์ปฌ HTTP ์บ์.
๋ฐ๋ผ์ ๋น๋๋ ์ด์จ๋ ๊ฒฐ์ ์ ์ด์ง ์๊ณ ์ค๋๋ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ธ๋ ํ์ฌ ๋ณผ๋ฅจ์ ์๋ฎฌ๋ ์ดํธํ ์ ์๊ธฐ ๋๋ฌธ์ ํ์ํ ๊ฒฝ์ฐ ์ ์ ํ ๊ฒฝ๊ณ ์ ํจ๊ป ๊ธฐ๋ณธ ๋ฐฉ์์ ์ ๊ณตํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
@petrosagg @zrml @thaJeztah ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ๊ฒ์:
Dockerfile syntax is frozen
์ฃผ์, ๊ทธ๋ฆฌ๊ณ HEALTHCHECK
๋ช
๋ น์ด ์ถ๊ฐ๋ ํ ๊ณ ์ ์ด ์ ๊ฑฐ๋์์ง๋ง ๋ฌธ์ ๋ ๋ซํ ์ํ๋ก ๋จ์ ์์)๋ก ์ธํด ์ข
๋ฃ๋์์ต๋๋ค.์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ๋ชจ๋ ๊ฒ์ ๊ฐ์ํ ๋ ์ด๊ฒ์ Dupe ๋๋ WontFix๋ก ์ข ๋ฃ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ ๊ณตํ๋ ์ฌ์ฉ ์ฌ๋ก๋ ์ค์ํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ ๋ฐ์ดํธ: ์ฌ๊ธฐ์ ํ๋ฆฌ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ์ ์์๊ฐ ์ด๋ ค ์์ต๋๋ค :)
์ฐ๋ฆฌ ํ์ฌ๋ ๋ถ๊ฐ์ง๋ก ์ ์ปจํ ์ด๋ ๋ฐํ์์ผ๋ก ์ด๋ํ์ผ๋ฉฐ ๊ณง ๋ถ๊ฐ์ง๋ก ์ ์ด๋ฏธ์ง ๊ตฌ์ถ ํ๊ฒฝ์ผ๋ก ์ด๋ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ถ์ ์ ์ธ ๊ฒ์ด ๋์์ด ๋์ง ์๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ ๋ํด ๋ ผ์ํ๊ธฐ์ ์ ์ ํ ์ฅ์๊ฐ ์๋๋๋ค. ๊ทธ๊ฑด ๋ณ๋์ ํฌ์คํ ์ด์ด์ผ ํฉ๋๋ค.
@rdsub ์์ ์ด ๋๋๋ฉด ๋งํฌ๋ฅผ ๊ณต์ ํ์๊ฒ ์ต๋๊น?
@rdsubhas ๋ฉ์ง ์์ฝ์
๋๋ค. @cpuguy83 ์ด ๋๋ถ๋ถ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ค๋ฃจ๋ ๋น๋ ์ค์ --mount
๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ๊ด์ฐฎ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ์ด ์ค๋ ๋๊ฐ ์์์/์์น ์์ ์ผ๋ก ๋ซํ ๊ฒ ๊ฐ์ง ์์ต๋๋ค.
๋ด๊ฐ ์๊ณ ์ถ์ ๊ฒ์ ํ์ฌ ์ ์์ด ๋ค์๊ณผ ๊ฐ๋ค๋ ๊ฒ์ ๋๋ค.
์์ด๋์ด์ ๋ํด ์ด๋ค ๋ฐ๋ก ์ด ๋จ์ ์์ต๋๊น? ์๋ ๊ฒฝ์ฐ --mount
๋ฉ์ปค๋์ฆ์ ๋ํ ๊ตฌํ ์ธ๋ถ ์ ๋ณด๋ฅผ ๋
ผ์ํ๊ธฐ ์์ํด์ผ ํฉ๋๋ค.
๋น๋๊ฐ ์ด๋ฏธ ํธ์คํธ ์ข ์์ ์ด๊ณ ์ฌํํ ์ ์๋ค๋ ์ฃผ์ฅ์ ๋ค์ ์ํํ๊ธฐ ์ํด ์ด ์์ฑ๊ณผ ํจ๊ป Dockerfile ์กฐ๊ฐ ๋ชฉ๋ก์ ์ ๊ณตํฉ๋๋ค.
# Install different software depending on the kernel version of the host
RUN wget http://example.com/$(uname -r)/some_resource
# example.intranet is only accessible from specific hosts
RUN wget http://example.intranet/some_resource
# get something from localhost
RUN wget http://localhost/some_resource
# gcc will enable optimizations supported by the host's CPU
RUN gcc -march=native .....
# node:latest changes as time goes by
FROM node
# ubuntu package lists change as time goes by
RUN apt-get update
# install different software depending on the docker storage driver
RUN if [ $(mount | head -n 1 | awk '{print $5}') == "zfs" ]; then .....; fi
์์งํ --mount
๋ฅผ ์ถ๊ฐํ๊ณ ์ฌ์ฉ์๊ฐ ์บ์ ๋ฌดํจํ( --no-cache
)๋ฅผ ์ฒ๋ฆฌํ๋๋ก ํ๋ฉด ๊ด์ฐฎ์ ๊ฒ ๊ฐ์ต๋๋ค. CLI์์ ์ ์ฒด ๋๋ ์์ ์๋ ๊ฒ๋ณด๋ค ๋ ์ธ๋ถํ๋ ์บ์ ์ ์ด๋ฅผ ์ดํด๋ณด๊ณ ์ ํ ์๋ ์์ง๋ง ์ด๋ ๋ณ๋์ ์ฃผ์ ์
๋๋ค.
๋๋ ์ ์ ๋์ ๋น์ทํ ๋ฌธ์ ์ ์ง๋ฉดํด ์์ง๋ง ์๋ฃจ์ ์ด ์์ฑ๋ ๋๊น์ง ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ๋ ๋์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ์ฌ๊ธฐ์ ๋ด ์๋๋ฆฌ์ค๋ฅผ ์ค๋ช ํ๋ ค๊ณ ํฉ๋๋ค.
--build-arg
๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ ์ค์ ํ ํฐ์ ์ ๋ฌํฉ๋๋ค(๊ถ์ฅํ์ง ์์). ์ด๊ฒ์ ์ถ๊ฐ ๋จ๊ณ ์์ด "๊ทธ๋ฅ ์๋"ํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋งค๋ ฅ์ ์ด๊ณ ์ฌ์ด ์ต์
์
๋๋ค.ADD
๋ฐ COPY
๋ ๋ณ๋์ ๋ ์ด์ด์์ ์คํ๋๋ฏ๋ก ์ด์ ๋ ์ด์ด์ ๋ฐ์ดํฐ๊ฐ ๋ถ์ด ์์ต๋๋ค.์ด๋ค ๊ฒฝ์ฐ์๋ ๋ด ์ด๋ฏธ์ง์ ํฌ๊ธฐ๊ฐ ๋ ๋ฐฐ ์ด์์ด์ง๋ง ์ ์ฒด ํฌ๊ธฐ๋ ์ง๊ธ์ ๊ฒฌ๋ ์ ์์ต๋๋ค. ๋น๋ ํ์คํ ๋ฆฌ์์ ๋น๋ ์๊ฐ ์ธ์๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํ PR(์ฐพ์ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค)์ด ์์๋ ๊ฒ ๊ฐ์ง๋ง irrc ์บ์ฑ ๋ฌธ์ ๋ก ์ธํด ํ์ฉ๋์ง ์์์ต๋๋ค.
๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์ฌ์ฉ ์ค์ด๋ผ๋ ์์์ ๋ฃ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
@misakwa ์ฐ๋ฆฌ๋ 1.14์์ ๋น๋์ ๋ํ ๋น๋ฐ์ ์ง์ํ ๊ฒ์ ๋๋ค.
@cpuguy83์ ๋ฃ๊ฒ ๋์ด ๋งค์ฐ ๊ธฐ์ฉ๋๋ค. ์ธ์ ์ถ์๋ ์ง ์ง์ผ๋ด์ผ๊ฒ ์ต๋๋ค. ๋ด ์์ ํ๋ฆ ์ค ์ผ๋ถ๋ฅผ ํ์คํ ๋จ์ํํ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ๋ 1.14์์ ๋น๋์ ๋ํ ๋น๋ฐ์ ์ง์ํ ๊ฒ์ ๋๋ค.
yarn-cache
์ ๊ฐ์ ๋ค๋ฅธ ์ ํ์ ๋ณผ๋ฅจ ๋งคํ ๋น๋ ํ์ ๋งคํ์๋ ์๋ํฉ๋๊น?
BTW docker-compose๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก๋์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ํฅ๋ฏธ๋ก์ด ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์๋ํ๊ณ ๋งค์ฐ ํจ๊ณผ์ ์ ๋๋ค.
๋ฐ๋ผ์ docker-compose.build.yml
ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์์ต๋๋ค.
services:
my-app:
image: mhart/alpine-node:7.1.0
container_name: my-app-build-container # to have fixed name
volumes:
- ${YARN_CACHE}:/root/.cache/yarn # attach yarn cache from host
- ${HOME}/.ssh:/.ssh:ro # attach secrets
- ./:/source
environment: # set any vars you need
TEST_VAR: "some value"
ports:
- "3000"
working_dir: /app/my-app # set needed correct working dir even if if doesn't exist in container while build type
command: sh /source/my-app.docker.build.sh # build script
1) docker compose๋ฅผ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋๋ฅผ ๋น๋ํฉ๋๋ค.
$ docker-compose -f docker-compose.build.yml up --force-recreate my-app
์ปจํ
์ด๋๋ฅผ ์์ฑํ๊ณ ์ ๋น๋ ์คํฌ๋ฆฝํธ my-app.docker.build.sh
๋ฅผ ์คํํฉ๋๋ค. Dockerfile
๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋น๋ ์คํฌ๋ฆฝํธ์์ ๋ชจ๋ ์์
์ ์ํํฉ๋๋ค.
/source
ํด๋์์)๊ทธ๋ฐ ๋ค์ ๋์ ํ๊ฒฝ์์ ์คํํด์ผ ํ๋ CMD๋ฅผ ๋์ฒดํ์ฌ ์ปจํ ์ด๋์์ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ญ๋๋ค.
docker commit -c "CMD npm run serve" my-app-build-container my-app-build-image:tag
๋ฐ๋ผ์ ์ด๋ฏธ์ง๊ฐ ์ค๋น๋์์ผ๋ฉฐ ๋น๋ ์๊ฐ ๋์์๋ง ์ฌ์ฉํ ์ ์๋ ์ธ๋ถ ์ ์บ์ ๋ฐ ์ธ๋ถ ๋น๋ฐ ํค๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
@whitecolor ๋ต ์๋ํฉ๋๋ค :) ํ ๊ฐ์ง๋ง ์ ์ธํ๋ฉด docker build
๋ ๋น๋ ์ปจํ
์คํธ๋ฅผ ์
๋ก๋ํ๋ ๋ฐ ์ ๋ง ํจ๊ณผ์ ์
๋๋ค. ํ์ฌ๋ ์์ค ๋ณผ๋ฅจ์ ๋ถํํ๋ ์๊ฒฉ ๋์ปค ๋ฐ๋ชฌ์์ ์๋ํ์ง ์์ต๋๋ค(์: ์ ์ ๋ ฅ/๋์ญํญ ๋ฉํฑ์ฉ ํด๋ผ์ฐ๋์ ๋์ปค ๋จธ์ ). ์ด๋ฅผ ์ํด ์ฐ๋ฆฌ๋ ์ฑ๊ฐ์ docker run
, docker cp
, docker run
๋ฑ ์ผ๋ จ์ ๋์ปค ๋ช
๋ น์ ์ํํ ๋ค์ ์ต์ข
์ด๋ฏธ์ง์ ์ค๋
์ท์ ์ฐ์ด์ผ ํ์ง๋ง ์ ๋ง ํดํน์
๋๋ค.
์ด๊ฒ์ ๊ณต์์ ์ผ๋ก docker ๋น๋์ ์ผ๋ถ๋ก ๋ง๋ค๊ณ ๋ ์ด์ด๋ง์ ์ฌ์ฉํ๊ณ ์ปจํ ์คํธ๋ฅผ ๋น๋ํ๋ ๋ฐ ์ ๋ง ๋์์ด ๋ฉ๋๋ค ๐
@rdsubhas ๋ค ๋ง์ต๋๋ค
@whitecolor ์ ๋ง ๊ฐ๋จํ๊ณ ํจ๊ณผ์ ์ธ ์๋ฃจ์ ์ ๋๋ค. ํ๋ก์ ํธ์์ 30-40๋ถ ๋น๋๋ฅผ ์ฝ 5๋ถ์ผ๋ก ์ค์์ต๋๋ค. ๋น๋ ๊ธฐ๋ฅ์ --mount๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ๋ฅผ ๊ธฐ๋ํ์ง๋ง ํ์ฌ๋ก์๋ ์ด ์๋ฃจ์ ์ด ํ์ดํ๋ผ์ธ์ ์ค์ ๋ก ์ฐจ๋จ ํด์ ํฉ๋๋ค.
์ด๊ฒ์ ๋ด๊ฐ ์ดํดํ์ง๋ง ์ค๋ณต์ผ๋ก ํ์๋์ง ์์ ๋ฌธ์ #17745์ ๋ํด ๋จ๊ธด ๋๊ธ์ ๋๋ค. ํ์์ ์์ ์ ๋ํด์๋ ๋ด๊ฐ ์๋ชป ์๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. "ํด๊ฒฐ๋ ์ค๋ณต"์ผ๋ก ๋ช ์์ ์ผ๋ก ํ์ํ๊ณ ๋ฒ๊ทธ์ ๋งจ ์ ์ค๋ช ์์ญ์ ํ์ํ๋ Bugzilla์ ๊ฐ์ ์์คํ ์ ์ต์ํ๋ค๋ ๊ฒ์ ์ธ์ ํฉ๋๋ค. ๋๋ ๋ง์์ ์ฝ๋ ์ฌ๋์ด ์๋๋๋ค. (๊ทธ๋์ ๋ด ์ฌ๊ณผ @graingert , ๋๋ ์๋ ๋ฐฉ๋ฒ์ด ๊ฑฐ์ ์์์ผ๋ฏ๋ก 20pt ๊ธ๊ผด๋ก ๋์๊ฒ ์๋ฆฌ์น ํ์๊ฐ ์์ต๋๋ค. ๊ทธ๊ฑด ๊ณผ๋ํ์ต๋๋ค.)
์ ๊ฒฝ์ฐ์๋ ์ด๊ฒ์ด ๋ฐ๋น์ ์์คํ
์์ ์ ์ฉํ ๊ฒ์
๋๋ค. /var/cache/apt
๋ฅผ ๋ณผ๋ฅจ์ผ๋ก ๋ง์ดํธํ์ฌ ๋์ผํ .deb ํ์ผ์ ๊ณ์ํด์ ๋ค์ ๋ค์ด๋ก๋ํ์ง ์๋๋ก ํฉ๋๋ค. (์ ๋ง๋ก "๋ฌด์ ํ" ์ธํฐ๋ท ํ ๋น๋์ ํนํ ์ฌ๊ธฐ ํธ์ฃผ์๋ ์กด์ฌํ์ง ์์ผ๋ฉฐ, ์๋ค๊ณ ํ๋๋ผ๋ ๋ค์ด๋ก๋๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋ฐ ์๊ฐ์ ๋ญ๋นํ๊ฒ ๋ฉ๋๋ค.)
๋๋ ๋ค๋ฅธ ์๋๋ฆฌ์ค์์ ๋น๋๋ฅผ ์ํํ๊ณ ์์ง๋ง ์ด๋ฏธ์ง์ ํจ๊ป ์ ๊ณตํ ํ์๋ ์์ง๋ง ์ฃผ๋ณ์ ์์ผ๋ฉด ์ ์ฉํ ์ํฐํฉํธ์ธ ์ค๋ฅ ๋ชฉ๋ก ๋ฐ ์ฝ๋ ๊ฒ์ฌ ๋ณด๊ณ ์์ ๊ฐ์ ํ ์คํธ ๋ณด๊ณ ์๋ ์์ฑํฉ๋๋ค. ์ด๋ CI ์๋ฒ๊ฐ CI ์๋ฒ๊ฐ ์ ํํ๊ณ ํธ์คํ ํ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋ ๋ณผ๋ฅจ์ ๊ธฐ๋ก๋ ์ ์์ต๋๋ค.
๋๋ ์ค๋ ๋ฐค์ ์ ๋ ์ ์์ ์ ์ํด Gentoo ๊ธฐ๋ฐ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ณ ์์ต๋๋ค. ํธ์คํธ์์ /usr/portage
๋ฅผ ๋ง์ดํธํ๊ณ ์ถ์ต๋๋ค. Dockerfile
๊ฐ ๋ณผ๋ฅจ์ ๋ง์ดํธํ์ง ์๊ณ ์คํํ ๋ "์ด๋ด, /usr/portage
(์ปจํ
์ด๋์ ์์)์ด ๋น์ด ์์ต๋๋ค. ๋ฌธ์ ์์ต๋๋ค. ๊ทธ๋ฅ ๊ฐ์ ธ๊ฐ๊ฒ์"๋ผ๋ ๊ฒ์ ๊นจ๋ซ๋ ๊ฒ์ ์ด๋ ต์ง ์์ต๋๋ค. ๋๋, ๋ณผ๋ฅจ์ ์๋ ๊ทธ๋๋ก ์ฌ์ฉํ์ฌ ์ ๋ณต์ฌ๋ณธ์ ๊ฐ์ ธ์ค๋ ์๊ฐ์ ์ ์ฝํฉ๋๋ค.
์ด๋ฌํ ์ค๋งํธ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ Bourne ์
ธ ์คํฌ๋ฆฝํธ์ ๊ฐ๋จํ if ๋ฌธ์
๋๋ค... IF ๋ณผ๋ฅจ์ ํ์ฌํ๋ ๊ธฐ๋ณธ ๋
ผ๋ฆฌ๊ฐ ์ฒ์์ ์กด์ฌํฉ๋๋ค. ์ง๊ธ ์ Gentoo ์ด๋ฏธ์ง์ ๋ํด ๋น๋๋ฅผ ํ ๋๋ง๋ค /usr/portage
๋ฅผ ๊ฐ์ ธ์์ผ ํฉ๋๋ค(๋คํํ๋ ๋ฏธ๋ฌ๋ ์ LAN์ ์์ต๋๋ค). ์ด๋ ํ ๋จ๊ณ๊ฐ ์๋ฃ๋ ๋๊น์ง ๋ช ๋ถ ์ ๋ ๊ธฐ๋ค๋ ค์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ด๊ฒ์ด ๊ฐ์น ์๋ ์ ์์ธ ๋ง์ ์ด์ ์ #7115์์ ์ ์๋ ์ค์ฒฉ ๋น๋๊ฐ ์์ ๊ฒฝ์ฐ์ ๋์์ด ๋ ์ง ์์ฌ์ค๋ฝ์ต๋๋ค.
@whitecolor ๋ ํฅ๋ฏธ๋ก์ด ์ ๊ทผ ๋ฐฉ์์ ๊ฐ์ง๊ณ ์์ง๋ง ๊ทธ๋ ๊ฒ ํ๋ฉด ๋น๋๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด Docker ์์คํ
์ธ๋ถ์์ Makefile
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@sjlongland ๋๋ ๋น์ ์๊ฒ ์๋ฆฌ ์ง๋ฅด๋ ๊ฒ์ด ์๋๋ผ ํฐ "ํด๊ฒฐ๋ ์ค๋ณต"ํต์ง๋ฅผ ํด๋ฆฌ ํ๋งํ๊ณ ์์์ต๋๋ค.
์ ๋ docker ๋ฐ docker-compose๋ฅผ ์ฌ์ฉํ์ฌ ์ธํ๋ผ๋ฅผ ์ํ ์ฌ๋ฌ ์ปจํ
์ด๋๋ฅผ ๊ตฌ์ถํ๊ณ ์์ต๋๋ค. ์ปจํ
์ด๋๋ ๋๋ถ๋ถ nodeJS๋ก ์์ฑ๋ ๋ง์ดํฌ๋ก ์๋น์ค์ด์ง๋ง maven ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ Java๋ก ์์ฑ๋ ๋ง์ดํฌ๋ก ์๋น์ค๊ฐ ํ๋ ์์ต๋๋ค.
Java ์ปจํ
์ด๋๋ฅผ ๋ค์ ๋น๋ํ ๋๋ง๋ค Maven์์ ์์ญ ๊ฐ์ ์ข
์์ฑ์ด ๋ค์ด๋ก๋๋ฉ๋๋ค. ๋ช ๋ถ์ด ๊ฑธ๋ฆฝ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฝ๋๋ ์ฝ 15์ด ๋ง์ ๋น๋๋ฉ๋๋ค.
์ด๊ฒ์ ๋งค์ฐ ์ถ์ ํ๋ฉฐ ์ฐ๋ฆฌ์ CI ์ ๋ต์ ์๋นํ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์ด ์๋๋ฆฌ์ค์์๋ ๋น๋ ์ข ์์ฑ์ด ์๋ ๋ณผ๋ฅจ์ด ๋๋ฝ๋๊ฑฐ๋ ๋น์ด ์๋์ง ์ฌ๋ถ๊ฐ ์ค์ํ์ง ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ข ์์ฑ์ด ๋ค์ด๋ก๋๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฌํ์ฑ์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
๋๋ ์์กด์ฑ์ ๋ณ์กฐํ๊ณ ๊ฑฐ๊ธฐ์ ๋ถ์พํ ์ฝ๋๋ฅผ ์ฃผ์
ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ณด์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ์ดํดํฉ๋๋ค. "๋น๋ ๋ณผ๋ฅจ"์ผ๋ก ๋น๋๋ ์ด๋ฏธ์ง๋ฅผ docker-hub ๋๋ docker-store์ ๊ฒ์ํ ์ ์๋๋ก ํ์ฌ ์ฝ๊ฒ ์ฐํํ ์ ์๋ IMHO.
์ด๊ฒ์ ๋ค๋ฅด๊ฒ ์ค๋ช
ํ๋ ค๋ฉด ๊ธฐ์
์ฉ๊ณผ ๊ฐ์ธ์ฉ docker ์ฌ์ด์ ๋ฒ์๋ฅผ ๊ตฌ๋ถํด์ผ ํฉ๋๋ค.
@stepps ๋ docker-compose ๋์ https://pypi.python.org/pypi/shipwright ๋ฅผ ํ์ธํ์ญ์์ค.
๋๋ ๋ ์์ ์ ์ํ ์ข์ ํด๊ฒฐ์ฑ ์ ์ฐพ๊ธฐ ์ํด ์ ์ ๋์ ์ด ์ค๋ ๋๋ฅผ ๋ฐ๋ผ์์ต๋๋ค. ์ต์ํ์ ๋ ธ๋ ฅ์ผ๋ก ์ ์ฐํ ๋ฐฉ์์ผ๋ก ์ต์ํ์ ์ปจํ ์ด๋๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํด ์ ๋ @edannenberg์ https://github.com/edannenberg/gentoo-bb ๋ฅผ ์ ๋ง ์ข์ํฉ๋๋ค.
์ด๊ฒ์ Gentoo์ ํฌํฐ์ง ๋ฐ ์ด๋จธ์ง์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฏ๋ก @sjlongland Gentoo ๊ธฐ๋ฐ ์ด๋ฏธ์ง์ ๋ํด ์ข์ํ ์ ์์ต๋๋ค. dist ํ์ผ๊ณผ ๋ฐ์ด๋๋ฆฌ ํจํค์ง๊ฐ ์บ์๋๋ฏ๋ก ๋ค์ ๋ค์ด๋ก๋ํ๊ฑฐ๋ ๋น๋ํ ํ์๊ฐ ์์ด ๋น ๋ฅด๊ฒ ๋ค์ ๋น๋ํ ์ ์์ต๋๋ค. ๋น๋ ํ๋ก์ธ์ค๋ฅผ ์ฝ๊ฒ ์ฌ์ฉ์ ์ ์ํ ์ ์๋ ํํฌ๊ฐ ์์ต๋๋ค. git์ ์ฌ์ฉํ์ฌ repo๋ฅผ ๋ณต์ ํ ๋ค์ ๋น๋ํ๊ณ ์ต์ข ์ด๋ฏธ์ง์ ๋น๋๋ง ์ ์งํ๋ ๊ฒ๊ณผ ๊ฐ์ด ํ์ฌ ์ํํธ์จ์ด๋ฅผ ์ค์นํ๋ ๊ฒ์ ์ฝ์ต๋๋ค. Dockerfile์ ํ ํ๋ฆฟํํฉ๋๋ค.
figlet
์ ๋ํ ๊ฐ๋จํ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -
๋น๋.conf:
IMAGE_PARENT="gentoobb/glibc"
๋์ปคํ์ผ.ํ ํ๋ฆฟ:
FROM ${IMAGE_PARENT}
ADD rootfs.tar /
USER figlet
CMD ["gentoo-bb"]
ENTRYPOINT ["figlet"]
build.sh
PACKAGES="app-misc/figlet"
configure_rootfs_build() {
useradd figlet
}
๋๋ @whitecolor ์ ์๋ฃจ์ ์ด ๋ง์์ ๋ญ๋๋ค. Docker ๊ธฐ์ ๊ณผ ๊ฐ๋จํ ์ ธ ์คํฌ๋ฆฝํธ ๋๋ ์ฌ์ฉํ๋ ค๋ ๋ค๋ฅธ ๊ฒ์ ์ฌ์ฉํ๋ฉด ๊ฐ๋จํฉ๋๋ค. gentoo-bb๊ฐ ๋ ์๋ฒฝํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. Shipwright๋ ๋ธ๋์น ์ฒ๋ฆฌ์ ๊ฐ์ ๊ฐ๋ฐ์ ์ค์ฌ ๊ธฐ๋ฅ์ด ๋ ์ข์ ๋ณด์ ๋๋ค. https://github.com/grammarly/rocker ๋ ํฅ๋ฏธ๋ก์ด ๊ฒ ๊ฐ์ต๋๋ค. ๊ณต์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๋๋ฏธ์ ๋ ๋ค๋ฅธ ๋ชฉ์๋ฆฌ๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. ๋น๋ ์ ๋ก์ปฌ ๋ณผ๋ฅจ์ ๋ง์ดํธํ ์ ์๋ค๋ฉด ๋งค์ฐ ๋ณต์กํ ๊ฐ๋ฐ ํ๊ฒฝ์ด ํจ์ฌ ๋ ๊ฐ๋จํด์ง ๊ฒ์ ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ก์ปฌ ํ์ผ์ ๋ ธ์ถํ๋ http ์๋ฒ๋ฅผ ๋น๋ํ๋ ๋์ ์คํํ ๋ค์ curl/wget ๋ฑ์ ์ฌ์ฉํ์ฌ ํ์ผ์ ๋์ปค ๋น๋๋ก ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๊ทธ๋ฐ ํดํน์ด ํ์ํ์ง ์๊ธฐ๋ฅผ ์ ๋ง๋ก ๋ฐ๋๋๋ค.
๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก. 10๊ฐ์ง ๋ค๋ฅธ ๋ฒ์ ์ ๋ ์ OS๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ์ค์น ๋ฏธ๋์ด๊ฐ >80GB์ด๋ฏ๋ก ์ด๊ฒ์ ๋์ปค ๋น๋ ํ๊ฒฝ์ ๋ณต์ฌํ ์ ์์ต๋๋ค. ๋ฐ์ธ๋ ๋ง์ดํธ๊ฐ ํจ์ฌ ๋ ๋ฐ๋์งํฉ๋๋ค.
๋ ๋ค๋ฅธ ํ๋ : ๋ด ํ๋ก์ ํธ ์ฌ์ฉ์ ์ปจํ ์ด๋์ ์์ค์์ ๋น๋ํ๊ธฐ ์ํด ์ ์ฅ์์ Dockerfiles๋ฅผ ๋ฐฐํฌํฉ๋๋ค. ํ์ฌ github์์ ์ปจํ ์ด๋์ ๋ค๋ฅธ git ํด๋ก ์ ๊ฐ์ ธ์ต๋๋ค. ์์ ํด๋ก ๋ฑ์ด ์์ง๋ง ์ฌ์ ํ ...
๊ทธ๋์ ๋ฐฉ๊ธ rhel7 ๋น๋ ํธ์คํธ์์ [1]์ ํ ์คํธํ์ผ๋ฉฐ Red Hat์ docker ๋ฐ๋ชฌ ๋น๋์๋ ๋น๋์ ๋ํ -v ์ต์ ์ด ์์ต๋๋ค. ๋๋ CentOS/Fedora์์ ํ ์คํธํ์ง ์์์ง๋ง Fedora/CentOS์๋ ์๋ง ์์ ๊ฒ์ด๋ผ๊ณ ์์ํ ๊ฒ์ ๋๋ค. ํ ์คํธํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ๋ํ RHEL ๊ฐ๋ฐ์ ๊ตฌ๋ ์ ์ด์ ๋ฌด๋ฃ์ ๋๋ค[2].
@fatherlinux Fedora์์ `docker build -v'๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
@fatherlinux CentOS 7 ๋ฒ์ ์ ํฌํจ๋์ด ์์ต๋๋ค.
+1 ๊ณต์ ๋์ปค์ ์ถ๊ฐํ ๋ ์ ๋ง ์ ์ฉํ ๊ธฐ๋ฅ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
centos์ linuxmint(ํ์ฌ 17.03.1-ce ์คํ) ๋ชจ๋์์ ์
๋ฐ์ดํธ๋์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ญ๊ฐ ๋น ์ก์ต๋๊น? -v
์ต์
์ด ๋ณด์ด์ง ์์ต๋๋ค.
๋ฏผํธ์
$ docker build --help
Usage: docker build [OPTIONS] PATH | URL | -
Build an image from a Dockerfile
Options:
--build-arg list Set build-time variables (default [])
--cache-from stringSlice Images to consider as cache sources
--cgroup-parent string Optional parent cgroup for the container
--compress Compress the build context using gzip
--cpu-period int Limit the CPU CFS (Completely Fair Scheduler) period
--cpu-quota int Limit the CPU CFS (Completely Fair Scheduler) quota
-c, --cpu-shares int CPU shares (relative weight)
--cpuset-cpus string CPUs in which to allow execution (0-3, 0,1)
--cpuset-mems string MEMs in which to allow execution (0-3, 0,1)
--disable-content-trust Skip image verification (default true)
-f, --file string Name of the Dockerfile (Default is 'PATH/Dockerfile')
--force-rm Always remove intermediate containers
--help Print usage
--isolation string Container isolation technology
--label list Set metadata for an image (default [])
-m, --memory string Memory limit
--memory-swap string Swap limit equal to memory plus swap: '-1' to enable unlimited swap
--network string Set the networking mode for the RUN instructions during build (default "default")
--no-cache Do not use cache when building the image
--pull Always attempt to pull a newer version of the image
-q, --quiet Suppress the build output and print image ID on success
--rm Remove intermediate containers after a successful build (default true)
--security-opt stringSlice Security options
--shm-size string Size of /dev/shm, default value is 64MB
-t, --tag list Name and optionally a tag in the 'name:tag' format (default [])
--ulimit ulimit Ulimit options (default [])
$ cat /etc/lsb-release
DISTRIB_ID=LinuxMint
DISTRIB_RELEASE=18
DISTRIB_CODENAME=sarah
DISTRIB_DESCRIPTION="Linux Mint 18 Sarah"
$ docker version
Client:
Version: 17.03.1-ce
API version: 1.27
Go version: go1.7.5
Git commit: c6d412e
Built: Fri Mar 24 00:45:26 2017
OS/Arch: linux/amd64
Server:
Version: 17.03.1-ce
API version: 1.27 (minimum version 1.12)
Go version: go1.7.5
Git commit: c6d412e
Built: Fri Mar 24 00:45:26 2017
OS/Arch: linux/amd64
Experimental: false
์ผํ ์ค 7์์
# docker build --help
Usage: docker build [OPTIONS] PATH | URL | -
Build an image from a Dockerfile
Options:
--build-arg list Set build-time variables (default [])
--cache-from stringSlice Images to consider as cache sources
--cgroup-parent string Optional parent cgroup for the container
--compress Compress the build context using gzip
--cpu-period int Limit the CPU CFS (Completely Fair Scheduler) period
--cpu-quota int Limit the CPU CFS (Completely Fair Scheduler) quota
-c, --cpu-shares int CPU shares (relative weight)
--cpuset-cpus string CPUs in which to allow execution (0-3, 0,1)
--cpuset-mems string MEMs in which to allow execution (0-3, 0,1)
--disable-content-trust Skip image verification (default true)
-f, --file string Name of the Dockerfile (Default is 'PATH/Dockerfile')
--force-rm Always remove intermediate containers
--help Print usage
--isolation string Container isolation technology
--label list Set metadata for an image (default [])
-m, --memory string Memory limit
--memory-swap string Swap limit equal to memory plus swap: '-1' to enable unlimited swap
--network string Set the networking mode for the RUN instructions during build (default "default")
--no-cache Do not use cache when building the image
--pull Always attempt to pull a newer version of the image
-q, --quiet Suppress the build output and print image ID on success
--rm Remove intermediate containers after a successful build (default true)
--security-opt stringSlice Security options
--shm-size string Size of /dev/shm, default value is 64MB
-t, --tag list Name and optionally a tag in the 'name:tag' format (default [])
--ulimit ulimit Ulimit options (default [])
# docker version
Client:
Version: 17.03.1-ce
API version: 1.27
Go version: go1.7.5
Git commit: c6d412e
Built: Mon Mar 27 17:05:44 2017
OS/Arch: linux/amd64
# cat /etc/centos-release
CentOS Linux release 7.3.1611 (Core)
@wilfriedroset CentOS 7์์๋ ๋น๊ณต์ Docker ํจํค์ง๊ฐ ์ต์ ์ ์ ๊ณตํฉ๋๋ค. EPEL ์ ์ฅ์์ ์ผ๋ถ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@nathanjackson ๊ฐ์ฌํฉ๋๋ค. ๊ณต์ ๋ฆด๋ฆฌ์ค์์ ์ด ๊ธฐ๋ฅ์ ๋ํ ETA๊ฐ ์์ต๋๊น?
@wilfriedroset AFAIK, "๋น๋ ์ด์์ฑ"์ ์ ์งํ๊ธฐ ์ํด ์ด ๊ธฐ๋ฅ์ด ๊ณต์ ๋์ปค์ ์์ด์ผ ํ๋ค๊ณ (์ฌ๋ฌ ๋ฒ) ๊ฒฐ์ ๋์๊ธฐ ๋๋ฌธ์ ETA๊ฐ ์์ต๋๋ค. Docker ๋น๋ ์๋น์ค๋ฅผ ํฌํจํ์ฌ ์ด๋์์๋ Dockerfile์ ์คํํ ์ ์์ต๋๋ค.
๋ด ๊ฒฝํ์ ์ ํ๋ ๋น๋ ์ด์์ฑ์ ๊ณ ๊ฐ์ด ์ง์ ์ผ๋ก ์ํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ค์ ๋น๋ ํ๊ฒฝ/ํ์ ์ค์ ํ๊ณ ํด๋น ํ๊ฒฝ์์ ๋น๋๋ฅผ ํญ์ ๋ค์ ๋น๋ํ ์ ์๋๋ก ํฉ๋๋ค. -v ๋น๋ ์ต์ ์ ์ด๋ค ์์ผ๋ก๋ ์ด๋ฅผ ๋ฐฉ์งํ์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด NFS ๋ง์ดํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ชจ๋ ๋น๋ ์๋ฒ์ fstab์ ํด๋น ๋ง์ดํธ๊ฐ ์๋์ง ํ์ธํ๋ฉด ํ์ ์ด๋ ๊ณณ์์๋ ๋ฌธ์ ์์ด ๋น๋๊ฐ ์๋ฃ๋ฉ๋๋ค.
RHEL 7.3์์
````
[ root@rhel7 ~]# ๋์ปค ๋น๋ --help
์ฌ์ฉ๋ฒ: ๋์ปค ๋น๋ [์ต์ ] ๊ฒฝ๋ก | URL | -
Dockerfile์์ ์ด๋ฏธ์ง ๋น๋
์ต์
:
--build-arg value ๋น๋ ์๊ฐ ๋ณ์ ์ค์ (๊ธฐ๋ณธ๊ฐ [])
--cgroup-parent string ์ปจํ
์ด๋์ ๋ํ ์ ํ์ ์์ cgroup
--cpu-period int CPU CFS(Completely Fair Scheduler) ๊ธฐ๊ฐ ์ ํ
--cpu-quota int CPU CFS(Completely Fair Scheduler) ํ ๋น๋ ์ ํ
-c, --cpu-shares int CPU ๊ณต์ (์๋ ๊ฐ์ค์น)
--cpuset-cpus string ์คํ์ ํ์ฉํ CPU(0-3, 0,1)
--cpuset-mems ๋ฌธ์์ด ์คํ์ ํ์ฉํ MEM(0-3, 0,1)
--disable-content-trust ์ด๋ฏธ์ง ํ์ธ ๊ฑด๋๋ฐ๊ธฐ(๊ธฐ๋ณธ๊ฐ true)
-f, --file string Dockerfile์ ์ด๋ฆ(๊ธฐ๋ณธ๊ฐ์ 'PATH/Dockerfile')
--force-rm ํญ์ ์ค๊ฐ ์ปจํ
์ด๋ ์ ๊ฑฐ
--help ์ธ์ ์ฌ์ฉ
--isolation string ์ปจํ
์ด๋ ๊ฒฉ๋ฆฌ ๊ธฐ์
--label value ์ด๋ฏธ์ง์ ๋ํ ๋ฉํ๋ฐ์ดํฐ ์ค์ (๊ธฐ๋ณธ๊ฐ [])
-m, --memory string ๋ฉ๋ชจ๋ฆฌ ์ ํ
--memory-swap string ๋ฉ๋ชจ๋ฆฌ์ ์ค์์ ๋ํ ๊ฒ๊ณผ ๊ฐ์ ์ค์ ์ ํ: ๋ฌด์ ํ ์ค์์ ํ์ฑํํ๋ ค๋ฉด '-1'
--no-cache ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋ ์บ์๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
--pull ํญ์ ์ต์ ๋ฒ์ ์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ์๋ํฉ๋๋ค.
-q, --quiet ๋น๋ ์ถ๋ ฅ์ ์ต์ ํ๊ณ ์ฑ๊ณต ์ ์ด๋ฏธ์ง ID๋ฅผ ์ธ์ํฉ๋๋ค.
--rm ์ฑ๊ณต์ ์ธ ๋น๋ ํ ์ค๊ฐ ์ปจํ
์ด๋ ์ ๊ฑฐ(๊ธฐ๋ณธ๊ฐ true)
--shm-size string /dev/shm์ ํฌ๊ธฐ, ๊ธฐ๋ณธ๊ฐ์ 64MB์
๋๋ค.
-t, --tag ๊ฐ ์ด๋ฆ ๋ฐ ์ ํ์ ์ผ๋ก ' name:tag ' ํ์์ ํ๊ทธ(๊ธฐ๋ณธ๊ฐ [])
--ulimit ๊ฐ Ulimit ์ต์
(๊ธฐ๋ณธ๊ฐ [])
-v, --volume ๊ฐ ๋น๋ ์ ๋ฐ์ธ๋ ๋ง์ดํธ ์ค์ (๊ธฐ๋ณธ๊ฐ [])
```
CI ๊ตฌ์ถ ๋
ธ๋ ํ๋ก์ ํธ์ ๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ ๋ชจ๋ ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ถํ ๋ CI์ yarn
์บ์๋ฅผ ๊ณต์ ํ๋ ๊ฒ์
๋๋ค.
+1 : node_modules๋ฅผ ๊ณ์ํด์ ์ค์นํ๋ ๊ฒ์ ํนํ nodejs ๋ง์ดํฌ๋ก ์๋น์ค์ ๊ฒฝ์ฐ ์ ๋ง ๋์ฐํฉ๋๋ค.
nfs๋ก ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๊ณ ํ๋๋ฐ "๋ฐ๋ณต ๊ฐ๋ฅ"์ด ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ์ง ์๋ ์ข์ ์ด์ ๊ฐ ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค...
#31257๊ณผ #32063์ด ํฉ์ณ์ง๋ฉด ๋์ฑ ์ค์ํด์ง ๊ฒ ๊ฐ์ต๋๋ค.
#32507์ ์ดํด๋ณด์ธ์.
@fatherlinux Dockerfile ๋ด์์ COPY ๋ช ๋ น์ ์ฌ์ฉํ ์ ์์ ๋ ๋น๋ ์ด์์ฑ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น? ํฐ ํ์ผ์ ๋ณต์ฌ๋ณธ ์๋ฅผ ํผํ๊ณ (์๊ฐ ๋ณต์ก์ฑ ์ด์ ๋ก) ํ์ผ์ ์ปจํ ์ด๋์ ๊ณต์ ํ๊ธฐ ์ํ ๋น๋ ์ ์ฝ๊ธฐ ์ ์ฉ ์ต์ ์ ์ฐพ๊ณ ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
@arunmk ์ฐธ์กฐ https://github.com/moby/moby/issues/32507
@arunmk @cpuguy83 ์ ํํ. ์์ด๋์ด๋ ๋น๋ ์ ๋ฐ์ดํฐ๋ฅผ ์ปจํ ์ด๋์ ๋ณต์ฌํ๊ณ ์ถ์ง ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ ๊ทธ๊ฒ์ ๋งค์ฐ ํฌ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋จ์ง ๋น๋ ์๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์์ ๋ด์ฉ์ ๋ฐ๋ผ Red Hat ๋ฒ์ ์ docker ๋ฐ๋ชฌ์์ -v bind ๋ง์ดํธ๋ฅผ ์ํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ์ง๊ธ์ ์ฝ๊ธฐ ์ ์ฉ์ ๋๋ค(์ง๋ ์ฃผ์ ๋ถํ๋ฒ๋ ธ์ต๋๋ค).
๋ฐ๋ผ์ ์ค๋ ํ์ํ ๊ฒฝ์ฐ Fedora, CentOS ๋๋ RHEL์ ํ์ธํ๊ณ ๋น๋ ์ ๋ฐ์ดํฐ์ ์ฝ๊ธฐ ์ ์ฉ ๋ณต์ฌ๋ณธ์ ๋ง์ดํธํ ์ ์์ต๋๋ค...
๊ทธ๋ฆฌ๊ณ ๋น๋ ํ ๋ด์์ ์ด์์ฑ์ด ํ์ํ ๊ฒฝ์ฐ NFS ๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ ์ ์ํฉ๋๋ค....
๋ณต์ฌ์ ์ ๊ฒฝ ์ฐ์ง ์๊ณ ์ต์ข ์ด๋ฏธ์ง์ ์ ์ฅํ๋ ๋ฐ ์ ๊ฒฝ ์ด๋ค๋ฉด ๋ค๋จ๊ณ ๋น๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ธ์์ ์ธ ์:
FROM fatImage AS build
COPY bigData /data
RUN some_stoff /data
FROM tinyImage
COPY --from=build /data/result
@fatherlinux ์ค๋ช
๊ฐ์ฌํฉ๋๋ค
@cpuguy83 ์์ธํ ์ ๋ณด ๊ฐ์ฌํฉ๋๋ค. ํํ์ง ์์ ์ ์๋ ๋ด ๋ฌธ์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ถ๊ฐํ๊ฒ ์ต๋๋ค. 3.3GB ํ์ผ์ ์์ฑํ๋ ๋น๋ ์์คํ
์ด ์์ต๋๋ค. ์ด๋ ๋์ปค ์ปจํ
์ด๋ ๋ด์ ๊ตฌ์ถ๋ RPM์ ์ถ๊ฐ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ ๊ฐ์ ๋ณต์ฌ๋ณธ์ด ์์ฑ๋ฉ๋๋ค. ํ๋๋ ๋น๋ ์์คํ
์์ ๋์ปค ์ปจํ
์ด๋๋ก, ๋ค๋ฅธ ํ๋๋ ๋์ปค ์ปจํ
์ด๋์์ RPM ๋ด๋ก์
๋๋ค. ์ด์ ๋ ๋ฒ์งธ ์ฌ๋ณธ์ ํผํ ์ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์ฌ๋ณธ์ ํผํ๋ ค๊ณ ์๊ฐํ์ง๋ง ๋ค๋จ๊ณ ๋น๋์์๋ ๊ฐ๋ฅํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
๋์ฉ๋ ํ์ผ์ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํ๋ค๋ฉด ๋ค๋จ๊ณ ๋ณต์ฌ๊ฐ ๋ณต์ฌ ์คํ ํ์๋ฅผ '1'๋ก ์ค์๋ค๋ ๊ฒ์ ์ดํดํ ์ ์์ต๋๋ค. ํ ๋ฒ ์ฌ์ฉํ๊ณ ์ซ์๋ฅผ '0'์ผ๋ก ์ค์ด๊ณ ์ถ์์ต๋๋ค. ๋ถ๊ฐ๋ฅํ ๊ฒ์ด๋ผ๊ณ ์ดํดํ๋ ๊ฒ์ด ๋ง์ต๋๊น?
@arunmk ํด๋ผ์ด์ธํธ์์ ๋น๋ ์ธ์คํด์ค๋ก ๋ณต์ฌํด์ผ ํ๋ ๊ฒ์ด ๋ฌด์์ด๋ ์๊ด์์ต๋๋ค.
@ cpuguy83 ์ค๋ช ๊ฐ์ฌํฉ๋๋ค. ์ผ๋จ์ ์ค๋ฒํค๋๋ฅผ ๊ฐ์ํด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค. ์์์ฑ์ ๊ฐ๊ธฐ ์ํจ์ธ๊ฐ?
@fatherlinux
RHEL7์์ -v๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ ์ค์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ง์ดํธํ๋ ค๊ณ ์๋ํ์ง๋ง ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ณผ๋ฅจ์ ๋์ปค ๋น๋์์ ์ง์๋์ง ์์ต๋๋ค. ๋ฐ์ธ๋ ๋ง์ดํธ๋ง ์ฌ์ฉํ์ญ์์ค.
์ด๊ฒ์ Docker๊ฐ ์๋ RHEL์ docker ํจํค์ง์์๋ง ์๋ํฉ๋๋ค. ํจ์น๊ฐ ์ ์คํธ๋ฆผ์์ ์๋ฝ๋์ง ์์์ต๋๋ค.
@fatherlinux
RHEL7์์ -v๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ ์ค์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ง์ดํธํ๋ ค๊ณ ์๋ํ์ง๋ง ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ณผ๋ฅจ์ ๋์ปค ๋น๋์์ ์ง์๋์ง ์์ต๋๋ค. ๋ฐ์ธ๋ ๋ง์ดํธ๋ง ์ฌ์ฉํ์ญ์์ค.
@fcntl
์ค๋ฅ๊ฐ ๋งํ๋ฏ์ด ๋ฐ์ธ๋๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค. ์๋ง๋ $ /hostsomething:/containersomething
-v /something
๋ฅผ ์ฌ์ฉํ์ ๊ฒ์
๋๋ค.
@thebigb ๋ฐ ์๋ง๋ ๋ค๋ฅธ ์ฌ๋๋ค, ์ฐ๋ฆฌ๋ ๋์ปค ๋น๋ ์ค์ ccache๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์ธํ๋ผ๋ฅผ ์ค์ ํ์ต๋๋ค. ๋์์ด ๋๋ค๋ฉด https://github.com/WebHare/ccache-memcached-server ์ ๊ฒ์ํ์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์ด์์ ์ผ๋ก ํด๊ฒฐํ๋ฉด ์๋ง๋ ์ธ๋ชจ๊ฐ ์์ ๊ฒ์ ๋๋ค.
์ ๊ฐ ์ถ๊ฐํ๋ ค๊ณ ํ๋ ๋ฐ๋ก ๊ทธ ์ฌ์ฉ ์ฌ๋ก๋ ccache์ ๋๋ค. ๋์ปค ์ด๋ฏธ์ง ๋น๋ ์ค์ ccache ์บ์๋ฅผ ๋ง์ดํธํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์ด๋ฏธ์ง ์์ฒด์ ์๋ค๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค. @unilynx ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ข์ ํ์ด๋ฐ์ ๋๋ค!
๋ ๋ค๋ฅธ ๋ชฉ์๋ฆฌ๋ฅผ ๋ ๋๋ค.
๋ด ์ฌ์ฉ ์ฌ๋ก: ํ์ฌ ๋๋ rocker ์ MOUNT
๋ช
๋ น์ ์ฌ์ฉํ์ฌ /root/.cache
๋ฐ /var/cache/apk
๋๋ ํ ๋ฆฌ๋ฅผ ๊ณต์ ํฉ๋๋ค.
์ด๋ค ์ด์ ๋ก apk ํจํค์ง ๋ฐ pip ํจํค์ง์ ๋ํ ๋คํธ์ํฌ ์ก์ธ์ค๊ฐ ๋งค์ฐ(๋งค์ฐ, ๋งค์ฐ) ๋๋ฆฝ๋๋ค. ๋ชจ๋ ์ฌ๊ตฌ์ถ์ ํ๋ก์ธ์ค๋ฅผ ์์ฒญ๋๊ฒ ์๊ฐ ์๋ชจ์ ์ผ๋ก ๋ง๋ญ๋๋ค. ์ด ๋น๋ ํ์ MOUNT
๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์์
์ด ํจ์ฌ ์ฌ์์ง๋๋ค.
@embray @roxma ๋ https://github.com/moby/moby/issues/32507 ์ ์ฐธ์กฐํ์ฌ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ํผ๋๋ฐฑ ํ์
๋ค๋จ๊ณ ๋น๋ ์ ๋์ ์ผ๋ก Maven์ ๋ก์ปฌ ์บ์์ ๋ํ ๋ณผ๋ฅจ ๋ง์ดํธ๋ฅผ ์ง์ ํด์ผ ํ ํ์์ฑ์ด ์ค์ํ๋ค๋ ๊ฒ์ ์์์ต๋๋ค.
@gim913 ์ปค๋ฎค๋ํฐ์ ์ฐธ์ฌํ๋ ๋ฐฉ์์ด ์๋๋๋ค. ๊ธฐ์ฌํ๊ณ ์ถ๋ค๋ฉด ์ฌ๊ธฐ์ ๋งํฌ๋ ๊ธฐ์กด ์ ์์ ๊ฒํ ํ์ฌ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด ์๋์ง ํ์ธํ์ญ์์ค.
@gim913 ๋ค์ํ ๋ฐฐํฌํ์ ๋์ปค๋ฅผ ํตํฉํ๋ ์ด ๋จ๊ณ์์ ํ๊ฒฝ์ ๋ณ๊ฒฝํ๋ ๊ฒ(์ฆ, ๋์ปค๋ฅผ ์์ ํ ์ญ์ ํ๋ ๊ฒ)์ 'OS'๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ํ๊ดด์ ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค(๋ค๋ฅธ Linux ๋ฐฐํฌํ์์ ๋ค์์ ํฌํจํ๋ RedHat ๋น๋๋ก ์ ํํ๋ ๊ฒ์ ์๋ฏธํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. -V? )
RedHat์ docker ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ฝ์ง ์์๊น์? ์๋ง๋ ์ฌ๊ธฐ ๋๊ตฐ๊ฐ๊ฐ ๋น๋์์ '-v' ์ต์ ์ ์ป๊ธฐ ์ํด ๊ด๋ จ ํจ์น/ํฌํฌ/์ปค๋ฐ์ ์๋ ค์ค ์ ์์ต๋๋ค.
@unilynx ์ฌ๊ธฐ ์์ต๋๋ค
wget์ ์ฌ์ฉํ๋ ๋ช ๊ฐ์ง ์๋ฅผ ๋ณด๊ณ ์๋๋ฐ ์ฌ๊ธฐ๊น์ง ์์ต๋๋ค...๋ด ์ฌ์ฉ ์ฌ๋ก๋ ๋น์ทํฉ๋๋ค...ํฐ tarball์ ์์ถ์ ํ๊ณ ์คํํ๊ณ ์ถ์ต๋๋ค. tarball์ ์ฌ์ฉํ์ฌ ๋์ปค ํ์ผ์ ์ด์ง๋ฝํ๊ฑฐ๋ ๋ก์ปฌ ์น ์๋ฒ์์ wget์ ์ํํ๋ ๋ฐ ์๊ฐ์ ๋ญ๋นํ๊ณ ์ถ์ง ์์ต๋๋ค. docker compose๋ฅผ ์ฌ์ฉํ์ฌ ํ ์ ์๋ ๊ฒ์ฒ๋ผ ๋ง์ดํธํ๋ ๊ฒ์ ๋น๋ ์๊ฐ์ ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ๊ด์ฐฎ์ ๋ณด์ด๋ฉด Puneeth์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณํฉํ์ญ์์ค :-)
๋๋ ํ์ด์ฌ ๋ฐํด๋ฅผ ๋ฏธ๋ฆฌ ์ปดํ์ผํ๊ณ ๊ทธ๊ฒ๋ค์ ๋ณต์ฌํ์ง ์๊ณ ์ปจํ
์ด๋์ ์ค์นํ๊ณ ์ ๋ง๋ก ํ์ํ์ง ์๊ฑฐ๋ ์ด๋ป๊ฒ๋ ์ค์ฟผ์๋ฅผ ์๋ํด์ผ ํ๋ ๋ ์ด์ด๋ฅผ ๋ง๋ค๊ณ ์ถ์ต๋๋ค. 1์ผ์ฐจ์ ๋ฒ์จ rocker
์์๋ณด๊ณ ์์ด์ ๐ข ๐ข ๐ข
์ด๊ฒ์ ์ถ๊ฐํ๊ธฐ ์ฝ๊ณ ๋งค์ฐ ์ ์ฉํฉ๋๋ค(๋๋ ๋ง์ดํธ ๋ช
๋ น, rocker
๋ค์ ์ฐธ์กฐ). ์ด ๊ธฐ๋ฅ์ด๋ ์ด์ ์ ์ฌํ ๋๋ฝ ๊ธฐ๋ฅ์ ๋ํด (์ปค๋ฎค๋ํฐ์์) ์คํฌ๋ฆฝํ
ํ๋ ๋ฐ ์ผ๋ง๋ ๋ง์ ์๊ฐ์ด ์์๋ฉ๋๊น?
@awbacker Multi-stag ๋น๋๋ ๋ค์๊ณผ ๊ฐ์ ์์ ์ ์ํํ ์ ์๋ ๊ณณ์์ ์ด ๋ฌธ์ ๋ฅผ ๊ฝค ์ ํด๊ฒฐํฉ๋๋ค.
FROM something AS my_wheels
RUN compile_all_the_things
FROM something
COPY --from my_wheels /wherever
RUN do_stuff_with_wheels
์ฒซ ๋ฒ์งธ ๋ถ๋ถ์ ๋ฌด์ธ๊ฐ๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ์๋ง ์คํ๋ฉ๋๋ค. ์ด์ ๋ํ ์บ์๋ ๋ค๋ฅธ ๋น๋/๋์ปค ํ์ผ ๊ฐ์๋ ๊ณต์ ํ ์ ์์ต๋๋ค.
์ด๊ฒ์ ์ ์ฒด ๋น๋๋ฅผ ๋
๋ฆฝ์ ์ผ๋ก ๋ง๋ญ๋๋ค.
๋ํ ๋ง์ดํธ ์ฌ์์ด my_wheels
๋น๋ ํ๊ฒ์ ๋ณต์ฌํ๋ ๋์ ๋ง์ดํธํ๋๋ก ์ง์ํ๋ RUN --mount
๋ฅผ ํ์ฉํ๋ ์ ์๋ ์์ต๋๋ค.
@kenyee ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๊ฒ์ ๋น๋ ์ปจํ ์คํธ์์ ๋ฌด์ธ๊ฐ๋ฅผ ๋ง์ดํธํ ์ ์์ผ๋ฉฐ, 17.07-์คํ์์๋ ํ์์ ๋ฐ๋ผ ์ฆ๋ถ์ ์ผ๋ก๋ง ์ ์ก๋ฉ๋๋ค.
@ cpuguy83 ์ ์ด๋ Gradle Java ๋น๋์ ๊ฒฝ์ฐ ์ค์ ๋ก๋ ์๋ํ์ง ์์ต๋๋ค. Gradle Jar ํ์ผ์ด ๋ฏธ๋ฆฌ ์บ์๋ ๊ธฐ๋ณธ Docker ์ด๋ฏธ์ง๊ฐ ์์ง๋ง ์์ค์ Gradle ๋น๋๋ ๋ชจ๋ ์ข ์์ฑ์ ์บ์๋ก ๋ค์ด๋ก๋ํ๋ ํธ๋ฆฌ๊ฑฐ์ ๋๋ค.
@cpuguy83 ๋ค๋จ๊ณ๋ ๊ฒฐ๊ณผ ์ด๋ฏธ์ง์์ ๋ณต์ฌ๋ ํ ์ ์ ๊ฑฐํ๋ ๊ฒ์ ํ์ฉํ์ง ์์ต๋๋ค. @awbacker๊ฐ ๋งํ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ /wherever ํด๋์ ์ฝํ ์ธ ๊ฐ ์บ์๋๊ณ ์ด๋ฏธ์ง ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํฉ๋๋ค.
@BryanHunt ๋น๋ ํ๋ก์ธ์ค์ ์ผ๋ถ๊ฐ deps๋ฅผ ๋ค์ด๋ก๋ํ๋ ๊ฒ์ ๋๊น? ํ์คํ Gradle์ ์ค์ ๋ก ๋น๋ํ์ง ์๊ณ ์บ์ํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํด์ผ ํฉ๋๊น?
@cpuguy83 ์, deps๋ ๋น๋์ ์ผ๋ถ๋ก ๋ค์ด๋ก๋๋ฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Maven๊ณผ ๋์ผํฉ๋๋ค. ์ฐธ๊ณ : https://github.com/gradle/gradle/issues/1049
๋น๋ ๋ง์ดํธ์ ๋ํ PR์ด ์ด๋๊ฐ์ ์์์ต๋๊น?
@graingert ์ฌ๊ธฐ
๐์ด๋ฅผ ์ํด. Lunar Way์์๋ CI ์๋ฒ์์ ๋น๋ ๋ฐ ํ ์คํธ ์ข ์์ฑ์ ์ ๊ฑฐํ๊ธฐ ์ํด ๋จ์ผ Docker ๋น๋์์ ์์ ํ "๋น๋ -> ํ ์คํธ -> ํ๋ก๋์ ์ด๋ฏธ์ง ๋น๋" ํ๋ก์ธ์ค๋ฅผ ์ํํ๋ ค๊ณ ํฉ๋๋ค. ๋ค๋จ๊ณ ๋น๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ํํ ์ ์์ง๋ง ๋น๋ ํ๋ก์ธ์ค์ ์ค๊ฐ ์ปจํ ์ด๋์์ ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํ ์คํธ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ์คํํ ๋ค์ ํ ์คํธ๊ฐ ์ฑ๊ณตํ๋ ๊ฒฝ์ฐ์๋ง ์ ํ ์ด๋ฏธ์ง ๋น๋ ๋จ๊ณ๋ก ์งํํ๊ธฐ ์ํ ๋ณ๋์ Dockerfile์ ์ฌ์ฉํ์ฌ ์ง๊ธ ๋ ๋จ๊ณ๋ก ์ํํด์ผ ํฉ๋๋ค.
๋์ปค ๋น๋์ -v ์ต์ ์ ์ฌ์ฉํ๋ฉด CI ์๋ฒ์์ ๋ง์ดํธ๋ ํด๋์ ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ์ ์๊ณ ํ์ฌ 2๋จ๊ณ ํ๋ก์ธ์ค๊ฐ ํ์ํ์ง ์์ต๋๋ค.
@tbflw ๊ธฐ๋ณธ์ ์ผ๋ก Docker ๋น๋๋ ๋น๋ ์คํจ ํ ์ค๊ฐ ์ปจํ ์ด๋๋ฅผ ์ ๊ฑฐํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ํ ์คํธ๊ฐ ์คํจํ๋ฉด ํด๋น ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
์ ๋ฐ , ์ฐ๋ฆฌ๋ ์ด ๊ธฐ๋ฅ์ด ์ ๋ง ํ์ํฉ๋๋ค! ์์ ํจ์น๊ฐ ์๋ ๋ก์ปค ๋๋ ํฌํฌ ๋์ปค์ ๊ฐ์ ๋ค๋ฅธ ๋๊ตฌ์ ์์กดํ๋ ๊ฒ์ "์ด๋์ฑ ๊ตฌ์ถ"์ด๋ผ๋ ๋ณต์์ฃผ์์ ๊ฐ๋ ์ ๊นจ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ถํฉ๋๋ค.
@BryanHunt @stepps @yngndrw ๋ค๋ฅธ ์ฌ๋๋ค๋ @awhitford
๋น๋ ์ข
์์ฑ์ ์บ์ํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ ์ ๋ฌธ์์ ๋ค๋จ๊ณ go ๋น๋ ์์ ๋๋ python onbuild Dockerfile ์ฒ๋ผ ๋น๋๊ฐ ์๋ํ๋๋ก ํ๋ ๊ฒ์
๋๋ค.
๋ค์ ์ maven์์ ์๋ํ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ ์์ ์
๋๋ค. ์ฌ๊ธฐ์ ๋ณต์ฌํ๊ฒ ์ต๋๋ค.
FROM maven
WORKDIR /usr/src/app
# /root/.m2 is a volume :(
ENV MAVEN_OPTS=-Dmaven.repo.local=../m2repo/
COPY pom.xml .
# v2.8 doesn't work :(
RUN mvn -B -e -C -T 1C org.apache.maven.plugins:maven-dependency-plugin:3.0.2:go-offline
COPY . .
RUN mvn -B -e -o -T 1C verify
FROM openjdk
COPY --from=0 /usr/src/app/target/*.jar ./
๋๋จธ์ง ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ณต์ฌํ๊ธฐ ์ ์ ์ข ์์ฑ์ ๋ค์ด๋ก๋ํ๋๋ก ์ค์ ํด์ผ ํฉ๋๋ค. ๋ํ ์ํฐํฉํธ๊ฐ ์ ์ฅ ๋๋ ์์น๊ฐ VOLUME ์ ์๋์ง ํ์ธํฉ๋๋ค.
@sixcorners Gradle์์๋ ์๋ํ์ง ์์ต๋๋ค.
@BryanHunt ์ด Dockerfile ๋๋ ์ด ์ ๊ทผ ๋ฐฉ์์ gradle์์ ์๋ํ์ง ์์ต๋๊น? cpuguy83์ด ์ค์ ๋ก ๋น๋๋ฅผ ์ํํ์ง ์๊ณ ์ข ์์ฑ์ ๋ค์ด๋ก๋ํ๋ ๋ฐฉ๋ฒ์ด ์๋์ง ๋ฌป์ต๋๋ค. ์ข ์์ฑ ํด๊ฒฐ ์์ ์ ์ฐ๊ฒฐํ์ต๋๋ค. build.gradle ํ์ผ์ ์ถ๊ฐํ๊ณ ํด๋น ์์ ์ ์คํํ ์ ์์ต๋๊น?
@sixcorners ๋ชจ๋์ด ๋ง์ผ๋ฉด ๋น๋ ํ์ผ ๋ฐ ์์ฑ ํ์ผ๊ณผ ํจ๊ป ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ณต์ ํด์ผ ํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํ์ง๋ง ์ด๊ฒ์ ๋งค์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@sixcorners ์ ๋ค๋จ๊ณ๋ ํฅ๋ฏธ๋ก์ด ํธ๋ฆญ์ด๋ฉฐ ๋ค๋ฅธ ํจํค์ง ๊ด๋ฆฌ์(์: npm, ์๊ณก๊ฐ)์ ์ฌ์ฉ๋๋ ๊ฒ์ ๋ณด์์ต๋๋ค.
ํ์ง๋ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์คํ
์ด์ง 0 ์ด๋ฏธ์ง์์ ์ข
์์ฑ ๋ชฉ๋ก์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค COPY pom.xml
๋ ์ด์ด๊ฐ ์ ๊ฑฐ๋์ด ์ ์ฒด ์บ์๊ฐ ์ฌ๋ผ์ง๋๋ค. ์ฆ, ๊ฐ๋ฐ์๊ฐ pom(์ฃผ์, 1kBytes ์ข
์์ฑ)์์ ๋ฌด์์ด๋ ๋ณ๊ฒฝํ ๋๋ง๋ค ์ ์ฒด ์บ์๋ฅผ ๋ค์ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค.
์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋ค์ ๊ณ์ ๋ณ๊ฒฝ๋๋ ์ข ์์ฑ์ ์ฌ์ฉํ์ฌ ํ ์คํธ๋ฅผ ์คํํ๋ CI ๋จธ์ ์ ๊ฒฝ์ฐ(ํ๋ก์ ๋๋ ์ ์คํธ๋ฆผ์์) ๋ค์ ๋ค์ด๋ก๋ํด์ผ ํ๋ ์์ฒ ๊ฐ์ ํจํค์ง๋ก ์ธํด ์ฌ๊ตฌ์ฑ ์๋๊ฐ ์๋นํ ๋๋ ค์ง๋๋ค. ๋ณผ๋ฅจ์ผ๋ก ๋ง์ดํธ๋ ๋ก์ปฌ ํ์ผ ๊ธฐ๋ฐ ์บ์๊ฐ ํจ์ฌ ๋น ๋ฆ ๋๋ค.
์ด๋ ๊ฐ๋ฐ์๊ฐ ์ด๋ฏธ์ง ๋น๋๋ฅผ ๋ฐ๋ณตํ ๋, ํนํ ์ฐ๊ฒฐ ์๋๊ฐ ๋๋ฆฐ ๊ฒฝ์ฐ์๋ ๋ฌธ์ ์ ๋๋ค. ๋ก์ปฌ Nexus ์ธ์คํด์ค์ http_proxy๋ฅผ ์ค์ ํ ์ ์์ง๋ง ๋ค๋ฅธ ๋ถ์์ฉ์ด ์์ต๋๋ค(์: Nexus๋ฅผ ํตํ http ์์ฒญ ์ฑ๋๋ง).
๋ค๋จ๊ณ๋ ์ข์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด์ง๋ง ์ด์์ ์ด์ง๋ ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์๋ํ๋ ค๋ ์๋ฃจ์ ์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๊ณ ์ข ์์ฑ ์บ์๋ฅผ ์ ์งํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด ์ด๋ฏธ์ง๊ฐ ์ฑ์ ๋น๋ ์ด๋ฏธ์ง๊ฐ ๋ฉ๋๋ค. ์ด์์ ์ด์ง๋ ์์ง๋ง ์๋ํด ๋ณผ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ์ง๋ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ข ์์ฑ ๋ชฉ๋ก์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์คํ ์ด์ง 0 ์ด๋ฏธ์ง์ COPY pom.xml๋ก ์ธํด ๋ ์ด์ด๊ฐ ์ ๊ฑฐ๋์ด ์ ์ฒด ์บ์๊ฐ ์ฌ๋ผ์ง๋๋ค. ์ฆ, ๊ฐ๋ฐ์๊ฐ pom(์ฃผ์, 1kBytes ์ข ์์ฑ)์์ ๋ฌด์์ด๋ ๋ณ๊ฒฝํ ๋๋ง๋ค ์ ์ฒด ์บ์๋ฅผ ๋ค์ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค.
@hashar COPY --from
๊ธฐ๋ฅ์ ๋น๋ ๋จ๊ณ์๋ง ๊ตญํ๋์ง ์์ต๋๋ค. Dockerfile ์ฐธ์กฐ ์์ :
์ ํ์ ์ผ๋ก
COPY
๋ ์ ์ก๋ ๋น๋ ์ปจํ ์คํธ ๋์ ์ฌ์ฉํ ์ด์ ๋น๋ ๋จ๊ณ(FROM .. AS <name>
๋ก ์์ฑ)๋ก ์์ค ์์น๋ฅผ ์ค์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ํ๋๊ทธ--from=<name|index>
๋ฅผ ํ์ฉํฉ๋๋ค. ์ฌ์ฉ์์ ์ํด. ํ๋๊ทธ๋FROM
๋ช ๋ น์ด๋ก ์์ํ๋ ๋ชจ๋ ์ด์ ๋น๋ ๋จ๊ณ์ ํ ๋น๋ ์ซ์ ์ธ๋ฑ์ค๋ ํ์ฉํฉ๋๋ค. _ ์ง์ ๋ ์ด๋ฆ์ ๋น๋ ๋จ๊ณ๋ฅผ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ ๋์ผํ ์ด๋ฆ์ ์ด๋ฏธ์ง๋ฅผ ๋์ ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค. _
์ด๋ฅผ ํตํด ์ข ์์ฑ์ ๋ํ ์ด๋ฏธ์ง๋ฅผ _๋น๋_ํ๊ณ , ํ๊ทธ๋ฅผ ์ง์ ํ๊ณ , ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ข ์์ฑ์ ๋ณต์ฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด:
FROM maven
WORKDIR /usr/src/app
# /root/.m2 is a volume :(
ENV MAVEN_OPTS=-Dmaven.repo.local=../m2repo/
COPY pom.xml .
# v2.8 doesn't work :(
RUN mvn -B -e -C -T 1C org.apache.maven.plugins:maven-dependency-plugin:3.0.2:go-offline
COPY . .
RUN mvn -B -e -o -T 1C verify
docker build -t dependencies:1.0.0 .
๊ทธ๋ฆฌ๊ณ ์ข
์์ฑ์ ๋ํด dependencies:1.0.0
์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ํฉ๋๋ค.
FROM openjdk
COPY --from=dependencies:1.0.0 /usr/src/app/target/*.jar ./
๋๋ (ํ ์คํธํ ์์ฃผ ๊ธฐ๋ณธ์ ์ธ ์์ผ ๋ฟ์ ๋๋ค);
$ mkdir example && cd example
$ touch dep-one.jar dep-two.jar dep-three.jar
$ docker build -t dependencies:1.0.0 . -f -<<'EOF'
FROM scratch
COPY . /usr/src/app/target/
EOF
$ docker build -t myimage -<<'EOF'
FROM busybox
RUN mkdir /foo
COPY --from=dependencies:1.0.0 /usr/src/app/target/*.jar /foo/
RUN ls -la /foo/
EOF
๋น๋ ์ถ๋ ฅ์์ โโ๋ค์์ ๋ณผ ์ ์์ต๋๋ค.
Step 4/4 : RUN ls -la /foo/
---> Running in 012a8dbef91d
total 8
drwxr-xr-x 1 root root 4096 Oct 7 13:27 .
drwxr-xr-x 1 root root 4096 Oct 7 13:27 ..
-rw-r--r-- 1 root root 0 Oct 7 13:26 dep-one.jar
-rw-r--r-- 1 root root 0 Oct 7 13:26 dep-three.jar
-rw-r--r-- 1 root root 0 Oct 7 13:26 dep-two.jar
---> 71fc7f4b8802
์ด ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ์ธ๊ธํ ์ฌ๋์ด ์๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง(๊ฐ๋จํ๊ฒ ํ์ด์ง๋ฅผ ๊ฒ์ํ์ต๋๋ค) SSH ์ธ์ฆ ์์ผ์ ๋น๋ ์ปจํ ์ด๋์ ํ์ฌํ๋ฉด ๋น๊ณต๊ฐ git ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํตํด ๋ฐฐํฌ๋ ์ข ์์ฑ์ ํจ์ฌ ์ฝ๊ฒ ํ์ฉํ ์ ์์ต๋๋ค. ๋น ์ต์ข ๋น๋ ๋จ๊ณ ๋ฑ์์ ํค๋ฅผ ๋ณต์ฌํ๋ ๊ฒ๊ณผ ๊ด๋ จํ์ฌ Dockerfile ๋ด๋ถ์ ์์ฉ๊ตฌ์ ๋ํ ํ์์ฑ์ด ์ ์ต๋๋ค.
buildkit์๋ git์ ๋ํ ๊ธฐ๋ณธ ์ง์์ด ์์ต๋๋ค.
https://github.com/moby/buildkit
ํด๊ฒฐ.
bash ์คํฌ๋ฆฝํธ ์์ฑ(~/bin/docker-compose ๋ฑ):
#!/bin/bash
trap 'kill $(jobs -p)' EXIT
socat TCP-LISTEN:56789,reuseaddr,fork UNIX-CLIENT:${SSH_AUTH_SOCK} &
/usr/bin/docker-compose $@
๊ทธ๋ฆฌ๊ณ socat์ ์ฌ์ฉํ๋ Dockerfile์์:
...
ENV SSH_AUTH_SOCK /tmp/auth.sock
...
&& apk add --no-cache socat openssh \
&& /bin/sh -c "socat -v UNIX-LISTEN:${SSH_AUTH_SOCK},unlink-early,mode=777,fork TCP:172.22.1.11:56789 &> /dev/null &" \
&& bundle install \
...
or any other ssh commands will works
๊ทธ๋ฐ ๋ค์ docker-compose build
๋ฅผ ์คํํฉ๋๋ค.
๋๋ฏธ์ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋์ง๊ธฐ ์ํด. Windows์ฉ Docker๋ฅผ ์ฌ์ฉํ์ฌ ํ๋์ ์ปจํ ์ด๋์ ์๋ฒ ๋๋ Linux ์์คํ ์ ๋น๋ํ๊ธฐ ์ํ ํ์ผ ์์คํ ์ ์์ฑํ๊ณ ๋น๋ ๋จ๊ณ์์ ์ด๋ฅผ ๋ค๋ฅธ ์ปจํ ์ด๋์ ๊ณต์ ํ๊ณ ์ถ์ต๋๋ค. ์ด ์ปจํ ์ด๋์ ์ํธ ์์ฉํ์ฌ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ๊ณ ๋ค์ ๋น๋ํ๋ ๋ฑ Dockerfile์์ ๋น๋๋ฅผ ์ํํ๊ณ ๋ค๋จ๊ณ ๋น๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ฆ๋ถ ๋น๋๋ฅผ ์๊ฒ ๋๋ฏ๋ก ์ ํฉํ์ง ์์ต๋๋ค. ํด๋ฆฐ ๋น๋๋ฅผ ์ํํ๋ ๋ฐ ์ฝ 1.5์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฏ๋ก ์ด์ ๋น๋ ์ํฐํฉํธ๋ฅผ ์บ์ํ๊ณ ์ถ์ต๋๋ค. Windows๊ฐ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก ์ธํด ํธ์คํธ ๋ง์ดํธ ๋ณผ๋ฅจ์ผ๋ก ๋น๋๋ฅผ ์ํํ ์ ์์ผ๋ฏ๋ก ๋ช ๋ช ๋ ๋ณผ๋ฅจ์ ์ฌ์ฉํฉ๋๋ค. ์ด์์ ์ผ๋ก๋ ๋ค๋ฅธ ์ด๋ฏธ์ง์ ๋น๋ ๋จ๊ณ์์ ์ด๋ฌํ ๋ช ๋ช ๋ ๋ณผ๋ฅจ์ ๊ณต์ ํ๊ณ ์ถ์ต๋๋ค. ํ์ฌ ๋น๋ ์ถ๋ ฅ์ tar(์ฝ 4GB)๋ฅผ ๋ง๋ ๋ค์ ๋์ปค ๋ณต์ฌ๋ฅผ ์ํํ์ฌ ํ์ ๋น๋๋ฅผ ์ํด Windows ํธ์คํธ์์ ์ฌ์ฉํ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค.
python์ ๊ฒฝ์ฐ pip install package
ํ๋ฉด ํด๋น ์ข
์ ํญ๋ชฉ์ด ์บ์ ํด๋์ ๋ค์ด๋ก๋๋ ๋ค์ ์ฌ์ดํธ ํจํค์ง์ ์ค์น๋ฉ๋๋ค.
์ข์ ์ต๊ด์ผ๋ก pip --no-cache-dir install package
๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ๋ ์ด์ด์ ์ฐ๋ ๊ธฐ/์บ์๋ฅผ ์ ์ฅํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ํด ์บ์ ํด๋๋ฅผ ๋น๋ ์ปจํ
์คํธ์์ ์ ์ธํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ฐ๋ผ์ build time -v๊ฐ ๋์์ด ๋ ๊ฒ์
๋๋ค.
์์์ ์ธ๊ธํ ์ผ๋ถ ์ฌ์ฉ์๊ฐ COPY . /somewhere/in/container/
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ฌ์ฉ์ ์ฑ์ด๋ ํ์ผ์ ์ ํฉํ์ง๋ง ์บ์์๋ ์ ํฉํ์ง ์์ต๋๋ค. COPY๋ ์์ฒด ๋ ์ด์ด๋ฅผ ํ๋ ๋ ์์ฑํ๊ณ ์ดํ ๋ ์ด์ด์์ ์บ์๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ ์ ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ค๋ฅธ ๋์ ๋ถ์์ฉ์ COPY๋ฅผ ์ฌ์ฉํ ๋ ์บ์๊ฐ ๋ณ๊ฒฝ๋๊ณ ์ปจํ
์คํธ๊ฐ ๋ณ๊ฒฝ๋๊ณ ๋ค์ ๋ ์ด์ด๊ฐ ๋ฌดํจํ๋๊ณ ๊ฐ์ ๋ก ์ฌ๊ตฌ์ถ๋๋ ๊ฒฝ์ฐ์
๋๋ค.
@wtayyeb ์๊ตฌ ์ฌํญ ํ์ผ์ด ๋ณ๊ฒฝ๋ ๋๋ง pip install ...
๋ฅผ ์คํํ๋ Dockerfile์ด ์๋ ๊ฒฝ์ฐ ์๊ตฌ ์ฌํญ์ด ๋น๋ํ ๋ ์์ฉ ํ๋ก๊ทธ๋จ๋งํผ ์์ฃผ ๋ณ๊ฒฝ๋์ง ์๊ธฐ ๋๋ฌธ์ build time -v๋ ๊ทธ๋ค์ง ์ค์ํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
@wtayyeb ๋ค๋จ๊ณ Dockerfile์ ์ฌ์ฉํ์ฌ ์บ์์ ๋ฆฐ ์ด๋ฏธ์ง๋ฅผ ๋ชจ๋ ๊ฐ์ง ์ ์์ต๋๋ค. ์ฆ, ์ค์น ํ๋ก๊ทธ๋จ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ Python์ ์ผ๋ถ ๋๋ ํ ๋ฆฌ์ ์ค์นํ ๋ค์ ์ต์ข ์ด๋ฏธ์ง์ COPY --from์ ์ฌ์ฉํ์ฌ ์ค์น ์ํฐํฉํธ ๋๋ pip ์์ฒด ์์ด ํ์ํ Python ํ์ผ๋ง ์ ์กํฉ๋๋ค.
@manishtomar , ๊ฐ์ฌํฉ๋๋ค. ์, ์๋์! ๊นจ๋ํ ๊ฒฝ์ฐ ๋ชจ๋ ์ข
์์ฑ์ด ๋ค์ ๋ค์ด๋ก๋๋์ด ํ ๋ก ๋น๋ ๋ฐ ๋ณํ๋๊ณ ์บ์๋ ๋ค์ ๋์ ํ๊ฒฝ์ ์ค์น๋ฉ๋๋ค. ๋ฐ๋ผ์ ์๊ตฌ ์ฌํญ์ ์
๋ ฅํ๋ฉด ์ผํ์ฑ ์์
์
๋๋ค. ๊ทธ๋ฌ๋ ํ๋์ ์์ ์ข
์์ฑ์ด ์
๋ฐ์ดํธ๋๋ฉด ๋ชจ๋ ์ข
์์ฑ์ ๋ค์ ๋ค์ด๋ก๋ํ๊ณ , ๋ค์ ๋น๋ํ๊ณ , ํ ๋งํ๊ณ , ๋ค์ ์บ์ํด์ผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
CI๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์์
์ ๋งคํธ๋ฆญ์ค์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋น๋ํ๊ณ ํ
์คํธํ ๋ CI ์๋ฒ์ ๋์ ์์
์์ ์์
์ ๊ณฑํ๋ฉด SSD๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ iowait๊ฐ 3์ด ์ด์์ผ๋ก ์ฆ๊ฐํ๊ณ ๋ก๋ ํ๊ท ์ด 15๋ฅผ ์ด๊ณผํ๊ฒ ๋ฉ๋๋ค. (์ด ์ซ์๋ 2๊ฐ์ ๋์ ๋น๋ ๋ฐ ~20๊ฐ์ ์ข
์์ฑ์ด ์๋ ์ฑ์ ๊ฒฝ์ฐ ์ค์ ์
๋๋ค.) pip ์บ์๊ฐ ์ฌ๋ฐ๋ฅธ ๋ฐฉ์์ผ๋ก ์ํํ๊ณ ์์ผ๋ฉฐ, ์ค๋น๋ ํจํค์ง๋ฅผ ๋ค์ ๋ค์ด๋ก๋ํ๊ณ , ๋ค์ ๋น๋ํ๊ณ , ๋ค์ ๋๋ฆฌ๋ ๊ฒ์ ํผํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. bind -v๊ฐ ์์ผ๋ฉด ์๊ฐ๊ณผ ์๋ฒ ๋ฆฌ์์ค๊ฐ ๋์จํด์ง๋๋ค.
@ibukanov , ๊ฐ์ฌํฉ๋๋ค. ๋ด ์ฑ ํจํค์ง๋ฅผ ๋น๋ํ๊ณ ๋์ค์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ค๋จ๊ณ Dockerfile์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. Dockerfile์ด ํ๋๋ง ์๊ณ ์ฌ๋ฌ ๋ฒ ๋น๋ํ๋ ค๋ ๊ฒฝ์ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ Dockerfile์ด ์ฌ๋ฌ ๊ฐ ์๊ณ ๊ฐ ํ์ผ์ด Python ๋ฒ์ (ํ์ฌ๋ 2.7,3.6)์ ๋ํด ๋น๋๋๊ณ ํ์ํ ์ฌ๋ฌ c-ํ์ฅ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ๋ ๊น์? ์ ํํ ๊ธฐ๋ณธ ์ด๋ฏธ์ง์ ๋ํด ๋น๋ํ์๊ฒ ์ต๋๊น? ์ ๋จ๋ฝ์ ์ด๋ป์ต๋๊น?
@thaJeztah ๋น์ ์ ์ ์์ ํ๋ฅญํ๊ณ ์๊ฐ์ ์ ์ฝํ ์ ์์ง๋ง ๋น๋ ์บ์์ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ด๋ฏธ์ง์์ ์๋ฌด ๊ฒ๋ ๋ณต์ฌํ๊ณ ์ถ์ง ์์ต๋๋ค.
๋ณต์ฌํ์ง ์๊ณ ๋ค๋ฅธ ์ด๋ฏธ์ง์ ์ก์ธ์คํ ์ ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
@thedrow ๋ด ์๋ ํ์ฌ ์กด์ฌํ๋ ๊ธฐ๋ฅ์ ๋ํ ๊ฒ์ด์์ต๋๋ค. RUN --mount
์ ์(https://github.com/moby/moby/issues/32507)์ ์ดํด๋ณด์ญ์์ค. ๊ทํ์ ์ฌ์ฉ ์ฌ๋ก์ ๋ ์ ํฉํ ์ ์์ต๋๋ค.
์์ ์ค๋ ๋๋ฅผ ์ฝ๊ณ ๋ง์ ์ฌ๋๋ค์ด ๋์ปค ๋น๋ ํ๋ก์ธ์ค์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ ๊ฒฉ์ฐจ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํด๋ฌ์ง๋ฅผ ์ฐพ์ผ๋ ค๊ณ ๋ ธ๋ ฅํ๋ ๊ฒ์ ๋ด ๋๋ค. ๋๋ ํธ์คํธ ๋ง์ดํธ๋ฅผ ์ด๋ฏธ์ง ๋ง์ดํธ์ ํผ๋ํ์ง ์๊ณ ์ด์์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ค๋๋ ฅ ์๋ ์ฃผ์ฅ์ ๋ณผ ์ ์์ต๋๋ค.
๋๋ ๋ํ ์ ํฌ ์ปจํ ์ด๋ ์ฌ์ฉ์์ด๊ณ https://github.com/moby/moby/issues/3156 ์์ ๋ฆฌ๋๋ ์ ๋์์ต๋๋ค. ์ด๊ฒ์ ์ด ๋๋ฝ๋ ๊ธฐ๋ฅ์ ๋ํ ์์ ํ ์ ํจํ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค.
๋ด๊ฐ ์ ๋ง๋ก ์ํ๋ ๊ฒ์ ๋น๋ ์๊ฐ์ ๋ค๋ฅธ ์ด๋ฏธ์ง์ ๋ด์ฉ์ ๋ง์ดํธํ์ฌ ์ด๋ฏธ์ง๊ฐ ๋ถํ๋ ค์ง์ง ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
@kbaegis ๋ https://github.com/moby/moby/issues/32507 ์์ ์ ์๋ ๊ธฐ๋ฅ๊ณผ ์ ํํ ์ผ์นํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
ํ์ ํ๋. ๊ทธ๊ฒ์ ๋ฐฑ๋ก๊ทธ์์ 3๋ ์ด ์๋ 1๋ ๋์ ๊ตฌํ๋์ง ์์ P3์ผ ๋ฟ์ ๋๋ค.
https://github.com/projectatomic/buildah ๊ฐ ์ค์ ๋ก ์ด ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ๋ํด ์ฌ๊ธฐ์์ ๋์ปค ๋น๋๋ฅผ ํจ์ฌ ๋ฅ๊ฐํ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฐ ์ผ์ด ๋ฐ์ํ๋ฉด ํ์ดํ๋ผ์ธ์ ์ ํํ ์๊ฐ์ ๋๋ค.
@kbaegis ์ด ํ ๋ก ์ ๋ฌด์์ ์ถ๊ฐํ๊ธฐ ์ํด ์ฌ๊ธฐ์ ์ค์ จ์ต๋๊น? ๋ค๋ฅธ ์ ์๊ณผ _์ ํํ_ ์ผ์นํ๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ค๋ช ํ์ต๋๋ค.
๋ด๊ฐ ์ ๋ง๋ก ์ํ๋ ๊ฒ์ ๋น๋ ์๊ฐ์ ๋ค๋ฅธ ์ด๋ฏธ์ง์ ๋ด์ฉ์ ๋ง์ดํธํ์ฌ ์ด๋ฏธ์ง๊ฐ ๋ถํ๋ ค์ง์ง ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๊ฒ์ ์คํ ์์ค์ด๋ฉฐ ๋ชจ๋ ๊ฒ์ด ๋ง๋ฒ์ฒ๋ผ ์กด์ฌํ์ง ์์ต๋๋ค.
ํ ๋ก ์ ๋ฌด์์ ์ถ๊ฐํ๋ ค๊ณ ํฉ๋๊น?
๊ฐ๋จํ ๋งํด์ ์ด ๋๊ตฌ ์ธํธ์์ ๊ณ์ ์งํํ๊ฒ ์ต๋๋ค. ์ ํผ์๊ฐ ์๋๋ผ๋ ํ์ ์ด ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ ํ์ ๊ท์คํ ์ ๋ณด๋ผ๊ณ ํ์ ํฉ๋๋ค.
์ด ์ฌ์ฉ ์ฌ๋ก(๋ฐ ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ ๋ขฐํ ์ ์๋ ํด๊ฒฐ ๋ฐฉ๋ฒ)๋ฅผ ์ง์ํ๊ธฐ ์ํ ๋น ๋ฅธ ์๋์ ๋ฎ์ ์ฐ์ ์์๋ก ์ธํด ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋์๊ณ ๊ธฐ๋ฅ ๋๋ฝ์ผ๋ก ์ธํด ์ด ๋น๋ ํ์ดํ๋ผ์ธ์ ํฌ๊ธฐํ๊ณ ์์ต๋๋ค.
์ถ๊ฐํ ์ ์ค ์ผ์ด์ค๊ฐ ์์ต๋๋ค. #32507์ด ๋ ์ ์ด์ธ๋ฆฝ๋๋ค.
์ผ๋ถ ์๋ฌผ ์ ๋ณดํ ํ์ดํ๋ผ์ธ์ ๋ํ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ถ ์ค์ ๋๋ค. ์ผ๋ถ ๋๊ตฌ๋ ์ปดํ์ผ/์ค์น ์ ์ ์ผ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ด์ผ ํฉ๋๋ค( ์ ์ฝ๋ ๊ฐ ์๋๋ฏ๋ก ๋ฌป์ง ๋ง์ญ์์ค). ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌด๊ฒ๋ ์ต์ 30GB์ ๋๋ค.
๋ฐํ์ ๋์์๋ ํด๋น ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ -v
๋ณผ๋ฅจ์ผ๋ก ๋ง์ดํธ๋ ์์ ์
๋๋ค. ๋ถํํ๋ ๋น๋ ํ๋ก์ธ์ค ์ค์ "๋ฒ ์ดํน"ํ์ง ์๊ณ ๋ ์ด ์์
์ ์ํํ ์ ์์ผ๋ฏ๋ก ๋ค์ ์ธ์ค์ ์ธ ํฌ๊ธฐ์ ์ด๋ฏธ์ง๊ฐ ์์ฑ๋ฉ๋๋ค.
@draeth ๋ https://github.com/grammarly/rocker ๋ฅผ ์ดํด๋ณด์ญ์์ค. ์ด๋ฏธ ๋ฉ์ง MOUNT ๋ช ๋ น์ด๋ฅผ ์ง์ํฉ๋๋ค.
@draeth ๋ ๋ํ Buildah๋ฅผ ํ์ธํ์ญ์์ค. ํ๋ก๊ทธ๋๋ฐ ๋๊ตฌ์ฒ๋ผ ์ค์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ง์ดํธ๋ฅผ ์ง์ํฉ๋๋ค. Dockerfile์ ์ฌ์ฉํ ๋ง์ดํธ๋ ์ง์ํฉ๋๋ค.
@fatherlinux ์ @lig ๋ชจ๋์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ด๊ฒ์ ์ ์์ ์ ์๋ฃํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค. ๋๋ ์ฌ์ ํ ๊ทธ๊ฒ์ ํ๊ธฐ ์ํด ํ๋ก์ ํธ ์ธ๋ถ์์ ๋ฒ์ด๋ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํ๊ณ ์ฌ์ ํ ์ด๊ฒ์ ๋ณด๊ณ #32507์ด ๊ตฌํ๋๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค ;)
๋๋ '๋์ปค ์คํ' ์๊ฐ์ด ์๋ '๋์ปค ๋น๋' ์๊ฐ์ ๋์ผํ ๊ธฐ๋ฅ, ๋ณผ๋ฅจ์ ์์ฒญํ๊ธฐ ์ํด ์ธํฐ๋ท ๊ฒ์์ ํตํด ์ฌ๊ธฐ์ ์์ต๋๋ค.
CPU๊ฐ ํฌํจ๋ ์๋ฒ ๋๋ ์์คํ ์ด ์์ต๋๋ค. ์ ์กฐ์ ์ฒด๋ ์์คํ ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ฑํ ๋ค์ ์ด๋ฏธ์ง๋ฅผ CPU๋ก ์ ์กํ๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ๋๊ตฌ๋ ์ 3์์ด๋ฉฐ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ ์กฐ์ ์ฒด๋ ๋ด ์์ฒญ์ ๋ฐ๋ผ ๋ณ๊ฒฝํ์ง ์์ ๊ฒ์ ๋๋ค.
์ฒซ ๋ฒ์งธ ํจ์ค "ํ์จ์ด ์ด๋ฏธ์ง ๋น๋"๋ฅผ ์ํํ๋ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋ค์ ํ์จ์ด ์ด๋ฏธ์ง๋ฅผ ์ต์ ์คํ๋ผ์ธ PCB์ ํธ์ํ๋ ์ปจํ
์ด๋๋ฅผ ์์ฑํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค. Dockerfile์ ๋ค์๊ณผ ๊ฐ์ ์ ์์ต๋๋ค.
----------[ ์ฌ๊ธฐ ์๋ฅด๊ธฐ ]----------
FROM ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ๋น๋๋ก ์ฌ์ฉ
๋ณต์ฌ src src
RUN ๋น๋-src
FROM ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ํ๋์
๋ก ์ฌ์ฉ
๋ณต์ฌ --from=๋น๋ ๋น๋ ์ํฐํฉํธ
RUN cpu-build-and-flash --build-only
----------[ ์ฌ๊ธฐ ์๋ฅด๊ธฐ ]----------
๋ถํํ๋ cpu-build-and-flash ๋จ๊ณ์์๋ ํ์จ์ด ์ด๋ฏธ์ง๋ฅผ ์ฅ์น๋ก ํธ์ํ์ง ์๋๋ผ๋ USB ๋ฒ์ค๋ฅผ ํตํด ๋์ ์ฅ์น์ ์ก์ธ์คํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ 'docker run' ๋ช
๋ น์์ '-v /dev/usb/bus:/dev/usb/bus'๋ฅผ ๊ฐ์ ธ์์ ๋์ ๋น๋์ ํฌํจํด์ผ ํฉ๋๋ค.
์ด๊ฒ์ ํ์ฌ ๋ถ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด ๋ถ๋ช ํฉ๋๋ค.
๋ด๊ฐ ์งํํ๋ ค๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ปจํ ์ด๋๋ฅผ ์ด๋ฏธ์ง์ '๋์ปค ์ปจํ ์ด๋ ์ปค๋ฐ'ํ์ฌ ๊น๋ฐ์ด๋ ์ด๋ฏธ์ง๋ฅผ ์๋์ผ๋ก ๋ง๋๋ ๊ฒ์ ๋๋ค. ๋น๋ ํ์์ USB ๋ฒ์ค๋ฅผ ๋ง์ดํธํ๋ ๊ฒ์ด ํจ์ฌ ๋ซ์ต๋๋ค.
๊ด์ฌ ์๋ ๋ถ๋ค์ ์ํ ์ ๋ฐ์ดํธ: ์ต๊ทผ์ buildah๋ก ์ ์ฒด ํ์ดํ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ฌ๊ตฌ์ถํ์ต๋๋ค. ํ์ฌ ๋ณ๋ ฌ๋ก ์คํ๋๋ ๋ ๊ฐ์ ๋น๋ ํ์ดํ๋ผ์ธ์ด ์๊ณ oci/buildah ํ์ดํ๋ผ์ธ์ด ๋ ์์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ณ ์์ต๋๋ค(ํนํ ๋ค๋ฅธ ๋ง์ดํธ๋ก ๋ง์คํนํ์ฌ ์ ๊ฒฝ์ฐ์๋ /usr/portage ์ ๊ฑฐ).
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก ์ด ๊ธฐ๋ฅ์ด ์์ต๋๋ค: https://github.com/docker/docker-py/issues/1498
ํ์ง๋ง ๋น๋ ์บ์๋ฅผ ์ํ RW ๋ณผ๋ฅจ์ ์ํฉ๋๋ค.
2018๋ 4์ 28์ผ ํ ์์ผ 17:29 ะะพัะตะฝะฑะตัะณ ะะฐัะบ, [email protected] ์์ฑ:
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก ์ด ๊ธฐ๋ฅ์ด ์์ต๋๋ค: docker/docker-py#1498
https://github.com/docker/docker-py/issues/1498โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/moby/moby/issues/14080#issuecomment-385188262 ๋๋ ์์๊ฑฐ
์ค๋ ๋
https://github.com/notifications/unsubscribe-auth/AAZQTJodLCCzyDdPFtNiIUZ_z85YvLWbks5ttJjagaJpZM4FIdOc
.
๋ํ CI ํ์ดํ๋ผ์ธ์ ๋ค๋จ๊ณ ๋น๋ ํ๋ก์ธ์ค ์ค์ ๋จ์ ํ ์คํธ ๊ฒฐ๊ณผ ํ์ผ์ ๋ด๋ณด๋ผ ์ ์๋๋ก ์ด ๊ธฐ๋ฅ(์ฐ๊ธฐ ๊ธฐ๋ฅ ํฌํจ)์ ๋ณด๊ณ ์ถ์ต๋๋ค. ๋น๋ ์ด์์ฑ์ ์ ์ ์ ์ ์งํ๊ธฐ ์ํด -v ์ค์์น๊ฐ ์ ๊ณต๋์ง ์์ผ๋ฉด ํ์ผ์ ํด๋น ๋จ๊ณ์ ํ ์คํธ ์ด๋ฏธ์ง ๋ด์์ ๋ด๋ถ์ ์ผ๋ก ๊ฐ๋จํ ์์ฑ๋ฉ๋๋ค.
์ด์์ ์ธ ๋ชฉํ๋ ํ ๋ฒ ๋น๋ํ๊ณ ํ ๋ฒ ํ ์คํธํ๋ฉฐ ํ ์คํธ๊ฐ ์คํจํ์ฌ ๋น๋๋ฅผ ์ค์งํ๋ ๊ฒฝ์ฐ(ํนํ ์ด๋ฒคํธ)์๋ ํธ์คํธ ์์คํ ์ ๊ฒฐ๊ณผ ํ์ผ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค.
์, ๋ถํํฉ๋๋ค. ํ๋ฃจ ์ข ์ผ.
์์ ํ ๊ด๋ จ์ด ์๋ ๊ฒ์ ์๋์ง๋ง ๋ฐฐํฌ ์ธํ๋ผ์ ์ผ๋ถ๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ ์์ผ๋ฉฐ ๋น๋ ํ ์ด๋ฏธ์ง์์ ํ์ผ์ ๋ณต์ฌํ๋ ๋ฐฉ๋ฒ์ด ํ์ํ์ต๋๋ค. ๋ค์์ ํธ๋ฆญ์ ์ํํ์ต๋๋ค.
docker build -t x .
ID=$(docker create x)
docker cp $ID:/package.deb .
docker rm $ID
๋ค๋จ๊ณ ๋์ปค ํ์ผ์ด ๋์ ๋์์ ๋ ์ด๋ฏธ ์ถ๊ฐ๋์ด ์์ด์ผ ํฉ๋๋ค. ๊ฒฐ๊ตญ CI ๋น๋ ํ์ดํ๋ผ์ธ์ ๊ฒฝ์ฐ ํนํ ๋ค๋จ๊ณ ๋์ปค ํ์ผ์ ํ ๋จ๊ณ๋ก ๋จ์ ํ ์คํธ๋ฅผ ์คํํ๊ธฐ ์์ํ์๋ง์ ๋ชจ๋ ์ฌ๋์ด ์ด ๋ฌธ์ ์ ์ง๋ฉดํ๊ฒ ๋ ๊ฒ์ ๋๋ค. ๋ํ ๋จ์ ํ ์คํธ ๋ณด๊ณ ์๋ฅผ VSTS์ ๊ฒ์ํด์ผ ํ๋ ์ด ๋ฌธ์ ์ ์ง๋ฉดํด ์์ต๋๋ค. ์ด๋ฏธ @hoffa ๊ฐ ์ธ๊ธํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ์ฉํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฒฐ๊ตญ ๊ทธ๊ฒ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด๋ฉฐ ์ผ์ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค.
๋น๋ ์บ์๋ฅผ ์ํ ๋น๋ ์๊ฐ ๋ณผ๋ฅจ์ ์ํ๊ฑฐ๋ ํ์๋ก ํ๋ ์ฌ๋๋ค์ ์ํด ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๊น?
@ajbouh ์, ์๋ง๋ https://github.com/moby/buildkit/issues ์์
https://github.com/moby/moby/issues/32507#issuecomment -391685221 ์ฐธ์กฐ
2018๋ 5์ 23์ผ ์์์ผ 19:22 Akihiro Suda [email protected] ์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@ajbouh https://github.com/ajbouh ์, ์๋ง๋
https://github.com/moby/buildkit/issuesโ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/moby/moby/issues/14080#issuecomment-391566368 ๋๋ ์์๊ฑฐ
์ค๋ ๋
https://github.com/notifications/unsubscribe-auth/AAAcnSqNoVc4j34ElECy53gIfPecQFKfks5t1hlkgaJpZM4FIdOc
.
๋น๋ ์ ๋ณผ๋ฅจ์ ์ถ๊ฐํ ์๋ ์์ง๋ง ํธ์คํธ๋ฅผ ์ถ๊ฐํ ์ ์์ผ๋ฏ๋ก ์ด์ ๋น๋ ์ด๋ฏธ์ง๊ฐ ๋ํผ๋ฅผ ํตํด ๊ฐ์งํ๋ yum ๋ฏธ๋ฌ๋ฅผ ์ ๊ณตํ๋ --add-host yum-mirror:$MIRROR_IP
์ ๊ฐ์ ๊ฒ์ผ๋ก ๋ชจ๋ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋น๋ํฉ๋๋ค. ๋ . ๋ด ํ๋ก์ ํธ๊ฐ ํ๋ฃจ์ ์ฌ๋ฌ ๋ฒ ์ข
์์ฑ์ ๋ณ๊ฒฝํ๊ณ ์คํ๋ผ์ธ ์ํ์ด๊ฑฐ๋ ์ฐ๊ฒฐ ์ํ๊ฐ ์ข์ง ์์ ๋ ํธ๋ฆฌํฉ๋๋ค(ํ๋ก์ ํธ์ ์ผ๋ถ์๋ ๋ง์ dep ์
๋ฐ์ดํธ ๋ฐ ์ ๋ฆฌ๊ฐ ํฌํจ๋จ).
๋๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ Docker์ ์ ํญ์ด ํ๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋น๋ํท์ ๋ํ ์คํ์ ์ง์์ด ์ต๊ทผ ๋ณํฉ๋์์ผ๋ฉฐ RUN --mount=<opts> <command>
์ต์
์ด ์ ๊ณต๋ฉ๋๋ค.
@cpuguy83 ์ฐธ๊ณ ๋งํฌ: https://github.com/moby/buildkit/pull/442
@glensc @cpuguy83 ์ด ๋ณํฉ๋ ๊ธฐ๋ฅ์ ์ถ์๋ฅผ ์ธ์ ์์ํ ์ ์์ต๋๊น?
+1
RUN --mount
์๋ ๋ณผ๋ฅจ ์ง์์ด ์์ผ๋ฏ๋ก https://github.com/avsm/docker-ssh-agent-forward ์ ๊ฐ์ ๊ฒ์ ๋น๋ ์ ๋ถ๊ฐ๋ฅํ ์ํ๋ก ์ ์ง๋ฉ๋๋ค. ์ด์ ๋ํ ์๋ฃจ์
์ ๋ฌด์์
๋๊น?
@ํผํฐ ์์ง https://github.com/moby/buildkit/pull/655
docker build --secret
๋ Docker 18.09์์ ๋ง์นจ๋ด ์ฌ์ฉํ ์ ์์ต๋๋ค. https://medium.com/@tonistiigi/build -secrets-and-ssh-forwarding-in-docker-18-09-ae8161d066
์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ ์ ์์ต๋๊น?
--secret
๋ ์บ์ฑ ์ฌ์ฉ ์ฌ๋ก์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
@AkihiroSuda RUN --mount
์ผ๋ฐ์ ์ผ๋ก ์ด ๋ฌธ์ ์ ๋ํ ์๋ฃจ์
์ผ๋ก ์ ํฉํ ๊ฒ ๊ฐ์ต๋๋ค.
์, RUN --mount=type=cache
(์บ์ ๋ณผ๋ฅจ์ ๊ฒฝ์ฐ) ๋ฐ --mount=type=secret
์ docker build --secret
(๋น๋ฐ ๋ณผ๋ฅจ์ ๊ฒฝ์ฐ)๊ฐ ๊ฑฐ์ ๋ฌธ์ ๋ฅผ ๋ค๋ฃน๋๋ค.
@AkihiroSuda ๊ทธ๋์, ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์์ ์์ ๋ฅผ ๋ณด๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค.
@AkihiroSuda ๊ธฐ์ฌ์์ (https://medium.com/@tonistiigi/build-secrets-and-ssh-forwarding-in-docker-18-09-ae8161d066) ๋น๋ ์ค ๋ง์ดํธ๋ฅผ ์ฌ์ฉํ๋ ๋ ๊ฐ์ง ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ณด์์ต๋๋ค. Secret ๋ฐ SSH
[๋น๋ฐ]
docker build --secret id=mysite.key,src=path/to/mysite.key .
RUN --mount=type=secret,id=mysite.key,required <command-to-run>
[SSH]
RUN --mount=type=ssh git clone [email protected]:myorg/myproject.git myproject
์ด ๊ธฐ์ฌ๋ ์ด๋ฒ ํธ์์ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํ์ง ์์ 2๊ฐ์ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก(๋ด๊ฐ ๊ธฐ์ตํ๋)๊ฐ ์์ต๋๋ค.
1) [์บ์] RUN --mount=type=cache
2) ์ผ๋ฐ์ ์ธ ๋ณผ๋ฅจ(์: SSL ์ธ์ฆ์๋ฅผ ๋ง์ดํธํ๊ฑฐ๋ ๋น๋ ์ค์ ์ฌ์ฉํด์ผ ํ์ง๋ง ์์ฑ๋ ์ด๋ฏธ์ง์ ํฌํจ๋์ง ์๋ ๋์ฉ๋ ๋ณผ๋ฅจ์ ๊ฒฝ์ฐ ๋ฑ...)
์ฌ์ฉ ์ฌ๋ก๊ฐ webpack
๋ฅผ ์คํํ๊ธฐ ์ ์ yarn
์์
๊ณต๊ฐ์ ๋ง์ดํธํ๋ฉด
์ด ๋ชจ๋ ๊ฒ์ ํ ์ ์์ต๋๋ค..
RUN --mount=type=cache,from=<some image>,source=<path in from image>,target=<target>
from=<some image>
๋ฅผ from=<some build stage>
๋ก ๋ฐ๊ฟ ์๋ ์์ต๋๋ค.
๋ค์์ ์ธ์์ ์ธ ์์ ๋๋ค.
# syntax=docker/dockerfile:1.0.0-experimental
FROM busybox as hello
RUN echo hello > /hello.txt
FROM scratch
RUN --mount=type=cache,from=busybox,source=/bin,target=/bin --mount=type=cache,from=hello,source=/hello.txt,target=/tmp/hello.txt echo /tmp/hello.txt
๋ค์์ ์ด์ ๋ํ ๋ช ๊ฐ์ง ๋ฌธ์์ ๋๋ค. https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md
@AkihiroSuda ์ ๋์ํฉ๋๋ค. ์ด๊ฒ์ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ์ง๋ง... ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์๋ ค์ฃผ์ญ์์ค.
@AkihiroSuda @cpuguy83 : ๋ถํํ๋ ํ์ฌ ๊ตฌํ(docker 18.09์ buildkit)์๋ ๊ฐ์ธ ๋ ์ง์คํธ๋ฆฌ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํ์ฌ๋ก์๋ ๊ฐ์ธ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์์ผ ํ๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์๋ก์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. https://github.com/moby/moby/issues/38303์์ ๋ด ํ ์คํธ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
๋๋ ์ด๊ฒ์ด Jenkins ์ํฐํฉํธ์๋ ์ฌ์ฉ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด Docker ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ณ ๋ด๋ถ์์ ๋ฌด์ธ๊ฐ๋ฅผ ์ปดํ์ผํ๋ ๊ฒฝ์ฐ junit pytest ์ถ๋ ฅ๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ํฐํฉํธ๋ฅผ ์ป๊ณ ์ถ์ต๋๋ค.
์ด๊ฒ์ ๋งค์ฐ ์ ์ฉํ ๊ฒ์
๋๋ค. RUN --mount=type=cache /user/.cache/pip pip install
--experimental
๋ฅผ ์ถ๊ฐํ ํ์๊ฐ ์์ต๋๋ค(๋ง์ ํจํค์ง ์ธ๋ฑ์ค ๋์ญํญ์ ์ ์ฝํ๊ธฐ ์ํด).
buildah bud
( buildah build-using-dockerfile
)์๋ --volume
/ -v
์ต์
์ด ์์ต๋๋ค.
https://github.com/containers/buildah/blob/master/docs/buildah-bud.md
buildah
๋ ๋์ปค ์์ผ ์์ด ๋ฃจํธ๊ฐ ์๋ ๊ฒ์ผ๋ก ๋น๋๋ฅผ ์คํํ ์ ์์ต๋๋ค.
๋คํธ์ํฌ์์ ํจํค์ง ๋ค์ด๋ก๋๊ฐ ๋ ์ฌํ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์?
"--experimental"์ ์ถ๊ฐํ ํ์๊ฐ ์๊ณ ํด๋ผ์ด์ธํธ์์ "DOCKER_BUILDKIT=1"๋ง ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.
์, ์ปจํ ์คํธ๊ฐ ๋ชจ๋ Dockerfile์ ์๋ค๋ ์ ์์ ๋คํธ์ํฌ ๋น๋๋ฅผ ๋ ์ฌํํ ์ ์์ต๋๋ค. ๋น๋๊ฐ ์๋ํ๋๋ก ํ๊ธฐ ์ํด ํธ์คํธ์์ ์ปจํ ์คํธ๋ฅผ ๋ง์ดํธํด์ผ ํ๋ ๊ฒฝ์ฐ ๋์ ๊ฒฝํ์ ๋๋ค.
์ด๋ฏธ์ง๋ฅผ ๋น๋์ ํ์ฌํ ์๋ ์์ต๋๋ค.
์, ์ปจํ ์คํธ๊ฐ ๋ชจ๋ Dockerfile์ ์๋ค๋ ์ ์์ ๋คํธ์ํฌ ๋น๋๋ฅผ ๋ ์ฌํํ ์ ์์ต๋๋ค.
Dockerfile์ RUN apt-get update
๊ฐ ์์ผ๋ฉด ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๋จ๊ณ๊ฐ ํฌํจ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ํ์ฌ์์ ์ถ๊ฐ ์ปจํ
์คํธ๋ฅผ ๋ค์ด๋ก๋ํ๋ฏ๋ก ์ฌํํ ์ ์์ต๋๋ค. ๋ง์ดํธ์์ ์ ์ผํ ์ฐจ์ด์ ์ ๋ชจ๋ ์ธ๋ถ ์ปจํ
์คํธ๊ฐ ์ค์ ๋ก Dockerfile์ ์ ์๋์ด ์๋ค๋ ๊ฒ์
๋๋ค.
๋น๋๊ฐ ์๋ํ๋๋ก ํ๊ธฐ ์ํด ํธ์คํธ์์ ์ปจํ ์คํธ๋ฅผ ๋ง์ดํธํด์ผ ํ๋ ๊ฒฝ์ฐ ๋์ ๊ฒฝํ์ ๋๋ค.
Docker ๋น๋์ ๋ํ ์ ์ ๋์ ๊ฒฝํ์ ๊ฒฐ์ฝ ์ฌํํ ์ ์์ผ๋ฉฐ ์ผ๋ถ ์ฌ์ฉ ์ฌ๋ก์ ์๋๋ฅผ ๋์ผ ์ ์๋ ํธ์คํธ์์ ์บ์๋ฅผ ํ์ฌํจ์ผ๋ก์จ ํ์คํ ์ด์ ์ ์ป์ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
๊ฒฐ๊ตญ ๋ด๊ฐ ํ๋ ์ผ์ ๋ค๋จ๊ณ ๋น๋๋ฅผ ํ๋ ๊ฒ์ ๋๋ค. ๋คํธ์ํฌ์์ ์ปจํ ์คํธ๋ฅผ ๊ฐ์ ธ์ค๋ ํ๋์ ์ด๋ฏธ์ง๋ก ์๊ฒฉ ์ปจํ ์คํธ์ ์ค๋ ์ท ์ญํ ์ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์์์ ๋ฒ์ ์ผ๋ก ํ๊ทธ๋ฅผ ์ง์ ํ๋ฉด ๋ ์ง๊ฐ ์ ๋๋ก ์๋ํฉ๋๋ค. ์:
RUN apt-get update
docker build -t aptupdate-20190417
๊ทธ๋ฆฌ๊ณ ์ค์ ์ด๋ฏธ์ง์์:
FROM aptupdate-20190417
FROM somebaseimage
COPY --from=aptupdate-20190417 /var/apt /var/apt
๋ค๋ฅธ ์๊ฒฉ ์ปจํ ์คํธ๋ก ๋ฐ๋ณตํ๋ฉด ์ด๋ ์ ๋ ์ฌํ ๊ฐ๋ฅํ ๊ฒ์ ๊ฐ๊ฒ ๋ฉ๋๋ค.
๋๋ ๊ฐ๋จํ ๋งํด์: ๋คํธ์ํฌ ์ก์ธ์ค์ ์์กดํ๋ Dockerfile์ ์๋ง๋ ์ฌํํ ์ ์์ต๋๋ค. ๋ง์ดํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌํํ ์ ์์ง๋ง ์ผ๋ถ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ฌํ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ด ๊ฒฝํ์ ๋๋ถ๋ถ์ ๊ฑด๋ฌผ ์ด๋ฏธ์ง๋ฅผ ๊ณ์ธกํ๊ธฐ ์ํด ์์ฒด ๋๊ตฌ๋ฅผ ์์ฑํ์ง๋ง Dockerfile์๋ ์ค์ ๋ก ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๋จ๊ณ๊ฐ ์์ด์ผ ํฉ๋๋ค.
๋ด ๋ง์, RUN --mount=type=cache
๊ฐ ๋ฐ๋ก ์ด๊ฒ์
๋๋ค.
๋๋ ๋ ์ง์คํธ๋ฆฌ์ ๋ค๋ฅธ ์ด๋ฏธ์ง์์ ๋ง์ดํธํ์ฌ ๊ฐ์ ธ์ฌ ์๋ ์์ต๋๋ค.
๊ฐ์ ธ์ค๋ ค๋ ๊ฒ์ ๊ณ ์ ํ์ฌ apt
๋ช
๋ น์ (์๋์ ์ผ๋ก) ์ฌํ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ ๋ง๋ก ๋ชจ๋ ๋นํธ๋ฅผ ์ ์ดํ๊ณ ์ถ๋ค๋ฉด ๋น๋์์ apt๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์
๋๊น? ์ด๊ฒ์ ๋น๋ ํธ์คํธ์ ์ ์ฅํ๋ ๊ฒ์ ์ฌํํ ์ ์์ผ๋ฉฐ ํธ์คํธ์์ ํธ์คํธ๋ก ์ฝ๊ฒ ์ค๋จ๋ฉ๋๋ค.
๋ ์ง์คํธ๋ฆฌ์ ๋ณด๊ดํ๋ ๊ฒ์ ๋คํธ์ํฌ ์ฅ์ ๊ฐ๋ฅ์ฑ์ ์ ์ธํ๊ณ ๋ ๋์์ง ์์ต๋๋ค... ๋ฌผ๋ก ๊ณต์ ํ ๋นํ์
๋๋ค.
-v
on buildah ๋ฐ redhat's fork๋ ๋๋ฌด ๊ด๋ฒ์ํ๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์์ ๋ช
์์ ์ผ๋ก ๊ฑฐ๋ถ๋์์ต๋๋ค... ์ ์ฉํ์ง ์๋ค๋ ๊ฒ์ ์๋์ง๋ง ํธ์คํธ์์ ํธ์คํธ๋ก ์ฝ๊ฒ ์ค๋จ๋์ด docker build
์ ์ค๊ณ์ ์ด๊ธ๋ฉ๋๋ค. .
ํํธ RH๊ฐ ์ถ๊ฐํ ์ด์ (๋ ์ ํํ๊ฒ๋ ์์
ํ๊ธฐ๋ก ๊ฒฐ์ ํ ์ด์ )๋ RHEL ์๊ฒฉ ์ฆ๋ช
์ ๋น๋ ํ๊ฒฝ์ ํ์ฌํ ์ ์๊ธฐ ์ํด์์์ต๋๋ค.
์, ์ปจํ ์คํธ๊ฐ ๋ชจ๋ Dockerfile์ ์๋ค๋ ์ ์์ ๋คํธ์ํฌ ๋น๋๋ฅผ ๋ ์ฌํํ ์ ์์ต๋๋ค. ๋น๋๊ฐ ์๋ํ๋๋ก ํ๊ธฐ ์ํด ํธ์คํธ์์ ์ปจํ ์คํธ๋ฅผ ๋ง์ดํธํด์ผ ํ๋ ๊ฒฝ์ฐ ๋์ ๊ฒฝํ์ ๋๋ค.
๋๋ ๊ฒฉ๋ ฌํ๊ฒ ๋์ํ์ง ์๋๋ค. ๋คํธ์ํฌ๊ฐ ๋ค์ด๋์๊ฑฐ๋ ์์๋์์ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ก์ปฌ ์บ์๋ ์ธํฐ๋ท์ด ๋ค์ด๋ ๋์ ์ ์ฒด ๋น๋๊ฐ ์คํจํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
docker-compose.yml์์ volumes:
๋ฅผ ํ ๋ฒ ์ง์ ํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋์ DOCKER_BUILDKIT=1
$๋ฅผ ์ํํ๊ณ ์
์คํธ๋ฆผ์์ ๊ด๋ฆฌ๋๋ Dockerfiles์ RUN --mount=type=cache
๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๊น? ์์?
CI ๋น๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณผ๋ฅจ ๋ง์ดํธ์ ์บ์๋ ์ ์๋ ์๋ง์์ ์์ฒ ๊ฐ์ ํจํค์ง(ํ๋ฃจ์ ์์ญ ๋๋ ์๋ฐฑ ๋ฒ)๋ฅผ ๋ถํ์ํ๊ฒ ๋ค์ ๋ค์ด๋ก๋ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํธ์คํธ์์ ์์ฒด ๋ณผ๋ฅจ์ผ๋ก ๊ถํ ์๋ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ๊ธฐ๋ฅ).
ํจํค์ง ์์ธ์ ๋ง์ ๊ฒฝ์ฐ ๊ธฐ๋ถ๊ธ์ผ๋ก ์๋์์ด ์ง์๋ฉ๋๋ค. ์๊ฒฉ ๋ฆฌ์์ค๊ฐ ๋น๋ ๊ตฌ์ฑ ์์์ ๋ ์ฌ์์ฐ ๊ฐ๋ฅํ ์บ์๋ผ๋ ์๋ชป๋ ๋ฏฟ์์ ๊ทผ๊ฑฐํ ์ผ๋ถ ์๋ชป๋ ์ฌ์์ฐ ๊ฐ๋ ์ ๋ง์กฑ์ํค๊ธฐ ์ํด ๋์ญํญ์ ๊ทธ ๋์ ๋ญ๋นํ๋ ๊ฒ์ ์ ๋ง ์ค๋ง์ค๋ฝ์ต๋๋ค.
docker-compose.yml์ด ์๋ํ๋๋ก --volume
๋ฅผ ์ถ๊ฐํ์ญ์์ค.
๋ด docker-compose.yml์ด ์๋ํ๋๋ก --volume์ ์ถ๊ฐํ์ธ์.
"docker-compose"๋ฅผ ์ ๋๋ก ์๋์ํค๋ ๊ฒ์ ๊ฑฐ๊พธ๋ก์
๋๋ค.
docker-compose ์๋น์๊ฐ ์ด ํ๋ก์ ํธ๋ฅผ ์ํํ๊ณ ๊ทธ ๋ฐ๋๊ฐ ์๋๋๋ค.
docker-compose๋ ๋์ปค ์์ผ๊ณผ ์ํธ ์์ฉํฉ๋๋ค. docker-compose YAML์ ์ปจํ
์ด๋ ์ต์
์ ์ ์ฅํ๋ ํตํฉ๋ ๋ฐฉ๋ฒ์
๋๋ค(k8s pod defs(podman์ด ์ด๋ ์ ๋ ์ง์)๋ก ๋ณํํ ์ ์์). ์ฌํ ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก DOCKER_BUILDKIT=1
๋ฅผ ์ง์ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? docker-compose.yml์์ ์ฌํ ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก build_volumes:
๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
ํ๋ฃจ์ n๋ฒ ์คํ๋๋ CI ๋น๋ ์คํฌ๋ฆฝํธ์์ docker-compose build
(์: ansible ์ฌ์ฉ) ๋๋ packer
(buildah ๋ฐ podman ๋์ )๋ฅผ ํธ์ถํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋ ๋ช ๊ฐ์ง ๋ชฉํ๊ฐ ์์ต๋๋ค.
์บ์ ๋ณผ๋ฅจ์ ํ๋ฌ์ํด์ผ ํ๋ ๊ฒฝ์ฐ ์บ์ ๋ณผ๋ฅจ์ ํ๋ฌ์ํ ์ ์์ต๋๋ค.
RUN pip install app && rm -rf /root/.cache
COPY . /app/src/app
COPY .cache/pip /app/.cache/pip
RUN pip install /app/src/app \
&& rm -rf /app/.cache/pip
ONBUILD
)RUN --mount=type=cache
๋ฅผ ์ถ๊ฐํ๊ณ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค.# Fork by copying to modify every pip install line
RUN --mount=type=cache /app/.cache/pip pip install /app/src/pip
$ DOCKER_BUILDKIT=1 docker build . [...]
--mount=type=cache
์บ์๋ฅผ ํ๋ฌ์ํ๋ ๋ฐฉ๋ฒ(?)$ buildah bud -v .cache/pip:/app/.cache.pip
$ docker build -v .cache/pip:/app/.cache.pip
services:
app:
image: imgname:latest
build: .
build_volumes: # "build_volumes" ?
- ./.cache/pip:/app/.cache/pip
$ docker-compose build
:point_up: ์๋ฆผ์ ๋๋ค. ์ฒดํฌ์ฌ์ ํ์ธํ์ฌ ๋ค์ด๋ก๋ํ ํ์ผ์ ๊ณ ์ ํ ์ ์์ต๋๋ค. pip์ ๊ฐ์ ์ผ๋ถ ํจํค์ง ๊ด๋ฆฌ์๋ ์ด๋ฅผ ์ง์ํฉ๋๋ค.
@westurner ์์ธํ ์ค๋ช ๊ฐ์ฌํฉ๋๋ค.
๋๋ ๋ค์์ด ๊ทํ์ ์ฌ๋ก B์ ๋น์ทํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง ์บ์๋ฅผ ์ง์ธ ์ ์๊ณ ๊ทํ์ ์ฌ๋ก C2์ ๊ฐ์ด ๋๋ ๊ฒ์ ๋๋ค(๋น์ ์ด ์๊ตฌํ๋ ๋ฐ, ์ ์๊ฐ์).
_docker-compose.yml:_
services:
my-cache:
build: ./my-cache
image: local/my-cache
my-image:
build: ./my-image
_my-cache/๋์ปคํ์ผ:_
FROM python
RUN pip install app
_my-image/๋์ปคํ์ผ:_
FROM my-repo/my-image
RUN --mount=target=/export,type=bind,from=local/my-cache
RUN pip install /app/src/app
(https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md#run---mounttypecache)
๋ค์์ ์ฌ์ฉํ์ฌ ์บ์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค.
docker-compose build my-cache
RUN --mount=target=/export,type=bind,from=local/my-cache
๋ช
๋ น์ ์ด๋ฏธ์ง์ ๋ฐ์ธ๋ฉ๋์ด์ผ ํฉ๋๋ค. ์บ์๋ฅผ ์๋ก ๊ณ ์น๋ ค๋ฉด ์บ์ ์ด๋ฏธ์ง๋ฅผ ์ ๊ฑฐํ๊ณ ๋ค์ ์์ฑํ ์ ์์ต๋๋ค.
RUN --mount...
์ ์บ์๋ฅผ ๊ณ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ฒ์ ๊ณผ ํจ๊ป .env
ํ์ผ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. image: local/my-cache:$MY_VERSION
๋ฐ from=local/my-cache:$MY_VERSION
์ ๋ฒ์ ์ ํฌํจํด์ผ ํฉ๋๋ค. ๋น๋ ์ธ์๋ก ํฌํจ๋จ).
my-cache
์๋น์ค๋ฅผ ๊ธฐ๋ณธ ์๋น์ค์ ๋์ผํ ํ์ผ์ ํฌํจํ์ง ์์ผ๋ ค๋ฉด ๋ค๋ฅธ docker-compose
ํ์ผ์ ํฌํจํ ์ ์์ต๋๋ค.
์ฌ์ ํ DOCKER_BUILDKIT=1
๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฉฐ(B ์ผ์ด์ค์์์ฒ๋ผ, ๊ทธ๋ฌ๋ ํฅํ ๋ฒ์ ์์๋ ์ด๊ฒ์ด ํ์ํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค) ์ฌ์ ํ ์ฌํํ ์ ์์ต๋๋ค(๊ทธ๋ฌ๋ C2 ์ผ์ด์ค๋ ๊ทธ๋ ์ง ์์).
์ฌํํ ์ ์๋ ๊ฒฝ์ฐ ํ์๋๋ ํจ๋ํฐ๋ ๋ฌด์์
๋๊น? ์บ์ ์ด๋ฏธ์ง local/my-cache
๋ฅผ ๋์ปค ํ๋ธ (๋ค๋ฅธ ๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ ์ฌ์ฉ) ๋๋ ๊ฐ์ธ ๋ ์ง์คํธ๋ฆฌ ์ ๋ฃ๊ณ ๊ฐ ๋น๋์ ๋ํด ๋ฒ์ ์ ์ฌ์ฉ ํ๋ ๊ฒฝ์ฐ(๋ค๋ฅธ ์บ์ ์์ฑ) ๋์ผํ ๋ฒ์ ์ ํญ์ ๋์ผํฉ๋๋ค. ์บ์, ์ฌํ ๊ฐ๋ฅ ํ์ง ์์๊น์? docker-compose
ํ์ผ์ ์๋น์ค๋ฅผ ํฌํจํ๊ณ ๋น๋ ๋ช
๋ น์ ํธ์ถํ ํ์์กฐ์ฐจ ์์ต๋๋ค. (Docker Hub๋ ๋คํธ์ํฌ์์ ์ก์ธ์คํด์ผ ํ์ง๋ง ๋ค๋ฅธ ์ด๋ฏธ์ง์์๋ ๋์ผํ๋ค๊ณ ๊ฐ์ ํ๊ณ ํ ๋ฒ ๋ค์ด๋ก๋ํ ํ์๋ ์ ์บ์๋ก ์ ๋ฒ์ ์ ์์ฑํ์ง ์๋ ํ ๋ ์ด์ ํ์ํ์ง ์์์ผ ํฉ๋๋ค.)
๋ฉด์ฑ ์กฐํญ: ์์ ์ฝ๋๋ฅผ ํ ์คํธํ์ง ์์์ต๋๋ค.
@Yajo pip์ ์ฒดํฌ์ฌ ์ง์์ ์๋ 'peep'์์ ๊ตฌํ๋ ๋ค์ pip๋ก ๋ณํฉ๋์์ต๋๋ค. pip ์๊ตฌ ์ฌํญ ํ์ผ ํญ๋ชฉ์ URL ์กฐ๊ฐ์ผ๋ก ์๋ ค์ง ์ํธํ ํด์๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. (์ฌํด PyPA ํ๋ก์ ํธ์ ๋ณด์ ๊ฐ์ ์ ์ํ ์๊ธ์ด ์์ต๋๋ค. PyPI์ TUF(์
๋ฐ์ดํธ ํ๋ ์์ํฌ, Docker Notary์ ๋์ผ) ์ง์์ ์ฌํด ํ๋ฐ์ ๊ณํ๋ฉ๋๋ค.) ๋์ปค ์ด๋ฏธ์ง์์ pip ๋ฐ PyPI(ํค ๋ฐ ์ ๋ขฐ ํฌํจ)๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ถํธ์คํธ๋ฉ ์ฌํด ๋ง์ ์ฃผ์ ๊ฐ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
(ํธ์ง; ์ฝ๊ฐ OTํ์ง๋ง ๊ด๋ จ) https://discuss.python.org/t/pypi-security-work-multifactor-auth-progress-help-needed/1042/
@lucasbasquerotto ๋์์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ์ด๊ฒ์ ๋น๋ ์ --volume
๋ฅผ ์ง์ ํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๋ณต์กํฉ๋๋ค. ์ฆ, ๋ค์์ด ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค.
docker build
์ ํ๊ฒฝ์์ DOCKER_BUILDKIT=1
์ง์ RUN --mount=type=cache
๋ฐ args๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์
์คํธ๋ฆผ Dockerfile RUN ๋ช
๋ น ์์ ํธ์คํธ์์ ํ์ผ์ ๋ณต์ฌํ ์ ์๊ฑฐ๋ ๋ค๋ฅธ ๊ณณ์ ์ ์ฅ๋์ง ์์ ๋น๋ ์๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํ ์ ์๋ค๋ฉด ๋น๋ ์๊ฐ์ ๋ณผ๋ฅจ์ ๋ง์ดํธํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ฌํ์ฑ์ด ๋จ์ด์ง๋์ง ์ ์ ์์ต๋๋ค.
๋ณต์ฌ || REMOTE_FETCH || ์ฝ๋ค()
- ๋ค์ ์ค ์ฌํ์ฑ์ด ๊ฐ์ฅ ๋์ ๊ฒ์ ๋ฌด์์ ๋๊น?
@westurner
๋์ปค ๋น๋ ์ ธ ํ๊ฒฝ์์ DOCKER_BUILDKIT=1 ์ง์
๋ค๋ฅธ ๊ฒ์๋ฌผ์์ ๋ณด์๋ฏ์ด docker-compose
๋ฅผ ์ฌ์ฉํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ปจํ
์ด๋์์ ์คํํ๋ ๊ฒฝ์ฐ:
$ sudo curl -L --fail https://github.com/docker/compose/releases/download/1.24.0/run.sh -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
๊ทธ๋ฐ ๋ค์ /usr/local/bin/docker-compose
์์ ๋ค์ด๋ก๋ํ ํ์ผ์ ํธ์งํ์ฌ ํด๋น ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ณ๊ฒฝ:
exec docker run --rm $DOCKER_RUN_OPTIONS $DOCKER_ADDR $COMPOSE_OPTIONS $VOLUMES -w "$(pwd)" $IMAGE "$@"
์๊ฒ
DOCKER_BUILDKIT=1
exec docker run --rm $DOCKER_RUN_OPTIONS $DOCKER_ADDR $COMPOSE_OPTIONS $VOLUMES -w "$(pwd)" --env DOCKER_BUILDKIT=$DOCKER_BUILDKIT $IMAGE "$@"
์ด๊ฒ์ ๋งค์ฐ ์ฌ์ด ๋ณ๊ฒฝ์ด๋ฉฐ ๋ช ๋ น์ ์คํํ๋ ์ฌ๋์๊ฒ ํฌ๋ช ํฉ๋๋ค.
_(์ปจํ ์ด๋๋ก ์คํํ์ง ์์ผ๋ฉด ์์ ์ฌํญ์ด ์ ์ฉ๋์ง ์์)_
RUN --cache ๋ฐ args๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ ์คํธ๋ฆผ Dockerfile RUN ๋ช ๋ น ์์
๋ด๊ฐ ๋
ธ์ถ ํ ๊ฒฝ์ฐ RUN --mount=type=bind...
์ด์ง๋ง ์ด์จ๋ Dockerfile
์ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒ๋ ๋์ IMO์
๋๋ค. -v
์ต์
์ ํจ์ฌ ๋ ์ข๊ณ ํฌ๋ช
ํ ๊ฒ์
๋๋ค.
๋ค๋ฅธ ์ด๋ฏธ์ง์ ๋ํ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ก์ธ์ค ๊ถํ์ด ์์ต๋๊น? ๊ฐ๋ณ์ฑ! ์๋๋ฉด ์บ์๊ฐ ์๋ง๋ ์ค๋๋ ๋ฒ์ ์ผ๋ก ๊ณ ์ ๋์๋ค๊ณ ๋งํฉ๋๊น?
์ด๋ฏธ์ง๋ฅผ ๋ฐ์ธ๋ฉํ ๋ ์๋ง๋ ์ปจํ
์ด๋(๋๋ ๋ณต์ ๋ ํ์ผ ์์คํ
์ด ์๋ ์ด๋ฆ์ด ๋ฌด์์ด๋ )๋ฅผ ์์ฑํ ๊ฒ์ด๊ณ ๋น๋ํ๋ ๋์ ์ํ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์๋ณธ ์ด๋ฏธ์ง๋ฅผ ๋ณ๊ฒฝํด์๋ ์ ๋ฉ๋๋ค(์ดํด๊ฐ ๋์ง ์์). ๋ฐ๋ผ์ ๋น๋์์ my-repo/my-cache:my-version
๋ผ๋ ์บ์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ํ๋ฉด ๋ค์ ๋น๋์์ ์ ํํ ๋์ผํฉ๋๋ค(๋ถ๋ณ์ฑ). ์ต์ ์บ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด my-repo/my-cache:my-new-version
์ ๊ฐ์ด ์ ๋ฒ์ ์ผ๋ก ์ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ค์ ์ค ์ฌํ์ฑ์ด ๊ฐ์ฅ ๋์ ๊ฒ์ ๋ฌด์์ ๋๊น?
์ฌ์์ฐ์ ๋ค๋ฅธ ๊ธฐ๊ณ์์ ์คํํด๋ ๋๊ฐ์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ฐ ์๋ฏธ์์ ์ด๋ฏธ์ง๋ฅผ (์์ ํ๊ณ ์์ ์ ์ธ) ๋์ปค ๋ ์ง์คํธ๋ฆฌ์ ํธ์ํ๊ณ ํด๋น ์ด๋ฏธ์ง๋ฅผ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด ์ฌํ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค(์ธํฐ๋ท ์ฐ๊ฒฐ์ ๋ํ ์ฐ๋ ค๊ฐ ์๋ ๊ฒฝ์ฐ ๊ฐ์ธ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ด๋ถ ๋ ์ง์คํธ๋ฆฌ์ ์ก์ธ์ค VPN ๋๋ ์ด์ ์ ์ฌํ ๊ฒ(๊ฐ์ธ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ง์ ์ฌ์ฉํ์ง ์์)).
COPY ๋ช
๋ น์ด ์ปดํจํฐ ์บ์๋ฅผ ๋ณต์ฌํ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ปดํจํฐ์์ pip install
(๋๋ apt-get
๋๋ ๊ธฐํ)๋ฅผ ์คํํ๋ฉด ๋ค๋ฅธ ์๊ฐ์ ์บ์์ ๋ด์ฉ์ด ๋์ผํ ๊ฒ์ธ๊ฐ? ์ด์ฉ๋ฉด ์ด๊ฒ์ด ๋น์ ์๊ฒ ๊ฑฑ์ ๊ฑฐ๋ฆฌ๊ฐ ๋ ์ ์์ต๋๋ค. ์๋ง.
๋ฐ๋ฉด์ "์์ "ํ๊ณ ์๋ ์ ๋ขฐํ ์ ์๋ ์์น(์: S3 ๋ฒํท)์ ํ์ผ์ด ์๋ ๊ฒฝ์ฐ ํด๋น ํ์ผ์ ์ปดํจํฐ์ ๋ค์ด๋ก๋ํ๊ณ COPY ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํด๋น ํ์ผ์ ๋ณต์ฌํ ๋ค์ ๋ค๋ฅธ ๊ณณ์์ ๋ณต์ ํ ์ ์์ต๋๋ค. ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง ๋จธ์ (ํ์ผ์ด ๋ณ๊ฒฝ๋์ง ์๊ณ ๋ค๋ฅธ ๋จธ์ ์ด ์ด์ ๋จธ์ ๊ณผ ๋์ผํ๋ค๊ณ ๊ฐ์ ). ๊ทธ๋์ ๋๋ ์ด๊ฒ์ ์ฌํ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ ๊ฒ์ ๋๋ค. ํ์ผ์ด ์ค๋ ์์น ์ ํ์ผ์ ์ผ๋ง๋ ์ ์ดํ ์ ์๋์ง์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์์งํ ๋งํด์, ๋๋ ๋ชจ๋ ๊ฒฝ์ฐ์ 100% ์ฌํํ ์ ์๋ค๊ณ ์๊ฐํ์ง ์์ง๋ง(๊ฒฐ๊ตญ ํ๋์จ์ด๋ ์คํจํ ์ ์์), ๋ ์์ ์ ์ผ์๋ก ๋ ์ข์ต๋๋ค. ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ์ฌํํ ์ ์๋ค๊ณ ๋งํ ๋๋ ์ฃผ๋ก ๊ทธ ๋ด์ฉ๊ณผ ๊ฒฐ๊ณผ๊ฐ ๊ฐ๋ค๋ ๋ง์ ํ๊ณ ์์ผ๋ฉฐ, ์ฌ๊ธฐ์๋ ์๊ฐ์ด ์ง๋๋ ๋ด์ฉ์ด ๋ณํ์ง ์๋๋ค๋ ๊ฐ์ ํ์ ๋คํธ์ํฌ์์ ๋ค์ด๋ก๋ํ ๋ด์ฉ๋ ํฌํจ๋ฉ๋๋ค(๋คํธ์ํฌ ๊ฐ๋ฅ์ฑ์ ๊ณ ๋ คํ์ง ์์). ์ด ๊ฒฝ์ฐ ์คํจ).
์ปจํ
์ด๋ ๋ด๋ถ์์๋ go mod download
๋ฅผ ์ ๋ขฐํ ์ ์๊ฒ ๋ง๋๋ ์ผ์ข
์ Docker ๋คํธ์ํน ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค(์ ์ด๋ ์ฐ๋ฆฌ ํฌ๊ธฐ์ ์ ํ๋ฆฌ์ผ์ด์
์์๋). ๊ทธ๋์ ๋งค๋ฒ ๋ด GOPATH/pkg/mod
๋ฅผ ๋ค์ ๋ค์ด๋ก๋ํ๊ธฐ ์ํด ์คํํ๋ ๊ฒ์ ๋ญ๋น์ผ ๋ฟ๋ง ์๋๋ผ ๋ถ์์ก์ต๋๋ค. ๐คทโโ
--volume
๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ฉด ๋ถํ์ํ ํ์ผ ๋ณต์ฌ๋ฅผ ์์ ํ ํผํ ์ ์์ต๋๋ค!
@kevincantu RUN --mount=type=cache๊ฐ ์ ์ค์ผ์ด์ค๋ฅผ ์ปค๋ฒํด์ผ ํฉ๋๋ค.
์ด๋ฅผ ์ํด์๋ ๋์ปค ๋น๋ ๋ด์์ ๋ชจ๋์ ํ ๋ฒ ์ด์ ์ฑ๊ณต์ ์ผ๋ก ๋ค์ด๋ก๋ํด์ผ ํ๋ฉฐ, ์ด ํน๋ณํ ๊ฒฝ์ฐ์๋ ์์ง ๋ณธ ์ ์ด ์์ต๋๋ค.
https://github.com/moby/moby/issues/14080#issuecomment -484314314 by @westurner ๋ ๊ฝค ์ข์ ๊ฐ์์ด์ง๋ง buildkit
๋ฅผ ์๋์ํค์ง ๋ชปํ์ต๋๋ค.
$ sudo docker -v
Docker version 19.03.1, build 74b1e89
$ sudo DOCKER_BUILDKIT=1 docker build .
ร+ร Building 0.1s (2/2) FINISHED
=> รinternalร load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 407B 0.0s
=> รinternalร load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
failed to create LLB definition: Dockerfile parse error line 8: Unknown flag: mount
๋ด Dockerfile
๋ # syntax=docker/dockerfile:experimental
๋ก ์์ํฉ๋๋ค.
์ค์ ๋ก docker-compose
๋ฅผ ํตํด ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค. $# Dockerfile
#$์์ ENV DOCKER_BUILDKIT 1
๋ฅผ ์๋ํ๊ณ $ ARG DOCKER_BUILDKIT
docker-compose.yml
์์ ์ ๋ฌํ์ง๋ง ๋ชจ๋ ๋์ผํฉ๋๋ค.
$ sudo docker-compose up --build
Building web
ERROR: Dockerfile parse error line 10: Unknown flag: mount
@lucasbasquerotto https://github.com/moby/moby/issues/14080#issuecomment -484639378์์ ์ ์ํ ๊ฒ์ด ์ค์น๋ ๋ฒ์ ์ docker-compose๋ก ์ด๋ป๊ฒ ๋ณํ๋ฉ๋๊น?
๋ง์ง๋ง์ผ๋ก, ์ด๊ฒ์ด ์ ์ฌ์ฉ ์ฌ๋ก์ ์ ์ฉ๋๋์ง ํ์คํ์ง ์์ต๋๋ค. ์๋ง๋ ์ฌ๋ฌ๋ถ ์ค ์ผ๋ถ๋ ์ ๊ฐ ์ด๊ฒ์ ์ถ๊ตฌํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ์๋ ค์ค ๊ฒ์
๋๋ค. ์ข
์์ฑ์ ์
๋ฐ์ดํธํ ๋ ์ ํญ๋ชฉ๋ง ๋ค์ด๋ก๋ํด์ผ ํ๋๋ก ๋น๋ ๊ฐ์ ์ ์ง๋๋ ๋ก์ปฌ ๊ฐ๋ฐ์ฉ ๋น๋ ์๊ฐ ์บ์๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค. ๋ฐ๋ผ์ Dockerfile
์ RUN --mount=type=cache,target=/deps
๋ฅผ ์ถ๊ฐํ๊ณ ์ข
์์ฑ ๊ด๋ฆฌ์์ ์บ์๋ฅผ /deps
๋ก ์ค์ ํฉ๋๋ค.
docker compose์ ๊ฒฝ์ฐ https://github.com/docker/compose/pull/6865 ๋ฅผ ์ฐธ์กฐํ์ธ์. ์ด๋ ๊ณง ์ถ์๋ compose ๋ฆด๋ฆฌ์ค ํ๋ณด๊ฐ ๋ ๊ฒ์ ๋๋ค.
๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค... binfmt๊ฐ ๊ตฌ์ฑ๋ x86_64 ํธ์คํธ์์ arm์ฉ ์ปจํ ์ด๋๋ฅผ ๊ตฌ์ถํ๊ณ ์ถ์ต๋๋ค. ์ด๋ฅผ ์ํด์๋ /usr/bin ์ ์ํคํ ์ฒ๋ณ ์ ์ qemu cpu ์๋ฎฌ๋ ์ดํฐ๊ฐ ์์ด์ผ ํฉ๋๋ค.
๋ด ํ์ฌ ์๋ฃจ์ ์ qemu-arm-static ์ ๋ค์๊ณผ ๊ฐ์ ํ์ผ๋ก ์ปจํ ์ด๋์ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค.
FROM arm32v7/alpine:3.10
COPY qemu-arm-static /usr/bin/qemu-arm-static
RUN apk update && apk upgrade
RUN apk add alpine-sdk cmake
...
๋ ์ฌ์ด ์๋ฃจ์
์ ๋ค์๊ณผ ๊ฐ์ด ์ปจํ
์ด๋ ๋ด๋ถ์ ํ์ํ ๊ฒฝ์ฐ์๋ง ๋ด ํ์ผ์ ๋ง์ดํธํ๋ ๊ฒ์
๋๋ค.
docker build -v /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static -t test:arm32v7 .
์ด๊ฒ์ ๋์ปค ์คํ์ ๋งค์ฐ ํจ๊ณผ์ ์ด์ง๋ง ์ปจํ
์ด๋๋ฅผ ๋น๋ํ๊ธฐ ์ํ ์ด ๊ธฐ๋ฅ์ด ๊ทธ๋ฆฌ์์.
x86_64 ํธ์คํธ์์ arm ์ปจํ ์ด๋๋ฅผ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ด ๋ ๋ค๋ฅธ ์๋ฃจ์ ์ด ์์ต๋๊น? ์๋๋ฉด ์ต์ํ ์ด ๊ฒฝ์ฐ ๋น๋ ์ ๋ณผ๋ฅจ์ ํ์ฉํ ์ ์์ต๋๊น?
@jneuhauser ์ต์ ์ปค๋์ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ ์ ์ผ๋ก ๋ก๋ํ ์ ์์ผ๋ฏ๋ก ๋งค๋ฒ ๊ตฌ์ฑํ ํ์๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ถํ
ํ ๊ถํ ๋ชจ๋์์ linuxkit/binfmt
์ด๋ฏธ์ง๋ฅผ ์คํํ์ฌ ์ด๋ฅผ ๋ฌ์ฑํ ์ ์์ต๋๋ค.
์ต์ ์ปค๋์ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ ์ ์ผ๋ก ๋ก๋ํ ์ ์์ผ๋ฏ๋ก ๋งค๋ฒ ๊ตฌ์ฑํ ํ์๊ฐ ์์ต๋๋ค.
@alehaa ๊ทธ๋๋ ์ปจํ ์ด๋ ๋ด์ ์ ์ qemu ์๋ฎฌ๋ ์ดํฐ ๋ฐ์ด๋๋ฆฌ๊ฐ ํ์ํ์ง ์์ต๋๊น?
@cybe F
-flag๊ฐ ์ฌ์ฉ๋๋ฉด ๋ ์ด์ ํ์ํ์ง ์์ต๋๋ค( linuxkit/binfmt
ํจํค์ง๊ฐ ์ํํ๋ ์์
). ์ด์ ๋ํ ์์ธํ ์ ๋ณด๋ ์ฌ๊ธฐ์์ ์ฐพ์ ์ ์์ต๋๋ค.
๋๊ตฐ๊ฐ ๋น๋ํท์ ์ํํด ๋ณผ ์ ์๋ ์๋ ์ค์ ์ ์ ๊ณตํ ์ ์์ต๋๊น? ์ฐ๋ถํฌ์์ ์๋ํ์ง ์์ต๋๋ค. ๋ด ์ค์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
cat /etc/docker/daemon.json
{
"experimental": true
}
Dockerfile
# syntax=docker/dockerfile:experimental
FROM ruby:2.6.3
RUN --mount=type=cache,target=/bundle/vendor
sudo docker -v
Docker ๋ฒ์ 19.03.1, ๋น๋ 74b1e89
DOCKER_BUILDKIT=1 sudo docker build .
๋ฐ๋ชฌ์ ์ค๋ฅ ์๋ต: Dockerfile ๊ตฌ๋ฌธ ๋ถ์ ์ค๋ฅ ๋ผ์ธ 12: ์ ์ ์๋ ํ๋๊ทธ: ๋ง์ดํธ
sudo
๋ sudo -E
๋ก ์ง์ํ๊ฑฐ๋ sudo ๋ด์์ ๋ณ์๋ฅผ ์ ์ธํ์ง ์๋ ํ env vars๋ฅผ ํฌํจํ์ง ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ๋ํด ๋ช ๋ง๋ ์ผ๊ณ ์บ์ํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ๋ช ๊ฐ์ง ์ต์ํ์ ์๋ฅผ ๋ง๋ค์์ต๋๋ค.
ํธ์ง: ์๋ ์ฐธ์กฐ
@cpuguy83 ๊ฐ์ฌํฉ๋๋ค!
@thisismydesign ๋น์ ์ ํฅ๋ถ์ ๋ง์ณ์ ์ฃ์กํ์ง๋ง --cache node_modules
ํ ์ ์์ต๋๋ค. ์ต์ข
์ด๋ฏธ์ง์ ํ์๋์ง ์์ผ๋ฏ๋ก ์ฑ์ด ์์๋ฉ๋๋ค.
@glensc ์ ์ฅ, ๋น์ ๋ง์ด ๋ง์.. ๋น๋ ํ์ ์บ์๋ฅผ ์ต์ข ์ด๋ฏธ์ง์ ์ผ๋ถ๋ก ๋ง๋๋ ๋ฐฉ๋ฒ์ด ์๋์?
์์งํ, ๋๋ ์ด๊ฒ์ด ๋ค์๊ณผ ๊ฐ์ด ๊ด๊ณ ๋๋ ๊ธฐ๋ฅ์ ๋ํด ๊ณ ๋ ค๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
๋น๋ ์ปจํ ์ด๋๊ฐ ์ปดํ์ผ๋ฌ ๋ฐ ํจํค์ง ๊ด๋ฆฌ์์ฉ ๋๋ ํฐ๋ฆฌ๋ฅผ ์บ์ํ ์ ์์ต๋๋ค.
๋์ ~/.npm์ ๋งคํํ ์ ์์ด์ผ ํฉ๋๋ค. https://docs.npmjs.com/files/folders.html#cache
@thisismydesign
ํ์ง๋ง ๋ค๋ฅธ ์ด๋ฏธ์ง๋ฅผ ์บ์๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. Dockerfile์ ๋น๋ํ๊ฑฐ๋ ์ด๋๊ฐ์ ๋ ์ง์คํธ๋ฆฌ์ ์ ์ฅ๋ ๋ฆฌํฐ๋ด ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ณ COPY --from
๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
FROM example/my_node_modules:latest AS node_modules
FROM nodejs AS build
COPY --from=/node_modules node_modules
...
์ด๊ฒ์ ๋ค์ํ ์ฉ๋๋ก ์ฌ์ฉํ ์ ์๋ ์์์ผ ๋ฟ์ ๋๋ค.
Ugh ๋๋ ์ด๊ฒ์ ๊ฐ์ง๊ณ ์ฌ๊ธฐ์ ๊ด์ฌํ๋ ๊ฒ์ ์ซ์ดํฉ๋๋ค (๋ํ ์๋ ์น๊ตฌ)
ํ์ง๋ง ์ด์ ๋ํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค.
์ฐธ์ฌํ ์ ์๋ ์ข์ ๊ณณ์ด ์์ต๋๊น? ์ฌ๊ธฐ์์ ์์ฝ์ ์ป๊ธฐ ์ํด ์ฐธ์ฌํ ์ ์๋ ์ ํ๋ ๋ชฉ๋ก์ด ์์ต๋๊น?
๋ํ ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ์ฝ๊ฐ์ ์์์ ํฌ์ ํ ๋๊ตฐ๊ฐ๊ฐ ํ์ํ๋ค๋ฉด ๋๋ 1๋ช ์ ํฌ๋ฆฌ์ค ๋ ธ๋ฐ์ ์๊ท๋ชจ ํ์ด ์์ด ์๋ง๋ ์ด๊ฒ์ ๋ณด๋๋ก ์ค๋ํ ์ ์์ ๊ฒ์ ๋๋ค.
TLDR ์ฝ๋ฉํด๋ ๋ ๊น์? ์ด ๋ฌธ์ ์ ๋ํด ์ด์ผ๊ธฐํ ์ ์๋ ์ฌ๋์ด ์์ต๋๊น?
_TLDR_ ์ฝ๋ฉํด๋ ๋ ๊น์? ์ด ๋ฌธ์ ์ ๋ํด ์ด์ผ๊ธฐํ ์ ์๋ ์ฌ๋์ด ์์ต๋๊น?
๋๋ Docker์ ๋ํด ๋งํ ์ ์์ง๋ง ๋ด ์ธ์์ ๊ทธ๋ค์ด ๋น๋์ ๋ณผ๋ฅจ ๋ง์ดํ ์ ์ถ๊ฐํ๋ ๋ฐ ์ด๋ ค ์์ง ์๋ค๋ ๊ฒ์ ๋๋ค(๊ทธ๋ฆฌ๊ณ ์๋ง๋ ์ด ๋ฌธ์ ๋ฅผ ๋ซ์์ผ ํ ๊ฒ์ ๋๋ค)
buildtime -v์ ๋ง์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์ด์ buildkit์์ ๋ค๋ฃน๋๋ค. ๊ทธ๊ฒ์ ์ ์ด๋ ๋๋ฅผ ์ํด ๊ทธ๊ฒ์ ํด๊ฒฐํ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋น๋ํท์ ํ์ธํ๊ฒ ์ต๋๋ค. ๊ด์ฌ ์๋ ์ฌ๋์ด ์์ผ๋ฉด ์์ ์ ์๋ฃํ๋ hacky bash๋ ์์ต๋๋ค.
@unilynx ๊ฐ์ฌํฉ๋๋ค
์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ ๋ @unilynx ์ +1, buildkit์ด ์ ๋ฅผ ์ํด ๋น๋ ์๊ฐ ๋ณผ๋ฅจ ๋ฌธ์ ๋ ํด๊ฒฐํ์ต๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ๋งํฌ ๋ช ๊ฐ์ ์์ ๋ฅผ ๋๋กญํ๋ฉด ์น๊ตฌ๋ค์ด ๋น๋๋ ๋ซ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋๋ก ์ค๋ํ ์ ์์ ๊ฒ์ ๋๋ค.
(๋๋ ๊ทธ๋ค๋ก๋ถํฐ ํํ์ ๋ฐ์ ๊ฒ์ด๋ค)
์บ์ฑ์ ์ฌ์ฉ ์ฌ๋ก๋ ๋น๋ํท์ด ์๋ ๋น๋ ์๊ฐ ๋ณผ๋ฅจ์ด ์ต์ข ์ด๋ฏธ์ง์ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ๋์ ๋ค๋ฅธ ๋ง์ ์ฌ๋๋ค์ ์ํด ํด๊ฒฐ๋์ง ์์์ต๋๋ค.
๋ฐ๋ผ์ build
์๊ฐ์ ์ฌ์ฉ๋ ์์ ๋ณผ๋ฅจ์์ ๋ชจ๋ ๋น๋ ์ํฐํฉํธ๋ฅผ ๋์ด์ฌ ์ ์์๊ณ ์์์ ์ธ๊ธํ ์ด bash๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ ์บ์๋ก ์ด๋ฏธ์ง๋ฅผ ๋ค์ ์ฌ๊ตฌ์ฑํ ์ ์์์ต๋๋ค.
์ค๋ฒ๋ ์ด ํ์ผ ์์คํ ์ด ์์ ๋ธํ๋ง ๊ฐ์ ธ์ค๋๋ก ์ด๋ฏธ์ง ์์ฒด๋ฅผ ๋ค์ ๋น๋ํ ์ ์์์ต๋๋ค.
๋น๋ ์ ๋ค๋ฅธ ์ด๋ฏธ์ง์ ๋ณผ๋ฅจ์ ์ฌ์ฌ์ฉํ ์๋ ์์์ต๋๋ค.
๋ค๋ฅธ ์ฌ๋๋ค์ ์ด๊ฒ์ ํ ์ ์์ต๋๊น?
(์บ์) ๋ง์ดํธ๋ "์คํ์ " ํ๋ฐํธ ์๋์ ์์ต๋๋ค. https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md ์ ์ค๋ช ๋์ด ์์ต๋๋ค(ํ์์ ์ฐธ์ํ๋ ค๊ณ ํ์ง๋ง ๋ ํ์ฅ๋ ์์ ๋ฅผ ์ฐ๊ฒฐํ ์ ์์).
@thaJeztah LMK ๊ฐ์ฌํฉ๋๋ค. ์ฌ๊ธฐ์์ ์ด๋ค ์์ผ๋ก๋ ๋์ธ ์ ์๋ค๋ฉด :)
https://github.com/moby/moby/issues/14080#issuecomment -547662701
@thisismydesign ๋น์ ์ ํฅ๋ถ์ ๋ง์ณ์ ์ฃ์กํ์ง๋ง --cache
node_modules
ํ ์ ์์ต๋๋ค. ์ต์ข ์ด๋ฏธ์ง์ ํ์๋์ง ์์ผ๋ฏ๋ก ์ฑ์ด ์์๋ฉ๋๋ค.
@thaJeztah ์์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๊ฒฐ๊ณผ ์ด๋ฏธ์ง๊ฐ ์บ์๋ ์ค์น๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๋น๋ ์๊ฐ ๋์ ์๋ฅผ ๋ค์ด npm install
๋ฅผ ์บ์ํ ์ ์๋ ๋ช ๊ฐ์ง ์๋ฅผ ์ดํด๋ณด๊ณ ์ถ์ต๋๋ค.
@kris-nova ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ์ง๋ง ๋ค์ bash ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ์ง ์์ต๋๋ค. ์๋ง๋ ์ฐ๋ฆฌ๋ ์๋ก์ด ๋ฌธ์ ๊ฐ ํ์ํ์ง๋ง ์ด๊ฒ์ AFAIK๊ฐ ์์ง ํด๊ฒฐ๋์ง ์์ ๊ฝค ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค.
@thaJeztah ๋ค์์ ์ต์ข ์ด๋ฏธ์ง์ ๋ง์ดํธ๊ฐ ํฌํจ๋์ง ์๊ณ ๋น๋ ํ์ ์บ์ฑ์ ๋ง์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ค๋ฃจ์ง ์๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ์บ์ ๋ง์ดํธ๋ฅผ ์ฌ์ฉํ๋ ๋ช ๊ฐ์ง ์์ ๋๋ค.
npm์ ๊ฒฝ์ฐ: npm ์บ์ ๋๋ ํ ๋ฆฌ์ ๋ํ ์บ์ ๋ง์ดํธ๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๊น(https://docs.npmjs.com/cli-commands/cache.html, ์ผ๋ฐ์ ์ผ๋ก ~/.npm
์ฐธ์กฐ)?
@ankon ์๋ํ ์ ์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ์๋ํด ๋ณด๊ฒ ์ต๋๋ค. ํ์คํ์ง ์์ ๋ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๋ Bundler์ Ruby์ ๋๋ค.
๋ฐ๋ผ์ Bundler์ ๊ฒฝ์ฐ $BUNDLE_PATH
์์ ๋น๋ ๋ณผ๋ฅจ์ ์ฌ์ฉํ ๋ค์ ๋น๋ ์ค์ ๋คํธ์ํฌ ์ข
์์ฑ์ ์ ๊ฑฐํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค(์์ง ํ
์คํธํ์ง ์์).
bundle install
bundle package
bundle install --standalone --local
์ด๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์บ์๋ ๋ฒ๋ค ์ค์น ๋๋ ํ ๋ฆฌ๊ฐ ์์์ ์๋ฏธํฉ๋๋ค. ๊ฑฐ๊ธฐ์์ gem์ ./vendor/cache
์ ํจํค์งํ๊ณ ./bundle
์ ๋ค์ ์ค์นํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ gem์ ์ค์นํ๊ณ ๋น๋ํ๋ ๋ฐ ์๊ฐ์ ์๋ผ์ง ์์ผ๋ฉฐ ์ค์ ๋ก ๋น๋ ๋จ๊ณ๋ฅผ ๋ ๊ธธ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
์บ์๋ ๋ฐ์ดํฐ๋ฅผ ์ด๋ฏธ์ง์ ์ ์ฅํ๋ ค๋ฉด ์บ์์์ ์ด๋ฏธ์ง๋ก ๋ณต์ฌํฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ๋ ๋ง์ต๋๋ค.
๋์ผํ ๋ณผ๋ฅจ์ ์ต์ข ์ด๋ฏธ์ง์ ํ์ฌํ๊ธฐ ์ํ ๊ธฐ๋ณธ ์ต์ ์ ๊ฐ๋ ๊ฒ์ด ์ผ๋ง๋ ๋ง์ ๋ ธ๋ ฅ์ ๋ค์ผ์ง ๋ชจ๋ฅด์ง๋ง ์ฌ์ฉ์ ๋ ์ฝ๊ฒ ๋ง๋ค ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค. ์ด๊ฒ๋ค์ ์ด ์บ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ๋ช ํํ์ง ์์ ์คํฌ๋ฆฝํธ ์ธ์ด์ 2๊ฐ์ง ์์ผ ๋ฟ์ ๋๋ค. ๋๋ ์ด๊ฒ์ด ๋ค๋ฅธ ๋งฅ๋ฝ์์๋ ๋ํ๋ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ฅ ํ์คํ ์์ํ ์ ์์ต๋๋ค.
@thisismydesign ๋น์ ์ด ์ํ๋ ๊ฒ์ ๋น๋์ ์คํ ์ฌ์ด์ ์บ์๋ฅผ ๊ณต์ ํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๊น?
buildkit์ Linux ์ ์ฉ ์๋ฃจ์ ์ ๋๋ค. Windows์์ ๋ฌด์์ ํ๋์?
@thisismydesign ์ (์บ์) ๋ง์ดํธ๊ฐ ์ต์ข ์ด๋ฏธ์ง์ ๋จ์ ๊ฒ์ผ๋ก ์์ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋๋ ์ด๊ฒ์ ๊ธฐ๋ํ์ง ์์ ๊ฒ์ด๊ณ ๋ค์ด๋ก๋ ์บ์ ๋ง์ดํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ด ์ด๋ฏธ์ง์ ~1GB๋ฅผ ๊ฐ๊ณ ์ถ์ง ์์ต๋๋ค.
buildkit์ Linux ์ ์ฉ ์๋ฃจ์ ์ ๋๋ค. Windows์์ ๋ฌด์์ ํ๋์?
Windows์์ ๋น๋ํท์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
https://docs.docker.com/develop/develop-images/build_enhancements/
์คํํ๊ธฐ ์ ์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๋ ๊ฒ๋ณด๋ค Windows UI์ฉ Docker๋ฅผ ํตํด ๋ฐ๋ชฌ ์ค์ ์ ์ง์ ํ๋ ๊ฒ์ด ๋ ์ฌ์ธ ์ ์์ต๋๋ค.
๋งํฌ ์๋จ์ @nigelgbanks :
Only supported for building Linux containers
์ ์ฃ์กํฉ๋๋ค. Windows์์ Linux ์ปจํ ์ด๋๋ฅผ ๊ตฌ์ถํ๊ณ ์๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
@thisismydesign ๋น์ ์ด ์ํ๋ ๊ฒ์ ๋น๋์ ์คํ ์ฌ์ด์ ์บ์๋ฅผ ๊ณต์ ํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๊น?
๊ทธ๋ฌ๋ฉด ์บ์ฑ๊ณผ ๊ด๋ จ๋ ์ฌ์ฉ ์ฌ๋ก๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
์ด๋ฅผ ์ฝ๊ฒ ํ๋ฉด CI์์ ์๋ฐฑ๋ง ๊ฑด์ ํจํค์ง ์ฌ๋ค์ด๋ก๋๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
์ฐ๊ฐ ๋น๋.
์คํ์ ๋น๋ํท ๊ธฐ๋ฅ์ ์ง์ํ๋ CI ์๋น์ค๊ฐ ์์ต๋๊น?
2020๋ 6์ 13์ผ ํ ์์ผ ์คํ 2:08 Csaba Apagyi [email protected] ์์ฑ:
@thisismydesign https://github.com/thisismydesign
๋น๋์ ์คํ ๊ฐ์ ์บ์๋ฅผ ๊ณต์ ํ ์ ์๊ธฐ๋ฅผ ์ํ์ญ๋๊น?๊ทธ๋ฌ๋ฉด ์บ์ฑ๊ณผ ๊ด๋ จ๋ ์ฌ์ฉ ์ฌ๋ก๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/moby/moby/issues/14080#issuecomment-643657987 ๋๋
๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/AAAMNS6IEQDCO5F3LNHJK5TRWO6AJANCNFSM4BJB2OOA
.
์คํ์ ๋น๋ํท ๊ธฐ๋ฅ์ ์ง์ํ๋ CI ์๋น์ค๊ฐ ์์ต๋๊น?
๋ช ์์ ์ผ๋ก ์ง์ํด์ผ ํฉ๋๊น? ์ ๋ buildkit๊ณผ ํจ๊ป gitlab-ci๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์ ๋๋ก ์๋ํฉ๋๋ค. ๊ฒฐ๊ตญ '๋์ปค ๋น๋'๋ฅผ ํธ์ถํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ ๋ฟ์ ๋๋ค.
๋ฌผ๋ก ์์ ์ ๋ฌ๋๋ฅผ gitlab์ ๊ฐ์ ธ์ค์ง ์๋ ํ ๋น๋ ์ค์ ์บ์ ์ ์ค์ ๋ฐ์ ํ๋ฅ ์ ์ด์จ๋ ๋ฎ์ต๋๋ค.
๋ค๋จ๊ณ ๋น๋์ ๋ช ๋ช ๋ ๋จ๊ณ์์ ๋ณต์ฌํ๋ ๊ฒ์ด ๋ ๋ค๋ฅธ ์๋ฃจ์ ์ ๋๋ค.
FROM golang:1.7.3 AS builder COPY --from=builder
๊ทธ๋ฌ๋ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์ง์ญ์ฑ์ ์ฌ์ ํ โโCI ์์ ์ผ์ ์ ๋ํด ๋๋ถ๋ถ ํด๊ฒฐ๋์ง ์์ ๋ฌธ์ ์ ๋๋ค.
์คํ์๋ (์ง์์ ์ผ๋ก ์๊ธ์ด ๋ถ์กฑํ) ํจํค์ง ์ ์ฅ์์ ๋ํ ๋ถํ์ํ ์์ฒญ์ ์ต์ํํ๊ธฐ ์ํด ๋ ๋๋ํ๊ณ ๊ณตํต ํ์ผ ์์คํ ์์ (์ค๊ฐ) ์ด๋ฏธ์ง๋ฅผ ๊ณต์ ํด์ผ ํฉ๋๋ค.
๋ฐฉ๊ธ buildkit
๋ฅผ ์๋ํ์ง๋ง "์ค์ " ๋ณผ๋ฅจ์ด๋ ํธ์คํธ์ ๋ง์ดํธ๋ฅผ ๋ฐ์ธ๋ฉํ๋ฉด 100% ๋์์ด ๋๋ ์ํฌํ๋ก๊ฐ ์ฝ๊ฐ๋ง ํฅ์๋ฉ๋๋ค.
docker build
๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ glibc
๋ฒ์ ์ ๊ต์ฐจ ์ปดํ์ผํ ๋ค์ ์ด glibc
์๋์ ๋น๋ํ๊ณ ๋งํฌํ ์ ๋น๋ ์ปจํ
์ด๋์ ์ผ๋ถ๊ฐ ๋์ด์ผ ํฉ๋๋ค.
์ด์ ๋ฐ๋ณต๋ glibc
์์ค ๋ค์ด๋ก๋๊ฐ ๋ฐ์ธ๋ ๋ง์ดํธ( buildkit
์์)๋ก ํด๊ฒฐ๋์์ผ๋ฉฐ ์์นด์ด๋ธ๋ ๋ฌธ์ ์์ด ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ปจํ
์ด๋๊ฐ ์ค๋ฅ๋ก ์ธํด ํญํ๋๊ธฐ ๋๋ฌธ์ ์คํจํ ๋น๋ ํ ๋ถ์์ ์ํด ๋น๋ ๋๋ ํ ๋ฆฌ์ ์ก์ธ์คํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. (์ก์ธ์คํ๊ธฐ ์ํด ๋ค์ ์์ํ๋ฉด ๋น๋๊ฐ ๋ค์ ์์๋๋ฏ๋ก ๋์์ด ๋์ง ์์ต๋๋ค.)
๋ํ ๋น๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด ์ด์ ์ปจํ
์ด๋์์ ์ ์ปจํ
์ด๋๋ฅผ ๋น๋ํ๋ ๊ฒ๊ณผ ๊ฐ์ด ์ ํํ๋ฅผ ๋ฐ์ด๋์ด์ผ ํ๋์ง ์์ง ๋ชปํฉ๋๋ค. ๋น๋ ๋๋ ํ ๋ฆฌ๊ฐ ์ฒ์์ ๋ง์ดํธ์๋๋ผ๋ฉด ๋๋ฌด ์ฝ๊ฒ. (๋น๋ ํ make install
ํ๋ฉด ๋น๋ ๋๋ ํ ๋ฆฌ์ ๋ค์ด๋ก๋ํ ์์ค๊ฐ ์๋ ๊นจ๋ํ ์ปจํ
์ด๋๊ฐ ์์ต๋๋ค.)
๊ทธ๋์ ์ ๋ ์ด๊ฒ์ด ๋งค์ฐ ์ ํจํ ๊ธฐ๋ฅ ์์ฒญ์ด๋ฉฐ ์ฐ๋ฆฌ์ ์ถ์ ํจ์ฌ ๋ ์ฝ๊ฒ ๋ง๋ค์ด ์ค ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์ต๋๋ค. ์ด๋ค ๊ธฐ๋ฅ์ด ๋จ์ฉ๋ ์ ์๊ณ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ๊ธฐ๋ฅ์ด ์ค๋จ๋ ์ ์๋ค๊ณ ํด์ ๋ชจ๋ ๋น์ฉ์ ๋ค์ฌ ๊ตฌํํ๋ ๊ฒ์ ํผํด์ผ ํ๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ๋ ๊ฐ๋ ฅํ ๋๊ตฌ๋ฅผ ์ํ ์ถ๊ฐ ์ฉ๋๋ก ์๊ฐํ์ญ์์ค.
ํ์ง๋ง ๋น๋ ์คํจ ํ ๋ถ์์ ์ํด ๋น๋ ๋๋ ํ ๋ฆฌ์ ์ก์ธ์คํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๋น๋ํท์ ๋ํ ๊ธฐ๋ฅ ์์ฒญ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. ์ด๊ฒ์ ํ์คํ ์๋ ค์ง ๋๋ฝ๋ ๋ถ๋ถ์ ๋๋ค.
"๋น๋ ๋๋ ํ ๋ฆฌ"๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํ ๋์์ด ์์ผ๋ฉด ์ค๋ ์ด ์์
์ ์ํํ ์ ์์ต๋๋ค. ์คํ์ด ์คํจํ ํ ์คํํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ฌ์ ํ ์บ์๋์ด์ผ ํ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํ ๋ง์ง๋ง ๋จ๊ณ๋ง ํ์ํฉ๋๋ค.
์ด๊ฒ์ ์ฝ๊ฐ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด๋ผ๋ ๊ฒ์ ์ดํดํ์ญ์์ค.
๋ํ ๋น๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด ์ด์ ์ปจํ ์ด๋์์ ์ ์ปจํ ์ด๋๋ฅผ ๋น๋ํ๋ ๊ฒ๊ณผ ๊ฐ์ด ๋๊ตฌ๋ฅผ ๋ฐ์ด๋์ด์ผ ํ๋ ์ด์ ๋ฅผ ์์ง ๋ชปํฉ๋๋ค.
์ฌ๊ธฐ์์ ์ํ๋/๊ธฐ๋ํ๋ ๊ฒ์ ๋ ์ค๋ช ํ ์ ์์ต๋๊น?
์ฌ๊ธฐ์์ ์ํ๋/๊ธฐ๋ํ๋ ๊ฒ์ ๋ ์ค๋ช ํ ์ ์์ต๋๊น?
์ด ๊ฒฝ์ฐ์๋ 1๊ฐ์ ๋๋ก 2๋ง๋ฆฌ์ ์๋ฅผ ์ฃฝ์ด๊ณ ์ ํฉ๋๋ค.
์ด๊ฒ๊ณผ ๋น๋ ์ปจํ
์ด๋("์ปจํ
์ด๋ ๋น๋" ํฌํจ)๊ฐ ๋น๋ ๋ฅผ ๊ฐ๋ฅํ ํ ๊ณ ํต ์์ด ๋ง๋ค์ด์ผ ํ๋ ๋ค๋ฅธ ๋ชจ๋ ๊ฒฝ์ฐ๋ -v
๊ธฐ๋ฅ์ ์ ๊ณตํจ์ผ๋ก์จ ํจ์ฌ ๋ ์ฐ์ํ๊ฒ ํด๊ฒฐ๋ ๊ฒ์
๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ์ํด ์ ํญ์ ์ดํดํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ต๋๋ค. buildkit
๊ฐ ๋ถ๋ช
ํ ์ ๊ณตํ๋ "์บ์ ์ธ์" ๊ธฐ๋ฅ์ ์ ์ธํ๊ณ ๋ ์ด ๊ธฐ๋ฅ์ ๋ถ๋ถ์ ์ผ๋ก๋ง ๋ฌ์ฑํ๊ธฐ ์ํ ๋ณต์กํ๊ณ ์ฑ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก๋ง ๋ณผ ์ ์์ต๋๋ค. (๊ทธ๋ฆฌ๊ณ ์บ์ฑ์ด ์ฃผ์ ๋ชฉํ์ธ ๋ง์ ๊ฒฝ์ฐ์ -v
์ ์ํด ํด๊ฒฐ๋ ๊ฒ์
๋๋ค. ๋ง์ดํธ๋ ๋ณผ๋ฅจ์ด ์คํ๋๋ ํ ํน์ ์ปจํ
์ด๋์ ๊ณ ์ ๋์ด์ผ ํ์ง๋ง ์บ์๋ buildkit
์๋ ๋์ผํ ์ ํ ์ฌํญ์ด ์ ์ฉ๋ฉ๋๋ค.)
์ฌ๊ธฐ์์ ์ํ๋/๊ธฐ๋ํ๋ ๊ฒ์ ๋ ์ค๋ช ํ ์ ์์ต๋๊น?
๋น๋ ํ๊ฒฝ ์์ฒด๊ฐ ์ปจํ ์ด๋ํ๋๊ณ ์ต์ข ๊ฒฐ๊ณผ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฐํ์ ํ๊ฒฝ(๋น๋ ๋๊ตฌ ์์ด)๋ง ํฌํจํ๋ ์ด๋ฏธ์ง๊ฐ ๋๋ ๋ค๋จ๊ณ ๋น๋ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋ด๊ฐ ์ํ๋ ๊ฒ์ ์ค๊ฐ Docker ๋น๋ ์ปจํ ์ด๋๊ฐ ๋น๋ ์ถ๋ ฅ ์ด๋ฏธ์ง์ ์ ๋ฌํ ํ์ ์์ด ์ฑ๊ณต์ ์ธ ๋น๋์ ์คํจํ ๋น๋ ๋ชจ๋์ ์ด๋ฒคํธ์์ ํธ์คํธ ์์คํ ์ ๋จ์ ํ ์คํธ ๋ฐ ์ฝ๋ ๊ฒ์ฌ ๊ฒฐ๊ณผ ํ์ผ์ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ถ์ถ์ ์ํด (๋จ์ ํ ์คํธ๊ฐ ์ด์ ๋จ๊ณ์์ ํต๊ณผํ์ง ๋ชปํ๋ฉด ์ ์ฒด ๋น๋ ํ๋ก์ธ์ค๊ฐ ๋จ๋ฝ๋๋ฏ๋ก ํด๋น ์ํฉ์์ ์ถ๋ ฅ ์ด๋ฏธ์ง๊ฐ ์์ ๊ฒ์ด๋ฏ๋ก ๋จ์ ํ ์คํธ ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ฅ ํ์ํ ๋) . ํธ์คํธ ๋ณผ๋ฅจ์ Docker ๋น๋ ํ๋ก์ธ์ค์ ํ์ฌํ ์ ์์ผ๋ฉด ๋ด๋ถ ํ ์คํธ ๋ช ๋ น์ด ์ถ๋ ฅ์ ํ์ฌ๋ ํด๋๋ก ๋ณด๋ผ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@mcattle
๋ด๊ฐ ํ์๋ก ํ๋ ๊ธฐ๋ฅ ์ค ํ๋์ ์ค์ ๋ก ๋งค์ฐ ์ ์ฌํฉ๋๋ค.
๋ฉฐ์น ์ ์ buildah
๋ก ์ด์ฌํ ์ดํ๋ก ํ์ํ ๋ชจ๋ ๊ธฐ๋ฅ๊ณผ ๊ทธ ์ด์์ ์ป์์ต๋๋ค. ๋ด ๋น๋ ์ปจํ
์ด๋๋ฅผ ๋๋ฒ๊น
ํ๋ ๊ฒ์ ์ข
๋ฃ๋ ์ปจํ
์ด๋์ ํธ์คํธ์ ๋ํ ๋งํฌ๋ฅผ ์ ์ฐํ๊ฒ ์
๋ ฅํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ด ์์๋ค๋ฉด ์์ ํ ๋ถ๊ฐ๋ฅํ์ ๊ฒ์
๋๋ค. ์ด์ ๋๋ ํ๋ณตํ ์บ ํ์นด์
๋๋ค. (ํํฐ๋ฅผ "๊ฒฝ์์"์ ์ถฉ๋์์ผ ์ ๊ฐ์
๋๋ค. ๋ถ์พ๊ฐ์ ๋๋ผ๋ฉด ์ด ๋๊ธ์ ์ญ์ ํ๊ฒ ์ต๋๋ค. ํ์ง๋ง ์ด ์ค๋ ๋์ ์ ์๋ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ํจ๊ณผ์ ์ธ ์๋ฃจ์
์ด์ด์ ์ธ๊ธํด์ผ ํ๋ค๊ณ ์๊ฐํ์ต๋๋ค.) .
๋ค๋ฅธ ๋๊ตฌ๊ฐ ๊ทํ์ ํ์์ ๋ ์ ๋ง๋๋ค๊ณ ๋งํ๋ ๊ฒ์ ๊ธฐ๋ถ์ด ์ข์ง ์์ต๋๋ค.
๋น์ ์๊ฒ ํจ๊ณผ๊ฐ ์๋ ๊ฒ์ด ์๋ค๋ฉด ๊ทธ๊ฒ์ ํ๋ฅญํฉ๋๋ค.
Docker์ v1 ๋น๋์ ๋น๋ํท ๋น๋ ๋ชจ๋์ ๋จ์ ์ ์ด ๋งฅ๋ฝ์์ ๊ฝค ์ ์ดํด๋๊ณ ์์ผ๋ฉฐ, ํด๋ผ์ด์ธํธ์์ ๋ง์ดํธ๋ฅผ ๋ฐ์ธ๋ฉํ์ง ์๊ณ ๋ ์ด๋ฌํ ๋จ์ ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์์ต๋๋ค.
GitHub ์๋ฆผ @github.com์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
"@mcattle
๋ด๊ฐ ํ์๋ก ํ๋ ๊ธฐ๋ฅ ์ค ํ๋์ ์ค์ ๋ก ๋งค์ฐ ์ ์ฌํฉ๋๋ค.
๋ฉฐ์น ์ buildah๋ก ์ด์ฌํ ์ดํ๋ก ํ์ํ ๋ชจ๋ ๊ธฐ๋ฅ๊ณผ ๊ทธ ์ด์์ ์ป์์ต๋๋ค. ๋ด ๋น๋ ์ปจํ
์ด๋๋ฅผ ๋๋ฒ๊น
ํ๋ ๊ฒ์ ์ข
๋ฃ๋ ์ปจํ
์ด๋์ ํธ์คํธ์ ๋ํ ๋งํฌ๋ฅผ ์ ์ฐํ๊ฒ ์
๋ ฅํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ด ์์๋ค๋ฉด ์์ ํ ๋ถ๊ฐ๋ฅํ์ ๊ฒ์
๋๋ค. ์ด์ ๋๋ ํ๋ณตํ ์บ ํ์นด์
๋๋ค. (ํํฐ๋ฅผ "๊ฒฝ์์"์ ์ถฉ๋์์ผ ์ ๊ฐ์
๋๋ค. ๋ถ์พ๊ฐ์ ๋๋ผ๋ฉด ์ด ๋๊ธ์ ์ญ์ ํ๊ฒ ์ต๋๋ค. ํ์ง๋ง ์ด ์ค๋ ๋์ ์ ์๋ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ํจ๊ณผ์ ์ธ ์๋ฃจ์
์ด์ด์ ์ธ๊ธํด์ผ ํ๋ค๊ณ ์๊ฐํ์ต๋๋ค.) .โ
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์
๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ๋ณด๊ฑฐ๋ ๊ตฌ๋
์ ์ทจ์ํ์ธ์.
ํด๋ผ์ด์ธํธ์์ ๋ง์ดํธ๋ฅผ ๋ฐ์ธ๋ํ ํ์ ์์ด
์ฌ๊ธฐ์์๋ ๋น๋ ์๊ฐ -v ์ต์ ์ด ๋น๋ ์๊ฐ์ ๋คํธ์ํฌ ๋ฆฌ์์ค์ ์์กดํ๋ ๊ฒ ์ด์์ผ๋ก ์ฌํ์ฑ ์ ์์กด ํ๊ฑฐ๋ ํฌ์ํ์ง ์๋ ์ด์ ๋ฅผ ์ค๋ช ํฉ๋๋ค.
https://github.com/moby/moby/issues/14080#issuecomment -484314314 :
๋ณต์ฌ || REMOTE_FETCH || ์ฝ๋ค()
- ๋ค์ ์ค ์ฌํ์ฑ์ด ๊ฐ์ฅ ๋์ ๊ฒ์ ๋ฌด์์ ๋๊น?
๋น๋ ์๊ฐ -v
(๋ฐ cgroupsv2)์๋ buildah๋ฅผ ์ฌ์ฉํฉ๋๋ค.
@mcattle ๋๋ ๊ฐ์ ์๊ตฌ ์ฌํญ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ผ๋ฒจ๋ง์ผ๋ก ํด๊ฒฐํ์ต๋๋ค.
๋น๋ ์๊ฐ
-v
(๋ฐ cgroupsv2)์๋ buildah๋ฅผ ์ฌ์ฉํฉ๋๋ค.
"-v" ์ง์ ๋๋ฌธ์ ๋น๋ ์๋ฒ์์ Ubuntu(๋์ปค๋ง ์์)์์ Fedora(docker๋ฅผ podman/buildah๋ก ๋์ฒด)๋ก ์ ํํ๋ ๊ฒ์ ์ง์งํ๊ฒ ๊ณ ๋ คํ๊ณ ์์ต๋๋ค.
ใ Podman์ ๋ฃจํธ ์๋ ๋ชจ๋๋ ์ง์ํ๋ฉฐ ์ง๊ธ๊น์ง๋ Docker์ ์์ ํ ํธํ๋๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค(Docker ๋ฐ๋ชฌ์ฒ๋ผ ๋ฃจํธ๋ก ์คํํ๋ ๋์ ๋ฃจํธ ์๋ ๋ชจ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ํ๋ --user/USER ์ํฅ ๋ฐ ์ด๋ฏธ์ง ์บ์ฑ์ ์ฐจ์ด์ ์ ์ธ).
์ถ์ . ๋ฃจํธ ์๋ ์์ ์๋ cgroups v2๊ฐ ํ์ํ์ง๋ง, ์ด์ ๋ํ ์ง์์ ๋์ปค๋ณด๋ค ์ปจํ ์ด๋ ๋ฐํ์์ ๊ดํ ๊ฒ์ ๋๋ค. RunC ๋์ CRun์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ(Fedora์ฒ๋ผ) cgroup v2๋ฅผ ์ง์ํ๊ฒ ๋ฉ๋๋ค. RunC๋ Git์์ ์ผ๋ถ v2 ๋ฐ rootless ์ง์์ ์ ๊ณตํ์ง๋ง ๋ช ๋ฌ ์ ์ Fedora(31)์์ ํ ์คํธํ ๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
ํธ์ง: Ubuntu์๋ ์ต์ 20.04 LTS๊ฐ ์๋๋ผ Groovy์ podman/buildah/etc๊ฐ ์์ต๋๋ค. Debian์์ ๋ถ์์ ํ๊ฒ ๊ฐ์ ธ์จ ๊ฒ ๊ฐ์ต๋๋ค. ์ ์ด๋ ์์ง๊น์ง๋ LTS๋ก ๋ฐฑํฌํธ๋์ง ์์์ต๋๋ค. 2018๋ ๋ถํฐ Fedora์ ์์๋ ๋ฐ๋ฉด, ์ ์๊ฐ์๋ ๊ทธ๋ ์ต๋๋ค.
@eero-t ์๋ง๋ ๋น์ ์ ๋น์ ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ค๋ช ํ ์ ์๊ณ BuildKit์ด ํ์ฌ ์ ๊ณตํ๋ ์ต์ ์์ ๋๋ฝ๋ ๊ฒ์ ์ด์ ๋ํด ํด๊ฒฐ๋์ง ์์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ASP.Net 5 ํจํค์ง ๊ด๋ฆฌ์ ์ ์ํด ๋ค์ด๋ก๋/์ ๋ฐ์ดํธ๋๋ ์ด ๊ธฐ๋ฅ์ ๋ํ ์ฝ๊ฐ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. ํจํค์ง ๊ด๋ฆฌ์๋ ์์ฒด ์บ์ ํด๋๋ฅผ ๊ด๋ฆฌํ๋ฏ๋ก ๊ถ๊ทน์ ์ผ๋ก ๋น๋ ๊ฐ์ ์ฌ์ฌ์ฉํ ์ ์๋ ํด๋๋ง ์์ผ๋ฉด ๋ฉ๋๋ค.
์ฆ: