Moby: docker ๋นŒ๋“œ๋Š” ๊ถŒํ•œ ์žˆ๋Š” ์ž‘์—…์„ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2013๋…„ 09์›” 18์ผ  ยท  286์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: moby/moby

ํ˜„์žฌ docker run -privileged ์™ธ๋ถ€์—์„œ ๊ถŒํ•œ ์žˆ๋Š” ์ž‘์—…์„ ์‹คํ–‰ํ•  ๋ฐฉ๋ฒ•์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฆ‰, Dockerfile์—์„œ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด ์ตœ๊ทผ ๋ฌธ์ œ: ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ fuse(encfs์šฉ)๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. mknod๊ฐ€ ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ๊ถŒํ•œ ์žˆ๋Š” ๋นŒ๋“œ ๋‹จ๊ณ„ ์—†์ด๋Š” ์ง€์›๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ“จ์ฆˆ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์€ ์ด๋ฏธ ํ•ดํ‚น ๋ฐ ์ถ”์•…ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์—‰๋ง์ž…๋‹ˆ๋‹ค([1] ๋ฐ [2] ์ฐธ์กฐ).

ํ˜„์žฌ ์œ ์ผํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ run -privileged๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ์„ค์น˜๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ƒˆ 'ํ“จ์ฆˆ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€'๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ํ•˜๋‚˜์˜ Dockerfile์—์„œ ๊ณต์‹ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ „์ฒด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  • ๋„์ปค ๋นŒ๋“œ - ๊ถŒํ•œ
    ์ด๊ฒƒ์€ run -privileged์™€ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“  ๋Œ€๋ฌธ์ž ์ œํ•œ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

๋˜๋Š”

  • Dockerfile์˜ RUNP ๋ช…๋ น
    ์ด๊ฒƒ์€ .. ์ž˜ .. ์‹คํ–‰๋˜์–ด์•ผ ํ•˜์ง€๋งŒ _P_rivileges์™€ ํ•จ๊ป˜

์†Œ์Šค๋ฅผ ๋ณด๋ ค๊ณ  ํ–ˆ์ง€๋งŒ go๋กœ ์“ธ๋ชจ๊ฐ€ ์—†์—ˆ๊ณ  ๋ถˆํ–‰ํžˆ๋„ ๊ฐœ๋… ์ฆ๋ช…์„ ์ฒจ๋ถ€ํ•  ์ ์ ˆํ•œ ์ง„์ž…์ ์„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. :(

1: https://github.com/rogaha/docker-desktop/blob/master/Dockerfile#L40
2: https://github.com/dotcloud/docker/issues/514#issuecomment -22101217

arebuilder kinfeature

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

--privileged for docker image์™€ ๊ด€๋ จํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋“ค๋กœ๋ถ€ํ„ฐ ์™œ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ๋ฐ˜๋ฐœ์ด ์žˆ๋Š”์ง€ ์ •๋ง ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ๋ฐœ์— ์ด์„ ์˜๊ณ  ์‹ถ๋‹ค๋ฉด ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋งŒ ๋„ฃ์œผ๋ฉด ๋์ž…๋‹ˆ๋‹ค. ๋™์ผํ•œ ๊ฒƒ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๊นŒ?
4~5๋…„์ด ์ง€๋‚ฌ์ง€๋งŒ ์•„๋ฌด๋Ÿฐ ์ง„์ „์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ƒฅ ๋†€๋ž๋‹ค...

๋ชจ๋“  286 ๋Œ“๊ธ€

์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ ์œ„ํ•ด ๊ฐ„๋‹ค๋ฉด, ๋‚˜๋Š” ๋‹ค์Œ์„ ๊ฐ–๋Š” ๋Œ€์‹ ์— RUNP ์˜ต์…˜์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.
-privileged ๋ชจ๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ.

2013๋…„ 9์›” 18์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 1:07 Benjamin Podszun
์•Œ๋ฆผ@github.com์ž‘์„ฑ :

ํ˜„์žฌ๋กœ์„œ๋Š” ๊ถŒํ•œ ์žˆ๋Š” ์ž‘์—…์„ ์™ธ๋ถ€์—์„œ ์‹คํ–‰ํ•  ๋ฐฉ๋ฒ•์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋„์ปค ์‹คํ–‰ - ๊ถŒํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, Dockerfile์—์„œ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜์˜ ์ตœ๊ทผ
๋ฌธ์ œ: ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ fuse(encfs์šฉ)๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์„ค์น˜ ์ค‘
ํ“จ์ฆˆ๋Š” ์ด๋ฏธ ํ•ดํ‚น ๋ฐ ์ถ”์•…ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์—‰๋ง์ž…๋‹ˆ๋‹ค([1] ๋ฐ [2] ์ฐธ์กฐ).
๊ถŒํ•œ ์žˆ๋Š” ๋นŒ๋“œ ๋‹จ๊ณ„ ์—†์ด๋Š” mknod๊ฐ€ ์‹คํŒจ/์ง€์›๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ์œ ์ผํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
-privileged๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ƒˆ๋กœ์šด 'ํ“จ์ฆˆ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€'๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์˜๋ฏธ๋Š” ๋‚ด๊ฐ€
๊ณต์‹ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€์—์„œ ๋งˆ๋ฌด๋ฆฌ๊นŒ์ง€ ์ „์ฒด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋‹จ์ผ Dockerfile์—์„œ.

๋”ฐ๋ผ์„œ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  • ๋„์ปค ๋นŒ๋“œ - ๊ถŒํ•œ
    ์ด๊ฒƒ์€ run-privileged์™€ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“ 
    ๋ชจ์ž ์ œํ•œ

๋˜๋Š”

  • Dockerfile์˜ RUNP ๋ช…๋ น
    ์ด๊ฒƒ์€ .. ์ž˜ .. ์‹คํ–‰๋˜์–ด์•ผ ํ•˜์ง€๋งŒ _P_rivileges์™€ ํ•จ๊ป˜

์†Œ์Šค๋ฅผ ์ฐพ์•„๋ดค๋Š”๋ฐ ๊ฐ€๋„ ์†Œ์šฉ์—†๊ณ  ๋ชป์ฐพ๊ฒ ๋‹ค
๋ถˆํ–‰ํžˆ๋„ ๊ฐœ๋… ์ฆ๋ช…์„ ์ฒจ๋ถ€ํ•˜๊ธฐ์— ์ ์ ˆํ•œ ์ง„์ž…์ ์ž…๋‹ˆ๋‹ค. :(

1: https://github.com/rogaha/docker-desktop/blob/master/Dockerfile#L40
2: #514(๋Œ“๊ธ€) https://github.com/dotcloud/docker/issues/514#issuecomment -22101217

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/dotcloud/docker/issues/1916์—์„œ ํ™•์ธํ•˜์„ธ์š”.
.

๋น…ํ„ฐ ๋ทฐ
http://vvieux.com

์‚ฌ์‹ค, ์šฐ๋ฆฌ๋Š” ๋‘˜ ๋‹ค ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, RUNP +๋Š” "-privileged"๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.
๊นƒ๋ฐœ.

"-privileged"๋ฅผ ์š”๊ตฌํ•˜์ง€ ์•Š๊ณ  RUNP์—๋งŒ ์˜์กดํ•œ๋‹ค๋ฉด,
๋นŒ๋“œ๋ฅผ ํ•  ๋•Œ "์ด ๋นŒ๋“œ๊ฐ€ ์•ˆ์ „ํ•œ๊ฐ€์š”?"๋ผ๋Š” ์งˆ๋ฌธ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
"-privileged"์—๋งŒ ์˜์กดํ•˜๋ฉด ์ •๋ณด๋ฅผ ๋†“์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค(
Dockerfile) "์ด ์ž‘์—…์—๋Š” ํ™•์žฅ๋œ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค".

๋‘ ๊ฐ€์ง€๋ฅผ ๋ณ‘ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

2013๋…„ 9์›” 18์ผ ์ˆ˜์š”์ผ ์˜ค์ „ 4:07 Benjamin Podszun
์•Œ๋ฆผ@github.com์ž‘์„ฑ :

ํ˜„์žฌ๋กœ์„œ๋Š” ๊ถŒํ•œ ์žˆ๋Š” ์ž‘์—…์„ ์™ธ๋ถ€์—์„œ ์‹คํ–‰ํ•  ๋ฐฉ๋ฒ•์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋„์ปค ์‹คํ–‰ - ๊ถŒํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, Dockerfile์—์„œ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜์˜ ์ตœ๊ทผ
๋ฌธ์ œ: ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ fuse(encfs์šฉ)๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์„ค์น˜ ์ค‘
ํ“จ์ฆˆ๋Š” ์ด๋ฏธ ํ•ดํ‚น ๋ฐ ์ถ”์•…ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์—‰๋ง์ž…๋‹ˆ๋‹ค([1] ๋ฐ [2] ์ฐธ์กฐ).
๊ถŒํ•œ ์žˆ๋Š” ๋นŒ๋“œ ๋‹จ๊ณ„ ์—†์ด๋Š” mknod๊ฐ€ ์‹คํŒจ/์ง€์›๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ์œ ์ผํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
-privileged๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ƒˆ๋กœ์šด 'ํ“จ์ฆˆ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€'๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์˜๋ฏธ๋Š” ๋‚ด๊ฐ€
๊ณต์‹ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€์—์„œ ๋งˆ๋ฌด๋ฆฌ๊นŒ์ง€ ์ „์ฒด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋‹จ์ผ Dockerfile์—์„œ.

๋”ฐ๋ผ์„œ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  • ๋„์ปค ๋นŒ๋“œ - ๊ถŒํ•œ
    ์ด๊ฒƒ์€ run-privileged์™€ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“ 
    ๋ชจ์ž ์ œํ•œ

๋˜๋Š”

  • Dockerfile์˜ RUNP ๋ช…๋ น
    ์ด๊ฒƒ์€ .. ์ž˜ .. ์‹คํ–‰๋˜์–ด์•ผ ํ•˜์ง€๋งŒ _P_rivileges์™€ ํ•จ๊ป˜

์†Œ์Šค๋ฅผ ์ฐพ์•„๋ดค๋Š”๋ฐ ๊ฐ€๋„ ์†Œ์šฉ์—†๊ณ  ๋ชป์ฐพ๊ฒ ๋‹ค
๋ถˆํ–‰ํžˆ๋„ ๊ฐœ๋… ์ฆ๋ช…์„ ์ฒจ๋ถ€ํ•˜๊ธฐ์— ์ ์ ˆํ•œ ์ง„์ž…์ ์ž…๋‹ˆ๋‹ค. :(

1: https://github.com/rogaha/docker-desktop/blob/master/Dockerfile#L40
2: #514(๋Œ“๊ธ€) https://github.com/dotcloud/docker/issues/514#issuecomment -22101217

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/dotcloud/docker/issues/1916์—์„œ ํ™•์ธํ•˜์„ธ์š”.
.

@jpetazzo https://twitter.com/jpetazzo
์ตœ์‹  ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ: http://blog.docker.io/2013/09/docker-joyent-openvpn-bliss/

ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋“ค๋ฆฌ๋„ค์š”. ๋‚˜์—๊ฒŒ ์ด ๊ธฐ๋Šฅ(์žฅ์น˜ ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ)์€ Docker์—์„œ ๋ฐฐํฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋Š์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋„์šธ ์ˆ˜ ์žˆ๋‹ค๋ฉด (๋Œ€๋ถ€๋ถ„ ํ…Œ์ŠคํŠธ, ๋‚˜๋Š” ์†Œ์Šค๋ฅผ ๋ณด๋ ค๊ณ ํ–ˆ์ง€๋งŒ ์ง€๊ธˆ๊นŒ์ง€๋Š” ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ํŒŒ์ผ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ช…๋ น์€ ๋ฆฌํ”Œ๋ ‰์…˜์„ ํ†ตํ•ด ์ฐพ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. config.privileged๋ฅผ true๋กœ ์„ค์ •ํ•˜๋Š” runp ๋ช…๋ น์„ ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ ์ง€๊ธˆ๊นŒ์ง€๋Š” ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์—†์Œ -> ๋ฉˆ์ถค) ๊ธฐ๊บผ์ด ์‹œ๊ฐ„์„ ํˆฌ์žํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

RUNP + build -privileged ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

_@ shykes , @crosbymichael_์˜ ์ฃผ์˜๋ฅผ

... ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๊ตฌํ˜„ํ•  ์‚ฌ๋žŒ์„ ์ฐพ์•„์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  โ˜บ
๊ทธ๊ฒƒ์ด ๋‹น์‹ ์ด ์‹œ๋„ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์ž…๋‹ˆ๊นŒ(๋ฌผ๋ก  ํ•ต์‹ฌ ํŒ€์˜ ์ ์ ˆํ•œ ์ง€์นจ๊ณผ ํ”ผ๋“œ๋ฐฑ๊ณผ ํ•จ๊ป˜)?

๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์ด ๋‚˜๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•œ ๊ฒฝ์šฐ: ๋ฌผ๋ก ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๋ฏธ go ์ฝ”๋“œ๋ฅผ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์— ๋Œ€ํ•ด ํ•‘(ping)ํ•  ๋ช‡ ๊ฐ€์ง€ ์ง€์นจ/๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์žˆ์œผ๋ฉด ํ™•์‹คํžˆ ์‹œ๋„ํ•ด ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” RUNP์— ํŒ”๋ฆฌ์ง€ ์•Š๊ฑฐ๋‚˜ ๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋™์ผํ•œ ์ž…๋ ฅ์— ๋Œ€ํ•ด ๊ฐ€๋Šฅํ•œ ๋‹ค๋ฅธ ๋นŒ๋“œ๋ฅผ ์†Œ๊ฐœํ•˜๋Š” ๊ฒƒ์€ ์ข‹์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋นŒ๋“œ์— ์ธ์ˆ˜ ๋˜๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

ํŠนํžˆ ๋‚˜๋Š” a) ๋งค์šฐ ํฌ๊ณ  b) ๋ช…ํ™•ํ•˜๊ฒŒ ์ง€์ •๋˜๊ฑฐ๋‚˜ ์ •์˜๋˜์ง€ ์•Š์€ ๊ธฐ๋Šฅ ์ง‘ํ•ฉ์„ ์ง€์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— "ํŠน๊ถŒ"์— ๋Œ€ํ•œ ์ข…์†์„ฑ์„ ๋ชจ๋“  ๊ณณ์—์„œ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ‘œ์ค€ ๋„์ปค ์‹คํ–‰ ํ™˜๊ฒฝ์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์„ ๋•Œ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๊ฐ€ ์ „๋ถ€ ์•„๋‹ˆ๋ฉด ์ „๋ฌด(all-or-nothing) ๋ฐฉ์‹์œผ๋กœ ๋ณด์•ˆ์„ ์šฐํšŒํ•˜๋Š” ๊ฑฐ์นœ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ์„œ๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. bind-mounts ๋ฐ ์‚ฌ์šฉ์ž ์ •์˜ lxc-conf์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

โ€”
@solomonstre
@getdocker

2013๋…„ 9์›” 20์ผ ๊ธˆ์š”์ผ ์˜คํ›„ 3:18 Benjamin Podszun
[email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์ด ๋‚˜๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•œ ๊ฒฝ์šฐ: ๋ฌผ๋ก ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๋ฏธ go ์ฝ”๋“œ๋ฅผ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์— ๋Œ€ํ•ด ํ•‘(ping)ํ•  ๋ช‡ ๊ฐ€์ง€ ์ง€์นจ/๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์žˆ์œผ๋ฉด ํ™•์‹คํžˆ ์‹œ๋„ํ•ด ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/dotcloud/docker/issues/1916#issuecomment -24844868

์˜ˆ๋ฅผ ๋“ค์–ด ํ“จ์ฆˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜์‹ญ๋‹ˆ๊นŒ?
์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” mknod๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ณด๊ธฐ์—๋Š” ์ด๋Ÿฌํ•œ ๋นŒ๋“œ๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ๋Š” ์ž‘๋™ํ•˜๊ฑฐ๋‚˜(ํ˜„์žฌ๋ณด๋‹ค ์ œํ•œ์ด ์ ์Œ) ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค(ํ˜„์žฌ ์ƒํƒœ). ๋™์ผํ•œ ๋นŒ๋“œ ํŒŒ์ผ์˜ ๋‹ค๋ฅธ '๋ฒ„์ „'์— ๋Œ€ํ•œ ์œ„ํ—˜์ด ๊ฑฐ์˜ ๋˜๋Š” ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋ ค๋ฉด Dockerfile์„ build ํ•˜๋Š” ๋Œ€์‹  ์ผ๋ จ์˜ run -privileged ๋‹จ๊ณ„ + commit ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” Dockerfile์—์„œ ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋‹จ๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

mknod ์ž‘์—…๊ณผ๋„ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๊ถŒํ•œ ๋ชจ๋“œ๊ฐ€ ํ•„์š”ํ•œ ์ž‘์—…์„ ์ •ํ™•ํžˆ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด
๊ท€ํ•˜์˜ ๊ฒฝ์šฐ ๋งค์šฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค!
๊ฐ์‚ฌ ํ•ด์š”,

์•ˆ๋…•ํ•˜์„ธ์š” @jpetazzo , ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ์—์„œ ์ œ๊ฐ€ ์ง๋ฉดํ•œ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://groups.google.com/forum/#!topic/docker -user/1pFhqlfbqQI

์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋‚ด๊ฐ€ ๋งŒ๋“ ( aufs ๋ฐ ์ €๋„๋ง์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์„ฑ๋œ) mount a fs๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์‹คํ–‰ํ•˜๋Š” ํŠน์ • ๋ช…๋ น์€ mount -o loop=/dev/loop0 /db/disk-image /home/db2inst1 . ์—ฌ๊ธฐ์„œ /db/disk-image ๋Š” dd if=/dev/zero of=disk-image count=409600 ๋˜์—ˆ๊ณ  home/db2inst1 ๋Š” db2๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ–ˆ๋‹ค๋ฉด ์„ค์น˜ ๊ณผ์ •์—์„œ AUFS๊ฐ€ ์•„๋‹Œ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๊ฑฐ๋‚˜ O_DIRECT ๋ฅผ ์ง€์›ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ Docker 0.7์€ AUFS ๋Œ€์‹  ext4(๋ฐ ๋ธ”๋ก ์ˆ˜์ค€ ์Šค๋ƒ…์ƒท)๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ๋„ +1.

๋ฉ”๋ชจ๋ฆฌ ์„ค์ • ๋ฐ ์ปค๋„ ๊ตฌ์„ฑ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ํŒจํ‚ค์ง€(์˜ˆ: Vertica DB, WebSphere MQ) ์„ค์น˜๋Š” ๊ถŒํ•œ ๋ชจ๋“œ์—์„œ๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"๊ถŒํ•œ ์žˆ์Œ"์œผ๋กœ ์‹คํ–‰/๋นŒ๋“œํ•  ๋•Œ ๋ฌธ์ œ๋ฅผ ๋ถ„๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ์ค‘์—๋งŒ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. docker run ๋˜๋Š” ๋‘˜ ๋ชจ๋‘๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ์—๋งŒ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋นŒ๋“œ์—์„œ ๋‹จ๊ณ„(๋˜๋Š” ๊ทธ ์ด์ƒ)์— ๋Œ€ํ•ด ๋” ๋งŽ์€ ๊ถŒํ•œ์ด ํ•„์š”ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์— ์ด๊ฒƒ์ด ํ•„์š”ํ–ˆ๊ณ  Dockerfile์˜ ์ ˆ๋ฐ˜์„ ๋นŒ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๊ถŒํ•œ ์žˆ๋Š” ๋ชจ๋“œ์—์„œ ๊ณ„์† ๋นŒ๋“œํ•˜๋Š” ์…ธ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ–ˆ์œผ๋ฏ€๋กœ "๊ถŒํ•œ ์žˆ๋Š”" ๋นŒ๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ sysctl์„ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ถ€ ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ถŒํ•œ ๋ชจ๋“œ๋กœ ๋๊นŒ์ง€ ๋‚ด๋ ค๊ฐ€์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ด๋ฏธ์ง€ ๊ตฌ์„ฑ์„ ํ†ตํ•ด ๋˜๋Š” docker run ์ „๋‹ฌํ•  ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅธ์ชฝ. @orikremer , Vertica DB์™€ WebSphere MQ๊ฐ€ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

/sys ๋˜๋Š” /proc์— ์žˆ๋Š” ํ•ญ๋ชฉ์ธ ๊ฒฝ์šฐ ๊ฐ€์žฅ ์ข‹์€ ์†”๋ฃจ์…˜์€ ๊ถŒํ•œ ์žˆ๋Š” ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•˜๋Š” ๋Œ€์‹ (๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์œ ์ง€๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—) ๋Œ€์‹  ๊ฑฐ๊ธฐ์— ์ผ๋ถ€ ๋ชจํ˜•์„ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์žฅ๊ธฐ์ ์œผ๋กœ ๋ชจ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์บก์ฒ˜ํ•˜๊ณ  Dockerfile ์ง€์‹œ๋ฌธ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋Ÿฐํƒ€์ž„์— "์ด ์ปจํ…Œ์ด๋„ˆ์—๋Š” ์ด๋Ÿฌํ•œ ์กฐ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ์ง€์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@jpetazzo ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“  ์ง€ ๋ฉฐ์น ์ด ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค. AFAIR Vertica๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ๋‘˜ ๋‹ค ์ตœ๋Œ€ ์—ด๋ฆฐ ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•œ๋‹ค๊ณ  ๋ถˆํ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
Dockerfile์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค๊ณ  ๋‹ค์‹œ ๋ณด๊ณ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ด€๋ จ๋œ ๋ฌธ์ œ #2080์— ์ฃผ๋ชฉํ•˜์‹ญ์‹œ์˜ค.

@jpetazzo๊ฐ€ -privileged ์—†์ด ์ด๋ฏธ์ง€

  • limits.conf์˜ nice: Vertica๋Š” "dbadmin - nice 0"์„ /etc/security/limits.conf์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ์ด ์—†๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰ํ•  ๋•Œ ํ•ด๋‹น ์‚ฌ์šฉ์ž๋กœ ์ „ํ™˜ํ•˜๋ ค๊ณ  ํ•˜๋ฉด "์„ธ์…˜์„ ์—ด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‚ฌ์šฉ์ž ์ „ํ™˜์€ ์˜ค๋ฅ˜ ์—†์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ์ตœ๋Œ€ ์—ด๋ฆฐ ํŒŒ์ผ: ์ปจํ…Œ์ด๋„ˆ์— ํ•„์š”ํ•œ ์ตœ๋Œ€ ๊ฐ’์ด ํ˜ธ์ŠคํŠธ์— ์„ค์ •๋œ ๊ฒƒ๋ณด๋‹ค ๋†’๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธ์ŠคํŠธ์—์„œ /etc/init/docker.conf๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  "limit nofile"์„ ์„ค์ •ํ•œ ๋‹ค์Œ ์ปจํ…Œ์ด๋„ˆ์—์„œ ulimit -n์„ ์„ค์ •ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๊นŒ?

ํ•ด๋‹น ์‚ฌ์šฉ์ž๋กœ ์ „ํ™˜ํ•˜๋ ค๊ณ  ํ•  ๋•Œ

์Šค์œ„์น˜๋Š” ์–ด๋–ป๊ฒŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ? -privileged ๊ฐ€ ์‚ฌ์šฉ์ž ์ „ํ™˜์— ์–ด๋–ป๊ฒŒ ๋„์›€์ด ๋˜๋Š”์ง€ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•„๋งˆ๋„ ์—ฌ๊ธฐ์— ๋ญ”๊ฐ€๋ฅผ ๋†“์น˜๊ณ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค :-)

์ตœ๋Œ€ ์—ด๋ฆฐ ํŒŒ์ผ

๋‚ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•œ๋‹ค๋ฉด ์ˆ˜์ง ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์€ ์—ด๋ฆฐ ํŒŒ์ผ์˜ ์ตœ๋Œ€ ์ˆ˜๋ฅผ ๋งค์šฐ ๋†’์€ ์ˆ˜๋กœ ์„ค์ •ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋ฉฐ Docker๊ฐ€ -privileged ํ”Œ๋ž˜๊ทธ๋กœ ๊ทธ๋ ‡๊ฒŒ ๋†’์€ ์ˆ˜๋กœ ์‹œ์ž‘๋˜๊ฑฐ๋‚˜ _๋˜๋Š”_ ์ž‘๋™ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅธ์ชฝ?

์‚ฌ์šฉ์ž ์ „ํ™˜ - su dbadmin ๋Š” ํ•ด๋‹น ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค:

  • ์ƒˆ ์ด๋ฏธ์ง€(centos-6.4-x86_64)๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ๊ถŒํ•œ์ด ์—†๋Š” ์ƒํƒœ๋กœ ์‹คํ–‰
  • ์‚ฌ์šฉ์ž ์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ ์‚ฌ์šฉ์ž
  • /etc/security/limits.conf ํŽธ์ง‘, "testuser - nice 0" ์ถ”๊ฐ€
  • su testuser ์‹œ๋„ --> "์„ธ์…˜์„ ์—ด ์ˆ˜ ์—†์Œ"๊ณผ ํ•จ๊ป˜ ์‹คํŒจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    -๊ถŒํ•œ์ด ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ๋Š” su testuser ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ตœ๋Œ€ ์—ด๋ฆฐ ํŒŒ์ผ - ๋งž์Šต๋‹ˆ๋‹ค. ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์ด ํ˜ธ์ŠคํŠธ๋ณด๋‹ค ๋†’์€ ์ˆซ์ž๋กœ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์„ค์ •์„ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ -privileged๋ฅผ ์‹œ์ž‘ํ•ด์•ผ๋งŒ ์ด ์ž‘์—…์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ๋‹ค์Œ Dockerfile๋กœ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

FROM ubuntu
RUN useradd testuser
RUN echo testuser - nice 0 > /etc/security/limits.conf
CMD su testuser

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ค‘์ธ ์ด๋ฏธ์ง€์˜ ์ •ํ™•ํ•œ ์ด๋ฆ„์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
( centos-6.4-x86_64 ์‹œ๋„ํ–ˆ๋Š”๋ฐ ๋ชป ๋ฝ‘๋Š” ๊ฒƒ ๊ฐ™์•„์š”!)

@lukewpatterson ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋ฃจํ”„ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@jpetazzo ์ด ๋„์ปค ํŒŒ์ผ ์‹คํ–‰

FROM backjlack/centos-6.4-x86_64
RUN useradd testuser
RUN echo 'testuser - nice 0' >> /etc/security/limits.conf
RUN su testuser
RUN echo 'test' > ~/test.txt

์‹คํŒจ:

ori<strong i="10">@ubuntu</strong>:~/su_test$ sudo docker build .
Uploading context 10240 bytes
Step 1 : FROM backjlack/centos-6.4-x86_64
 ---> b1343935b9e5
Step 2 : RUN useradd testuser
 ---> Running in b41d9aa2be1b
 ---> 2ff05b54e806
Step 3 : RUN echo 'testuser - nice 0' >> /etc/security/limits.conf
 ---> Running in e83291fafc66
 ---> 03b85baf140a
Step 4 : RUN su testuser
 ---> Running in c289f6e5f3f4
could not open session
Error build: The command [/bin/sh -c su testuser] returned a non-zero code: 1
The command [/bin/sh -c su testuser] returned a non-zero code: 1
ori<strong i="11">@ubuntu</strong>:~/su_test$

I๋Š” (์ถ”๊ฐ€ํ•˜์—ฌ PAM ๋ชจ๋“ˆ ๋””๋ฒ„๊น… ์˜จ debug ๋ฐ›๋Š” pam_limits.so ๋ผ์ธ /etc/pam.d/system-auth ์„ค์น˜) syslog ํ•˜๋ ค๊ณ  su ๋‹ค์‹œ, /var/log/secure ์—์„œ ์ฐพ์€ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Oct 7 14:12:23 8be1e7bc5590 su: pam_limits(su:session): '/etc/security/limits.conf'์—์„œ ์„ค์ • ์ฝ๊ธฐ
Oct 7 14:12:23 8be1e7bc5590 su: pam_limits(su:session): process_limit: ์ฒ˜๋ฆฌ ์ค‘ - ์‚ฌ์šฉ์ž์—๊ฒŒ ์ข‹์€ 0
Oct 7 14:12:23 8be1e7bc5590 su: pam_limits(su:session): '/etc/security/limits.d/90-nproc.conf'์—์„œ ์„ค์ • ์ฝ๊ธฐ
Oct 7 14:12:23 8be1e7bc5590 su: pam_limits(su:session): process_limit: DEFAULT์— ๋Œ€ํ•œ soft nproc 1024 ์ฒ˜๋ฆฌ ์ค‘
Oct 7 14:12:23 8be1e7bc5590 su: pam_limits(su:session): 'nice'์— ๋Œ€ํ•œ ์ œํ•œ์„ ์„ค์ •ํ•  ์ˆ˜ ์—†์Œ: ์ž‘์—…์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์Œ

๊ทธ๋Ÿฐ ๋‹ค์Œ strace su ํ”„๋กœ์„ธ์Šค๋ฅผ

setrlimit(RLIMIT_NICE, {rlim_cur=20, rlim_max=20}) = -1 EPERM (Operation not permitted)

์ด๊ฒƒ์€ ์ฐจ๋ก€๋กœ pam_limits ๋ชจ๋“ˆ์ด ์‹คํŒจ๋ฅผ ๋ณด๊ณ ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ su ๊ฐ€ ๊ณ„์†๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
ํฅ๋ฏธ๋กญ๊ฒŒ๋„ Ubuntu์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ su ์— ๋Œ€ํ•ด pam_limits ๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ™œ์„ฑํ™”ํ•˜๋”๋ผ๋„ setrlimit ํ˜ธ์ถœ์€ ์‹คํŒจํ•˜์ง€๋งŒ su ๋Š” ๊ณ„์†๋˜๊ณ  ์–ด์จŒ๋“  ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๊ฐ์‚ฌ ์ฝ”๋“œ์™€ ๊ด€๋ จ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด์ œ setrlimit ์‹คํŒจํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ปจํ…Œ์ด๋„ˆ์— sys_resource ๊ธฐ๋Šฅ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์ œํ•œ์„ ๋†’์ด๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ limits.conf ์ง€์‹œ๋ฌธ์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
(๊ทธ๋Ÿฐ๋ฐ limits.conf ์ง์ ‘ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. limits.d ์˜ ๋ณ„๋„ ํŒŒ์ผ๋กœ ์ด๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

์ฐธ๊ณ : Docker์˜ ์—ด๋ฆฐ ํŒŒ์ผ ์ˆ˜ ์ œํ•œ์„ ์ด๋ฏธ ๋Š˜๋ ธ์œผ๋ฏ€๋กœ ์ตœ๋Œ€ ์šฐ์„  ์ˆœ์œ„ ์ œํ•œ๋„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋„ ์ž‘๋™ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค!

์ด๊ฒŒ ๋„์›€์ด ๋˜๊ธธ ๋ฐ”๋ž€๋‹ค.

ํ•ด๋‹น Dockerfile์—๋Š” ๋‹ค์Œ ์ค„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

RUN su testuser

์ด๊ฒƒ๊ณผ ํ•จ๊ป˜ ๊ฐˆ ๋ช…๋ น์ด ์—†์Šต๋‹ˆ๋‹ค (๊ทธ๋ฆฌ๊ณ  ํ›„์† RUN ๋ช…๋ น์— ๊ฒฐ๊ณผ ์‰˜์„ ์ ์šฉํ•˜์ง€ ์•Š์Œ). ๋”ฐ๋ผ์„œ ์‰˜์„ ์—ด๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๋ฐ ์‹ค์ œ๋กœ ์‹คํŒจํ•˜๊ณ  ๊ทธ๋ ‡๊ฒŒํ•˜๋Š” ๊ฒƒ์ด ์˜๋ฏธ๊ฐ€์žˆ๋Š” ๋Œ€ํ™” ํ˜•์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋†€๋ผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ( docker build ๋Š” ๋Œ€ํ™”์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์—). ์ง€๊ธˆ์€ ํ™•์ธํ•  ์‹œ๊ฐ„์ด ์—†์ง€๋งŒ su ์— ์ „๋‹ฌ๋˜๋Š” ์‹ค์ œ ๋ช…๋ น์œผ๋กœ ์‹œ๋„ํ•ด ๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@jpetazzo ์ž์„ธํ•œ ์„ค๋ช… ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Docker์˜ ์ตœ๋Œ€ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋†’์ด๊ณ  ๋„์›€์ด๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

(๊ทธ๋Ÿฐ๋ฐ limits.conf์— ์ง์ ‘ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. limits.d์— ์žˆ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.)

๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฒƒ์ด Vertica ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์ด๋ฏ€๋กœ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

@tianon ๋Œ€ํ™”ํ˜• ์…ธ(/bin/bash)์—์„œ ์‹คํ–‰ํ•ด๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์‹œ๋„ํ•ด ๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Dockerfile์—์„œ ๊ทธ๋‹ค์ง€ ์˜๋ฏธ๊ฐ€ ์—†๋Š” ์ค„์— ๋Œ€ํ•œ ์š”์ ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ๋” ์›ํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(ํ•œ๊ณ„ ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•œ ํ›„).

RUN su testuser -c 'echo test > ~/test.txt'

@tianon ๋„ค ๋ง์ด ๋งž์•„, ๋ณ„๋กœ ๋ง์ด ์•ˆ ๋ผ. ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ su ์ž์ฒด๊ฐ€ ์‹คํŒจํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์›๋ž˜ ๋…ผ์˜๋กœ ๋Œ์•„๊ฐ€๋ ค๋ฉด: ๋ณด์•ˆ ๊ด€์ ์—์„œ (๊ทธ๋ฆฌ๊ณ  ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค!) ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ setfcap ๋ฐ mknod ๊ธฐ๋Šฅ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์—์„œ). ์ž˜). ๋ˆ„๊ตฌ๋“ ์ง€ ๊ทธ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜์žˆ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@jpetazzo ์ •๋ฐ˜๋Œ€! ๊ทธ๊ฒƒ์€ ๋‚ด๊ฐ€ ๊ฒช๊ณ  ์žˆ๋Š” ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ๊ธฐ๊ณ„์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๊ฑฐ๋‚˜ ๋ณด์ด๋Š” Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ด๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ข‹์•„์š”! ๊ดœ์ฐฎ์œผ์‹œ๋‹ค๋ฉด #2191, "๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์—์„œ mknod ๋ฐ setfcap ๊ธฐ๋Šฅ ํ™œ์„ฑํ™”"๋ฅผ ์œ„ํ•ด ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค :-)

์šฐ๋ฆฌ๋Š” ๊ทธ๋Ÿฌํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

2013๋…„ 10์›” 13์ผ ์ผ์š”์ผ ์˜คํ›„ 12์‹œ 22๋ถ„์— unclejack [email protected]์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

2191 https://github.com/dotcloud/docker/issues/2191 ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

docker ๋นŒ๋“œ ๊ถŒํ•œ์ด ํ•„์š”ํ•œ ๋ชจ๋“  ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/dotcloud/docker/issues/1916#issuecomment -26224788์—์„œ ํ™•์ธํ•˜์„ธ์š”.
.

@jpetazzo https://twitter.com/jpetazzo
์ตœ์‹  ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ:
http://jpetazzo.github.io/2013/10/06/policy-rc-d-do-not-start-services-automatically/

@jpetazzo Dockerfile์„ ์‚ฌ์šฉํ•˜์—ฌ ์šด์˜ ์ฒด์ œ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜์ •ํ•˜๋‹ค๊ฐ€ ์‹ค์ˆ˜๋กœ ๋Œ“๊ธ€์„ ์ง€์› ์Šต๋‹ˆ๋‹ค.

Dockerfile์—์„œ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.

from ubuntu:12.04
run apt-get update
[... a few more run commands]
add build.sh /root/build.sh

๋นŒ๋“œ.sh

docker build -t mybuild .
docker run -i -t -privileged -cidfile mybuild.cid mybuild /root/build.sh
buildcid=`cat mybuild.cid`
rm mybuild.cid
docker commit $buildcid mybuild-final

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ Dockerfile ๋˜๋Š” docker build -privileged ์— runp ๊ฐ€ ์—†๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋„๋ก ๊ฐ•์ œํ•˜๋ฏ€๋กœ Dockerfile์„ ์“ธ๋ชจ์—†๊ฒŒ ๋งŒ๋“ค๊ณ  Dockerfile๊ณผ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ๋ณต์ œํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ Dockerfile์€ runp ๋˜๋Š” docker build -privileged ์™€ ํ•จ๊ป˜ ํ›จ์”ฌ ๋” ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
์‹คํ–‰ ์˜ˆ:

from ubuntu:12.04
run apt-get update
[... a few more run commands]
add build.sh /root/build.sh
runp /root/build.sh

docker build -privileged ์˜ˆ:

from ubuntu:12.04
run apt-get update
[... a few more run commands]
add build.sh /root/build.sh
run /root/build.sh

@unclejack : ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ œ ์งˆ๋ฌธ์ด ์ •ํ™•ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค!
๋‚ด๊ฐ€ ์˜๋ฏธํ•œ ๊ฒƒ์€ "์ •ํ™•ํžˆ (mknod ๋ฐ setfcap ์œ„์—) ์–ด๋–ค ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?"์˜€์Šต๋‹ˆ๋‹ค.

@jpetazzo ๋งํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด ์–ด๋–ป๊ฒŒ๋“  ๊ฐ์‚ฌํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฃจํ”„๋ฐฑ ๋งˆ์šดํŠธ ๋ธ”๋ก ์žฅ์น˜ ๋ฐ ๊ธฐํƒ€ ๋ช‡ ๊ฐ€์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋งˆ์šดํŠธ.

์ด๋ฏธ์ง€ ๋นŒ๋“œ์™€ ๊ด€๋ จํ•˜์—ฌ ์ตœ์†Œํ•œ ์„ธ ๊ฐ€์ง€ ๊ฐœ๋ณ„ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. docker build ๋™์•ˆ ํ•„์š”ํ•œ ๊ถŒํ•œ, ๋„์ปค๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ํ•„์š”ํ•œ ๊ถŒํ•œ ๋ฐ ๋นŒ๋“œ, ์‹คํ–‰ ๋˜๋Š” ๋‘˜ ๋‹ค(์˜ˆ: sysctls ๋ฐ ๊ธฐํƒ€) ๋™์•ˆ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๋Ÿฐํƒ€์ž„ ์š”๊ตฌ ์‚ฌํ•ญ .

docker build -privileged (๋˜๋Š” ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๋ช…๋ น์— ๋Œ€ํ•ด์„œ๋งŒ -privileged ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด runp )๊ฐ€ ์œ ์šฉํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•„, ๋งˆ์šดํŠธ๋Š” ํ™•์‹คํžˆ ํฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋งค์šฐ ์œ ํšจํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์ด๋ฉฐ ์šฐ๋ฆฌ๋Š” _์•„๋งˆ๋„_ ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ์— ์ด๋ฅผ ํ—ˆ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด๊ฒ ์Šต๋‹ˆ๋‹ค.

@jpetazzo RE: PAM ๋ชจ๋“ˆ(Vertica๋„ ์„ค์น˜ ์ค‘์ž…๋‹ˆ๋‹ค) lxc.cap.drop์—์„œ sys_resource๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„ docker๋ฅผ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•˜๋„๋ก ์ œ์•ˆํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ด๋Ÿฌํ•œ ์ œํ•œ ์ค‘ ์ผ๋ถ€๋Š” docker.conf ํŒŒ์ผ์„ ํ†ตํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Docker ์ž์ฒด๊ฐ€ ์ œํ•œ๋œ ๊ธฐ๋Šฅ ์ง‘ํ•ฉ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ Docker๊ฐ€ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์— ์œ„์ž„ํ•˜๋Š” ๋ฐ ์ด๋Ÿฌํ•œ ๊ถŒํ•œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ค‘์ฒฉ๋œ Docker ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ #2080 ํ† ์ง€๋ฅผ ๋ฐœํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ํŠนํžˆ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ถŒํ•œ์ด ์—†๋Š” ์ค‘์ฒฉ๋œ Docker๋ฅผ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ 'runp' ๋˜๋Š” '-priviledged'์™€ ๊ฐ™์€ ์†”๋ฃจ์…˜์ด ๋ชจ๋“  Docker ํ™˜๊ฒฝ์—์„œ ์„ฑ๊ณต์„ ๋ณด์žฅํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ์•„๋ฌด ๊ฒƒ๋„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ๋ช…๋ น์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ฌธ์„œํ™”ํ•  ๋•Œ ์ด๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@ramarnat @jpetazzo Vertica ์„ค์น˜ ๋ฐ ์ข‹์€ ์ˆ˜์ค€ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ฃจํ”„๋ฅผ ๋‹ซ์œผ๋ ค๋ฉด,
docker.conf์—์„œ ๋ฉ‹์ง„ ์ œํ•œ์„ ์„ค์ •ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์•„ bash ๊ถŒํ•œ์„ ์‹คํ–‰ํ•˜๊ณ  ์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

@orikremer @jpetazzo lxc_template.go์—์„œ sys_resource๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  docker๋ฅผ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•˜์—ฌ ์„ค์น˜๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๊ณต๊ฐœํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ lxc ์„ค์ •์—์„œ ์ด๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ๋ณด์•ˆ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์˜๊ฒฌ์„ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

@ramarnat : ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋”ฐ๋ผ ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ sys_resource๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๋ฌธ์ œ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์ œํ•œ์„ ๋” ๋†’์€ ๊ฒƒ์œผ๋กœ ๋Š˜๋ฆด ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค(ํŒŒ์ผ ์„ค๋ช…์ž๋Š” Elastic Search์—์„œ๋„ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค). ์ด๊ฒƒ์€ "์ตœ์†Œํ•œ Docker ๋Ÿฐํƒ€์ž„์ด 1,000,000๊ฐœ์˜ ํŒŒ์ผ ์„ค๋ช…์ž๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค"๊ณ  ์ฃผ์žฅํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. Docker๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ์ œํ•œ์„ ์˜ฌ๋ฆด ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๋ฅผ ๋ฐœํ–‰ํ•˜๊ณ  ๊ณ„์† ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค(๋ฉ”๋ชจ๋ฆฌ/์Šค์™‘ ์ปจํŠธ๋กค๋Ÿฌ ๊ทธ๋ฃน์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ).

์ด๊ฒƒ์€ ๋งˆ์šดํŠธ/๋ฃจํ”„ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š์ง€๋งŒ(์ €๋Š” ์—ฌ์ „ํžˆ ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์ž ์„ ์ž๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค).

@jpetazzo๋Š” lxc_template.go ์˜ ํ•˜๋“œ ์ฝ”๋”ฉ๋œ ๊ฐ’์„ ์žฌ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -lxc_conf ๋ช…๋ น์ค„์ด ์žˆ๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค์—๋Š” ์ด๋ฏธ ๋ฌด์–ธ๊ฐ€๊ฐ€ ์žˆ์ง€๋งŒ ์ด๋Ÿฌํ•œ lxc config ์ง€์‹œ์ž์˜ .drop ํŠน์„ฑ์—๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค!

๊ธ€์Ž„์š”, ๊ทธ๊ฒƒ์€ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆํ™” ์‹œ์Šคํ…œ ๊ฐ„์— ๋ฏธ๋ž˜์˜ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค :-) ๋” ๋‚˜์€ ๊ฒƒ์„ ์ฐพ์„ ์ˆ˜ ์—†๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋น„ํŠน๊ถŒ ๋ชจ๋“œ์—์„œ /dev/loop*๋ฅผ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฌธ์ œ๋Š” ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฃจํ”„ ๋งˆ์šดํŠธ ํŒŒ์ผ ๋˜๋Š” ํ˜ธ์ŠคํŠธ์˜ ํŒŒ์ผ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@solomonstre
@๋„์ปค

2013๋…„ 10์›” 17์ผ ๋ชฉ์š”์ผ ์˜คํ›„ 6:09 Jรฉrรดme Petazzoni
[email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๊ธ€์Ž„์š”, ๊ทธ๊ฒƒ์€ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆํ™” ์‹œ์Šคํ…œ ๊ฐ„์— ๋ฏธ๋ž˜์˜ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค :-) ๋” ๋‚˜์€ ๊ฒƒ์„ ์ฐพ์„ ์ˆ˜ ์—†๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/dotcloud/docker/issues/1916#issuecomment -26565782

@jpetazzo ๊ทธ๊ฑด ์‚ฌ์‹ค์ด์ง€๋งŒ ํ—ˆ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ

@solomonstre ์š”์ ์€ docker build ๊ฐ€ ํŠน๊ถŒ ๋ชจ๋“œ์—์„œ ๋นŒ๋“œ๋˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. /dev/loop*์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•ด๋„ ๋‚ด ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€์—๋Š” ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@solomonstre : /dev/loop์„ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ IMHO, ํฐ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. DM ๋ถ„๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(DM ๋ถ„๊ธฐ์˜ ๊ธฐ๋ณธ ๋™์ž‘์€ ๋ฃจํ”„ ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค) ์ˆ˜์˜์žฅ).

์ผ๋ถ€ ๋นŒ๋“œ์—๋Š” ๋ฃจํ”„ ์žฅ์น˜, ๋งˆ์šดํŠธ ๋ฐ ๊ธฐํƒ€ ์‚ฌํ•ญ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์˜ต์…˜์„ ๊ฒ€ํ† ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. docker build -privileged
    ํŽธ๋ฆฌํ•˜์ง€๋งŒ "์ผ๋ฐ˜ ๋นŒ๋“œ"์™€ "ํŠน๊ถŒ ๋นŒ๋“œ" ์‚ฌ์ด์˜ ๊ฒฝ๊ณ„๋ฅผ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. ๊ถŒํ•œ ์žˆ๋Š” ๋นŒ๋”๊ฐ€ ํ•„์š”ํ•œ ๋งค์šฐ ์œ ์šฉํ•œ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ณต๊ฐœ ๋นŒ๋”์—์„œ ๋นŒ๋“œํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋นŒ๋“œ๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ๊ถŒํ•œ ์žˆ๋Š” ๋นŒ๋“œ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋˜๋Š” ์ถ”๊ฐ€ ๋ณดํ˜ธ ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ).
  2. ๋นŒ๋”์—์„œ ์•ฝ๊ฐ„์˜ ๊ถŒํ•œ ์™„ํ™”
    ์ด๊ฒƒ์€ (์ ์–ด๋„) cap_sysadmin์„ ํ™œ์„ฑํ™”ํ•˜๊ณ (์ด๋Š” ํŽธ์ง‘์ฆ์„ ์•ฝ๊ฐ„ ๋–จ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค), ๊ฐ ๋นŒ๋”์—๊ฒŒ ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ ๋ฃจํ”„ ์žฅ์น˜๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋˜๋Š” ๋นŒ๋”์˜ ์ด ์ˆ˜๊ฐ€ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋นŒ๋“œ๋Š” ๋น ๋ฅด๊ณ  ๋” ์ค‘์š”ํ•˜๊ฒŒ๋Š” ํ™œ์„ฑ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํฐ ๋ฌธ์ œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. IE์—์„œ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ ์ค‘์ธ ๋นŒ๋“œ๊ฐ€ 50๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ, kickass I/O ํ•˜์œ„ ์‹œ์Šคํ…œ์ด ์žˆ๋Š” ์‹œ์Šคํ…œ์ด ์—†์œผ๋ฉด ํ•ด๋‹น ๋นŒ๋“œ๊ฐ€ ๋งŽ์ด ์ง„ํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  3. ๋‹ค๋ฅธ ๊ฐ€์ƒํ™”/๊ฒฉ๋ฆฌ ๊ณ„์ธต ๋‚ด์—์„œ ๋นŒ๋“œ๋ฅผ ๋ž˜ํ•‘ํ•ฉ๋‹ˆ๋‹ค.
    Docker ๋‚ด์—์„œ ์ง์ ‘ ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋Œ€์‹  QEMU-in -Docker ๋˜๋Š” UML-in-Docker์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ์ถ”๊ฐ€ ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Docker ๊ฐœ๋ฐœ์ž ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ๋ฉ‹์ง„ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋˜ ๋‹ค๋ฅธ ๋ณต์žก์„ฑ ๊ณ„์ธต์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— DOcker ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ์ข‹์ง€ ์•Š์€ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

์˜ฌ๋ฐ”๋ฅธ ์†”๋ฃจ์…˜์ด docker build -privileged`๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์‹œ์— ์˜ต์…˜ 3์„ ํˆฌ๋ช…ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ํ›„ํฌ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ๋งž๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ "๋„์ปค ๋นŒ๋“œ ๊ณต๊ธ‰์ž"๋ผ๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ถŒํ•œ ์žˆ๋Š” ๋นŒ๋“œ๋ฅผ ์š”์ฒญํ•˜๋ฉด ์ƒŒ๋“œ๋ฐ•์Šค ํ™˜๊ฒฝ ๋‚ด์—์„œ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ์‚ฝ์ž…ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”?

@backjlack , ์ผ๋‹จ ๊ตฌ์ถ•๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์—ฌ์ญค๋ด๋„ ๋ ๊นŒ์š”? ๋ญ
์ •ํ™•ํžˆ "๋„์ปค ์‹คํ–‰"ํ•˜๋ฉด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‹จ์ง€
์ด์— ๋Œ€ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ดํ•ดํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

2013๋…„ 10์›” 18์ผ ๊ธˆ์š”์ผ ์˜ค์ „ 9์‹œ 59๋ถ„, Jรฉrรดme Petazzoni
์•Œ๋ฆผ@github.com์ž‘์„ฑ :

@solomonstre https://github.com/solomonstre : /dev/loop์„ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€,
IMHO๋Š” DM ๋ถ„๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ๊ธฐ/์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ˆ๋Œ€ ๊ธˆ๋ฌผ์ž…๋‹ˆ๋‹ค.
๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค(DM ๋ถ„๊ธฐ์˜ ๊ธฐ๋ณธ ๋™์ž‘์€
ํ’€์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฃจํ”„ ์žฅ์น˜).

์ผ๋ถ€ ๋นŒ๋“œ์—๋Š” ๋ฃจํ”„ ์žฅ์น˜, ๋งˆ์šดํŠธ ๋ฐ ๊ธฐํƒ€
๊ฒƒ๋“ค. ์˜ต์…˜์„ ๊ฒ€ํ† ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. docker build -privileged ํŽธ๋ฆฌํ•˜์ง€๋งŒ ๋‹ค์Œ ์‚ฌ์ด์— ์„ ์„ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค.
    "์ผ๋ฐ˜ ๋นŒ๋“œ" ๋ฐ "ํŠน๊ถŒ ๋นŒ๋“œ". ๋งŒ์•ฝ ๋‹น์‹ ์ด ๋งค์šฐ
    ๊ถŒํ•œ ์žˆ๋Š” ๋นŒ๋”๊ฐ€ ํ•„์š”ํ•œ ์œ ์šฉํ•œ ์ด๋ฏธ์ง€,
    ๊ณต๊ณต ๊ฑด์ถ•์—…์ž์— ๊ทธ๊ฒƒ์„ ๊ตฌ์ถ•ํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ž๋™ํ™” ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ
    ๋นŒ๋“œ, ๊ทธ๋“ค์€ ์•„๋งˆ๋„ ํŠน๊ถŒ ๋นŒ๋“œ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค (๋˜๋Š” ๊ทธ๋“ค์€
    ์ถ”๊ฐ€ ๋ณดํ˜ธ ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด).
  2. ๋นŒ๋”์—์„œ ์•ฝ๊ฐ„์˜ ๊ถŒํ•œ ์™„ํ™” ์ด๊ฒƒ์€ (์ ์–ด๋„)
    cap_sysadmin ํ™œ์„ฑํ™”(์ด๊ฒƒ์€ ํŽธ์ง‘์ฆ์„ ์•ฝ๊ฐ„ ๋–จ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค), ๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„
    ๊ฐ ๋นŒ๋”์—๊ฒŒ ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ ๋ฃจํ”„ ์žฅ์น˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ด๊ณ„๋ฅผ ์ œํ•œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค
    ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋˜๋Š” ๋นŒ๋”์˜ ์ˆ˜ ํ•˜์ง€๋งŒ ์ดํ›„๋กœ ํฐ ๋ฌธ์ œ๋Š” ์•„๋‹ˆ๋‹ค
    ๋นŒ๋“œ๋Š” ๋น ๋ฅด๊ณ  ๋” ์ค‘์š”ํ•˜๊ฒŒ๋Š” ํ™œ์„ฑ ํ”„๋กœ์„ธ์Šค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    ๊ธฐ๊ณ„๊ฐ€ ์—†๋Š” ํ•œ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ ์ค‘์ธ ๋นŒ๋“œ๊ฐ€ 50๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ IE
    kickass I/O ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ๋นŒ๋“œ๊ฐ€ ๋งŽ์ด ์ง„ํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  3. ๋‹ค๋ฅธ ๊ฐ€์ƒํ™”/๊ฒฉ๋ฆฌ ๊ณ„์ธต ๋‚ด์—์„œ ๋นŒ๋“œ๋ฅผ ๋ž˜ํ•‘ํ•ฉ๋‹ˆ๋‹ค.
    Docker ๋‚ด์—์„œ ์ง์ ‘ ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋Œ€์‹  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.
    QEMU-in -Docker ๋˜๋Š” UML-in-Docker. ์ด๊ฒƒ์€ Docker์˜ ๋ฉ‹์ง„ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.
    ์ถ”๊ฐ€ ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž ๊ด€์ ; ์ด๊ฒƒ์€ ๊ฐ€๋‚œํ•œ ์‚ฌ๋žŒ์ด๋‹ค
    DOcker ์‚ฌ์šฉ์ž ๊ด€์ ์˜ ์†”๋ฃจ์…˜
    ๋ณต์žก์„ฑ์˜ ๋˜ ๋‹ค๋ฅธ ๊ณ„์ธต.

docker build-privileged`๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ์†”๋ฃจ์…˜์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
๋™์‹œ์— ํˆฌ๋ช…ํ•˜๊ฒŒ ํ—ˆ์šฉํ•˜๋Š” ํ›„ํฌ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค.
์˜ต์…˜ 3์˜ ๊ตฌํ˜„. ๋‚ด๊ฐ€ "๋„์ปค ๋นŒ๋“œ ๊ณต๊ธ‰์ž"๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
๋ˆ„๊ตฐ๊ฐ€ ๊ถŒํ•œ์ด ์žˆ๋Š” ๋นŒ๋“œ๋ฅผ ์š”์ฒญํ•˜๋ฉด ์‚ฝ์ž…ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
์ƒŒ๋“œ๋ฐ•์Šค ๋‚ด์—์„œ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ์–ด๋”˜๊ฐ€
ํ™˜๊ฒฝ(QEMU ๋ฐ UML์€ ๋ช…๋ฐฑํ•œ ํ›„๋ณด์ด์ง€๋งŒ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์€ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋„; ๊ทธ๊ฒƒ๋“ค์€ ๋‹จ์ง€ ํŽธ๋ฆฌํ•œ ์˜ˆ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค).

์—ฌ๋Ÿฌ๋ถ„์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”?

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/dotcloud/docker/issues/1916#issuecomment -26612009์—์„œ ํ™•์ธํ•˜์„ธ์š”.
.

+1 - ํ“จ์ฆˆ๋ฅผ ์„ค์น˜ํ•˜๋Š” mknode ๊ธฐ๋Šฅ(S3 ๋ฒ„ํ‚ท ํƒ‘์žฌ์šฉ) ๋˜๋Š” Dockerfiles์—์„œ ๊ถŒํ•œ ์žˆ๋Š” ์‹คํ–‰์„ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ตœ๊ณ ์˜ ์†”๋ฃจ์…˜์ด ๋ฌด์—‡์ธ์ง€ ์•„์ง ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

+1. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

+1
2013๋…„ 11์›” 17์ผ ์˜คํ›„ 11์‹œ 31๋ถ„์— "yukw777" [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

+1. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/dotcloud/docker/issues/1916#issuecomment -28676216์—์„œ ํ™•์ธํ•˜์„ธ์š”.
.

๋˜ํ•œ Java๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ํ“จ์ฆˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ ์†”๋ฃจ์…˜์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. https://gist.github.com/henrik-muehe/6155333์—์„œ ์ œ์•ˆํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ Raspberry Pi์˜ ๋„์ปค์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@jpetazzo : -privileged ํ”Œ๋ž˜๊ทธ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋™์‹œ์— ์žฅ๊ธฐ์ ์ธ ์†”๋ฃจ์…˜์„ ๋ชจ์ƒ‰ํ•˜๋Š” ์ „๋ฐ˜์ ์ธ ์ „๋žต์ด ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ๋กœ์„œ๋Š” ์ด ์Šค๋ ˆ๋“œ์˜ ์•ž๋ถ€๋ถ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ "RUNP" ๋ช…๋ น์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

(์‚ฌ๋žŒ๋“ค์ด ์—ฌ๊ธฐ์—์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ "๊ต์ฐจ ๊ฒŒ์‹œ"ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.)

์‹ค์ œ๋กœ ์žฅ์น˜ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ(ํ•˜์ง€๋งŒ fuse ํŒจํ‚ค์ง€์˜ ๊ฒฝ์šฐ์™€ ๊ฐ™์ด post-inst ์Šคํฌ๋ฆฝํŠธ์˜ ์ผ๋ถ€์ผ ๋ฟ์ž…๋‹ˆ๋‹ค) ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

fakeroot apt-get ...

๋˜๋Š”:

dpkg-divert --local --rename --add /sbin/mknod && ln -s /bin/true /sbin/mknod`

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ข‹์€ ์˜๋„๋ผ๊ณ  ํ™•์‹ ํ•˜์ง€๋งŒ ์ฒซ ๋ฒˆ์งธ ์˜๊ฒฌ/๋‚ด ๋ณด๊ณ ์„œ์—๋Š” ์ด๋ฏธ ๋‘ ๊ฐ€์ง€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ณตํ‰ํ•˜๊ฒŒ, ๋‹น์‹ ์€ ๋ชฉ๋ก์— ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ ๋ฌธ์ œ๋Š” 'ํ“จ์ฆˆ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค'๊ฐ€ ์•„๋‹ˆ๋ฉฐ ์ฒซ ๋ฒˆ์งธ ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ๋Š” ๊ฒƒ์€ ๋ฌด์Šจ ์ผ์ด ์žˆ์–ด๋„ ํŒจํ‚ค์ง€๋งŒ ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ง„์งœ ๋ฌธ์ œ๋Š” 'mknod๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค'(๋˜๋Š” ๋” ์ผ๋ฐ˜์ ์œผ๋กœ: ์ง€๊ธˆ๊นŒ์ง€ ์‹คํŒจํ•œ ๊ถŒํ•œ ์žˆ๋Š” ์ž‘์—…์ด ํ•„์š”ํ•จ)์ž…๋‹ˆ๋‹ค.

@jpetazzo ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ฃ ? https://lwn.net/Articles/564977/ - ๊ทธ๋•Œ๊นŒ์ง€๋Š” ์žฅ์น˜ ์•ก์„ธ์Šค๋ฅผ ๊ฒฉ๋ฆฌํ•˜๋Š” ๊ฒƒ์ด _๋˜ ๋‹ค๋ฅธ ๋ณต์žก์„ฑ ๊ณ„์ธต์ด๊ณ  ์–ด๋”˜๊ฐ€์—์„œ ๊ด€๋ฆฌ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 3)์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋ฃจํ”„ ๋งˆ์šดํŒ…์ด๋‚˜ ํ“จ์ฆˆ๊ฐ€ ํ•„์ˆ˜ ๊ธฐ๋Šฅ์ด๋ผ๋Š” ๊ฒƒ๋„ ํŒ”์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์— ์žˆ๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๋งˆ์šดํŠธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ ๊ณต๊ฐ„์— ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์— ๋ฃจํŠธ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์€ ๋ฏธ์นœ ์ง“์ž…๋‹ˆ๋‹ค.

ํŒŒ์ผ ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€๋‚˜ fuse fs๋ฅผ ๋งˆ์šดํŠธํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ปจํ…Œ์ด๋„ˆ ์™ธ๋ถ€์— ๋งˆ์šดํŠธํ•˜๊ณ  ๋ณผ๋ฅจ/๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. docker ์ž์ฒด์—์„œ ์›๊ฒฉ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ง€์›ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ๊ธฐ๋Šฅ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ. ์•„๋งˆ๋„ dockerfile MOUNT/๋งˆ์šดํŠธ ํฌ์ธํŠธ.

@discordianfish 3)์€ ๊ฑฐ์˜ ์†”๋ฃจ์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค.

#2979๊ฐ€ ์ด ๋ฌธ์ œ์— ๋„์›€์ด ๋ ๊นŒ์š”?

๋‚˜๋„ ์ด๊ฒƒ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์ง€๋งŒ mknod ๋•Œ๋ฌธ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” /etc/security/limits.d/๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ œํ•œ์„ ์„ค์ •ํ•˜๋Š” rpm์œผ๋กœ centos ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํ˜„์žฌ ๋‹ค์Œ์œผ๋กœ ๊ตฌ์„ฑ๋œ sledgehammer ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

RUN /bin/sed --in-place -e "s/^\s\?session.*pam_limits.so.*/\#\0/g" /etc/pam.d/*

๋‚ด Dockerfile์˜ ๋งจ ์œ„์— ์žˆ์Šต๋‹ˆ๋‹ค. (์ €ํฌ๋Š” ํ”„๋กœํ† ํƒ€์ดํ•‘ ์ค‘์ด๋‹ˆ ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š” :) )

์•ˆ๋…•ํ•˜์„ธ์š” @jpetazzo ๊ท€ํ•˜๊ฐ€ ์ œ์•ˆํ•œ ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์„ ๋ชจ๋‘ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ "oracle_xe" ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

sudo docker build-privileged -t oracle_xe ๋‚ด Dockerfile์—์„œ ์ด 2๊ฐœ์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

RUN ๋งˆ์šดํŠธ -o ๋‹ค์‹œ ๋งˆ์šดํŠธ, ํฌ๊ธฐ=3G /dev/shm
์‹คํ–‰ ๋งˆ์šดํŠธ -a

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•œ ๊ตฌ๋ฌธ์ด ์ž˜๋ชป๋œ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์–ป๋Š” ์˜ค๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ œ๊ณต๋˜์—ˆ์ง€๋งŒ ์ •์˜๋˜์ง€ ์•Š์Œ: -privileged

๋‚˜๋Š” ๋˜ํ•œ RUNP๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๋ฒˆ์งธ ์„ ํƒ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ํ•ด๋‹น ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.

์•Œ ์ˆ˜ ์—†๋Š” ๋ช…๋ น ์‹คํ–‰์„ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋นŒ๋“œํ•˜๋ ค๋Š” Dockerfile์„ ๋ณด๋‚ด๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋„๋ก ๋„์™€์ฃผ์„ธ์š”.

๊ฐ์‚ฌ ํ•ด์š”.

๋‚˜๋Š” RUNP๋‚˜ "build --privileged"๊ฐ€ ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๊ฐ€๋Šฅํ•˜๋ฉด ์ฃผ์ €ํ•˜์ง€ ๋ง๊ณ  Dockerfile์„ ๊ณต์œ ํ•˜์‹ญ์‹œ์˜ค. ์œ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ
"๊ฐ€์žฅ ๋œ ๋‚˜์œ" ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :-)

2014๋…„ 4์›” 9์ผ ์ˆ˜์š”์ผ ์˜ค์ „ 7์‹œ 44๋ถ„์— Manoj7 [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” jpetazzo ๊ท€ํ•˜๊ฐ€ ์ œ์•ˆํ•œ ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์„ ๋ชจ๋‘ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์ถ•ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค
์ด๋ฏธ์ง€ "oracle_xe"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ

sudo docker build - ๋‚ด Dockerfile์— ์žˆ๋Š” ๊ถŒํ•œ ์žˆ๋Š” -t oracle_xe
์ด 2๊ฐœ์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค

RUN ๋งˆ์šดํŠธ -o ๋‹ค์‹œ ๋งˆ์šดํŠธ, ํฌ๊ธฐ=3G /dev/shm
์‹คํ–‰ ๋งˆ์šดํŠธ -a

ํ•˜์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ๊ตฌ๋ฌธ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
์ž˜๋ชป๋œ. ๋‚˜๋Š” ๋˜ํ•œ RUNP๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๋ฒˆ์งธ ์„ ํƒ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๊ทธ๊ฒƒ๋„ ๋˜์ง€ ์•Š์•˜๋‹ค
์ž‘์—…, ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ๋•Œ ํ•ด๋‹น ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.
์•Œ ์ˆ˜ ์—†๋Š” ๋ช…๋ น ์‹คํ–‰์„ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์—๊ฒŒ ๋‚ด๊ฐ€ ์ธ Dockerfile์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
๊ตฌ์ถ•ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋„๋ก ๋„์™€์ฃผ์„ธ์š”.

๊ฐ์‚ฌ ํ•ด์š”.

์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/dotcloud/docker/issues/1916#issuecomment -39972199์—์„œ ํ™•์ธํ•˜์„ธ์š”.
.

@jpetazzo https://twitter.com/jpetazzo
์ตœ์‹  ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ:
http://jpetazzo.github.io/2014/03/23/lxc-attach-nsinit-nsenter-docker-0-9/

์•ˆ๋…•ํ•˜์„ธ์š” @jpetazzo , ๋‚ด

@jpetazzo

oracle_xe ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ Dockerfile

* ๋ถ€ํ„ฐ

์œ ์ง€ ๋ณด์ˆ˜ * * * * * * *

์ถ”๊ฐ€ oracle-xe-11.2.0-1.0.x86_64.rpm.zip /appl/oracle/xe/oracle-xe-11.2.0-1.0.x86_64.rpm.zip
RUN ๋งˆ์šดํŠธ -o ๋‹ค์‹œ ๋งˆ์šดํŠธ, ํฌ๊ธฐ=3G /dev/shm
์‹คํ–‰ ๋งˆ์šดํŠธ -a
RUN cd /appl/oracle/xe && oracle-xe-11.2.0-1.0.x86_64.rpm.zip ์••์ถ• ํ’€๊ธฐ
์‹คํ–‰ cd /appl/oracle/xe/Disk1 && rpm -Uvh oracle-xe-11.2.0-1.0.x86_64.rpm
์‹คํ–‰ cd /appl/oracle/xe && rm oracle-xe-11.2.0-1.0.x86_64.rpm.zip
ENV ORACLE_HOME /u01/app/oracle/product/11.2.0/xe
ENV ORACLE_SID XE

๋‚ด๊ฐ€ ์‹œ๋„ํ•œ ์ฒซ ๋ฒˆ์งธ ์ผ์€

sudo docker build -privileged -t oracle_xe .

์ด๊ฒƒ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ RunP๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.
์‹คํ–‰ ๋งˆ์šดํŠธ -o ๋‹ค์‹œ ๋งˆ์šดํŠธ, ํฌ๊ธฐ=3G /dev/shm
์‹คํ–‰ ๋งˆ์šดํŠธ -a
์ด๊ฒƒ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์•„ ์ด ๋‘ ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ฐ์—ˆ์Šต๋‹ˆ๋‹ค.

@gatoravi : ๋ถˆํ–‰ํžˆ๋„ /etc/hosts ๋งˆ์šดํŠธ ํ•ด์ œ๋Š” ์‰ฝ๊ฒŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ ๊ทธ๋ ‡๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? (๋งค์šฐ ํƒ€๋‹นํ•œ ์ด์œ ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ ์ตœ์„ ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ ์ด์œ ๋ฅผ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค...)

@Bhagat7 : ๋งž์•„! ์งˆ๋ฌธ: ๋Ÿฐํƒ€์ž„ _๋ฐ_ ์„ค์น˜ ์‹œ ๋” ํฐ /dev/shm์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋Ÿฐํƒ€์ž„์—๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ๋นŒ๋“œ ์‹œ๊ฐ„์— ์žˆ๋‹ค๋ฉด ์–ด๋–ค ๋‹จ๊ณ„๊ฐ€ ์‹คํŒจํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ?

@jpetazzo ๋‚ด ๋„๊ตฌ์˜ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๋กœ /etc/hosts์— ์ƒˆ ์ฃผ์†Œ์™€ IP ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
echo $IP $HOST >> /etc/hosts.conf์™€ ๊ฐ™์€ ๊ฒƒ.

docker run --privileged ๋ฅผ ์‚ฌ์šฉํ•œ ๋‹ค์Œ sudo umount \etc\hosts ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ด ์ž‘์—…์„ ์ž˜ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ docker commit ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋ฐ‹ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฏ€๋กœ umount ๋ฅผ ๋ฐ˜๋ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์ˆ˜๋™์œผ๋กœ

\etc\hosts ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ์˜๊ตฌ์ ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. docker commit ๋˜๋Š” Dockerfile์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•  ๋ฐฉ๋ฒ•์„ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@jpetazzo

๋‚˜๋Š”์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค

bash-4.1#/etc/init.d/oracle-xe ๊ตฌ์„ฑ
Oracle Application Express [8080]์— ์‚ฌ์šฉํ•  HTTP ํฌํŠธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฆฌ์Šค๋„ˆ [1521]์— ์‚ฌ์šฉํ•  ํฌํŠธ๋ฅผ ์ง€์ •ํ•˜์‹ญ์‹œ์˜ค: 1521

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณ„์ •์— ์‚ฌ์šฉํ•  ์•”ํ˜ธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•˜๋‹ˆ ์ฐธ๊ณ ํ•˜์„ธ์š”
์•”ํ˜ธ๋Š” SYS ๋ฐ SYSTEM์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Oracle์€ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณ„์ •์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ์•”ํ˜ธ. ์ด๊ฒƒ์€ ํ›„์— ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
์ดˆ๊ธฐ ๊ตฌ์„ฑ:
๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ:

๋ถ€ํŒ… ์‹œ Oracle Database 11g Express Edition์„ ์‹œ์ž‘ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ(y/n) [y]:y

Oracle Net Listener ์‹œ์ž‘ ์ค‘...์™„๋ฃŒ
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์„ฑ ์ค‘...์™„๋ฃŒ
Oracle Database 11g Express Edition ์ธ์Šคํ„ด์Šค ์‹œ์ž‘ ์ค‘...์™„๋ฃŒ
์„ค์น˜๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
bash-4.1#cd /u01/app/oracle/product/11.2.0/xe/bin
base-4.1#sqlplus
์‚ฌ์šฉ์ž ์ด๋ฆ„ ์ž…๋ ฅ: ์‹œ์Šคํ…œ
๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ: * **
ํ•˜์ง€๋งŒ ๋‚˜๋Š”์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ
ORA-01034: Oracle์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
ORA-27101: ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
Linux-x86_64 ์˜ค๋ฅ˜: 2: ํ•ด๋‹น ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
ํ”„๋กœ์„ธ์Šค ID: 0
์„ธ์…˜ ID: 0 ์ผ๋ จ ๋ฒˆํ˜ธ: 0
df -h ๋ฐ˜ํ™˜๋œ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€
์‚ฌ์šฉ๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ ํฌ๊ธฐ ๊ฐ€์šฉ ์‚ฌ์šฉ๋Ÿ‰(%)์ด ๋งˆ์šดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
tmpfs 64M 0 64M 0% /dev/shm

๊ทธ๋ž˜์„œ tmpfs์˜ ํฌ๊ธฐ๋ฅผ 3G๋กœ ๋Š˜๋ ธ์„ ๋•Œ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
sudo docker run -privileged -i -t oracle_xe /bin/bash. ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ 2๊ฐœ์˜ ๋งˆ์šดํŠธ ๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ํ•˜๊ณ  ์‹ถ์ง€ ์•Š๊ณ  ๋Œ€์‹  Dockerfile์— ๋„ฃ๊ณ  ๋นŒ๋“œํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@gatoravi : ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด ๋” ์žˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ์ค‘์— /etc/hosts์— ์ถ”๊ฐ€ ํ˜ธ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์‹คํ–‰ ์ค‘์—๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ์™œ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

@Bhagat7 : ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค, ์•„์ง ์ด์— ๋Œ€ํ•œ ์šฐ์•„ํ•œ ์†”๋ฃจ์…˜์ด ์—†์Šต๋‹ˆ๋‹ค :-(๋‘ ๊ฐœ์˜ Dockerfile์ด ์žˆ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  • ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„(๋” ํฐ /dev/shm์ด ํ•„์š”ํ•œ ๋‹จ๊ณ„ ์ œ์™ธ), ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ถŒํ•œ ๋ชจ๋“œ์—์„œ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธํ•˜๋Š” CMD ์ •์˜, ๋” ํฐ /dev/shm ๋งˆ์šดํŠธ, ํŠน์ˆ˜ ์‹คํ–‰ ๋ช…๋ น;
  • ์ถ”๊ฐ€ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋‘ ๋ฒˆ์งธ Dockerfile(๋Ÿฐํƒ€์ž„์— /dev/shm๋„ ํ•„์š”ํ•˜์ง€ ์•Š๋Š” ํ•œ, ์ง€๊ธˆ์€ ๊ถŒํ•œ ์žˆ๋Š” ๊ฒƒ์ด ํ•„์š”ํ•จ).

@jpetazzo ์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ /etc/hosts/๊ฐ€ ์žˆ๋Š” ์ด๋ฏธ์ง€(/container)๋ฅผ ์ œ๊ณตํ•˜์—ฌ ํ•ด๋‹น ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. :) ํ˜ธ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์— ๊ด€ํ•ด์„œ๋Š” ์†”์งํžˆ ํ™•์‹ ํ•  ์ˆ˜ ์—†์ง€๋งŒ ํŠน์ • ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ด IP ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ๋•๊ธฐ ์œ„ํ•ด ์„ค์น˜์˜ ์ผ๋ถ€๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

@Bhagat7 ๋‹ค์Œ ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„์ปค 0.9 ์ปจํ…Œ์ด๋„ˆ์—์„œ Oracle XE๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  1. https://github.com/wnameless/docker-oracle-xe-11g
    ๊ทธ๋ฆฌ๊ณ 
  2. ํ˜ธ์ŠคํŠธ์— ...
sysctl -w kernel.msgmni=4096
sysctl -w kernel.msgmax=65536
sysctl -w kernel.msgmnb=65536
sysctl -w fs.file-max=6815744
echo "fs.file-max = 7000000" > /etc/sysctl.d/30-docker.conf
service procps start

@mikewaters ๋‹ต๋ณ€ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Ubuntu ์œ„์— Oracle XE๋ฅผ ๊ตฌ์ถ•ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Centos์—์„œ ๋นŒ๋“œํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

@jpetazzo ์ œ์•ˆ

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„,

๋‚˜๋Š” /dev/shm ์— ์จ์•ผ ํ•˜๋Š” google-chrome์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. /etc/fstab ํŠน์ • ๊ตฌ์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ mout -a ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋นŒ๋“œ์— ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ธฐ๋ณธ chmod ๋˜๋Š” chown ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋นŒ๋“œ์—์„œ๋„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

--privileged ๋ชจ๋“œ๋กœ ๋กœ๊ทธ์ธํ•  ๋•Œ ๋‚ด ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์„ค๋ช…ํ–ˆ๋“ฏ์ด ๋นŒ๋“œ ์‹œ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋– ํ•œ ์ œ์•ˆ?

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@tomav "/dev/shm" ๊ถŒํ•œ ๋ฌธ์ œ๋Š” ์‹ค์ œ๋กœ #5126์ด๋ฉฐ #5131์—์„œ ์ˆ˜์ •๋˜์—ˆ์œผ๋ฉฐ ์ด๋ฏธ ๋งˆ์Šคํ„ฐ์— ๋ณ‘ํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์— ์žˆ์„ ์˜ˆ์ •).

@tianon๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์ €๋Š” ์ด๋Ÿฐ ์ƒ๊ฐ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์„ ๊ด€๋ฆฌํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์‰ฝ์ง€๋งŒ vps์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ณผ๋ฅจ์„ ์•”ํ˜ธํ™”ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ํ‰์†Œ์™€ ๊ฐ™์ด ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์— ๋ช…ํ™•ํ•˜๊ฒŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์š”์ ์€ ๊ฐ€์ƒ ๋””์Šคํฌ์— ๋ช…ํ™•ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๊ณ  ํ‚ค๋ฅผ ์‚ญ์ œํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ํŒŒ๊ดดํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„ฃ์„ cryptfs๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด ๊ธฐ์‚ฌ์—์„œ ์•„๋ฆ„๋‹ต๊ฒŒ ๋ฌธ์„œํ™”๋œ ๋ช‡ ๊ฐ€์ง€ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค. https://launchbylunch.com/posts/2014/Jan/13/encrypting-docker-on-digitalocean/

์ฐธ๊ณ ๋กœ ์ €๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๊ณ  ํ•˜์ง€ _์•„๋‹ˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” cryptfs๊ฐ€ ํƒ‘์žฌ๋œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ์•”ํ˜ธํ™”๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ๋„์ปค๋ฅผ ํ†ตํ•ด ๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ ์ƒ์„ฑ, ๋งˆ์šดํŠธ, ํฌ๋งท๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‹คํŒจ:

  • ๋ฃจํ”„ ์žฅ์น˜๋ฅผ ์ฐพ์œผ๋ ค๊ณ  ํ•  ๋•Œ :
+ losetup -f
losetup: Could not find any loop device. Maybe this kernel does not know
       about the loop device? (If so, recompile or `modprobe loop'.)

  • ์ด์ƒํ•˜๊ฒŒ๋„ ๋˜‘๊ฐ™์€ dockerfile _๋•Œ๋•Œ๋กœ_ ๋ฃจํ”„ ์žฅ์น˜๋ฅผ ์ฐพ๋Š” ๋ฐ ์„ฑ๊ณตํ•˜๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
+ losetup -f
+ LOOP_DEVICE=/dev/loop1
+ losetup /dev/loop1 /cryptfs/disk
+ cryptsetup luksFormat --batch-mode --key-file=/etc/cryptfs/random /dev/loop1
setpriority -18 failed: Permission denied
/dev/mapper/control: mknod failed: Operation not permitted
Failure to communicate with kernel device-mapper driver.
Cannot initialize device-mapper. Is dm_mod kernel module loaded?

์•„์ง ๋ฐฉ๋ฒ•์ด ์—†๋‚˜์š”? (๋””์Šคํฌ ๋งˆ์šดํŠธ/ํฌ๋งท ๋‹จ๊ณ„๋ฅผ run ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ ์™ธ์—)

+1 "๋„์ปค์˜ ๋„์ปค" ํ™˜๊ฒฝ์— ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•ด +1ํ•˜๋ฉด iptables๊ฐ€ ๊ถŒํ•œ ์—†๋Š” ๋ชจ๋“œ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์•„ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์„ค์ •ํ•˜๋ ค๋Š” ๋ชจ๋“  ์ž‘์—…์ด ์‹คํŒจํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

@PerilousApricot : ๊ทธ๋Ÿฌ๋‚˜ RUN ์— iptables ๊ทœ์น™์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋”๋ผ๋„ ์ด๋ฏธ์ง€๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์ƒํƒœ๋งŒ ๋ณด์œ ํ•˜๋ฏ€๋กœ ์ฆ‰์‹œ ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค, ๋„คํŠธ์›Œํฌ ๊ฒฝ๋กœ, iptables ๊ทœ์น™ ๋“ฑ์— ๋Œ€ํ•ด ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ์—๋Š” ํŠน์ • ํฌํŠธ๋งŒ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.
์ „๋‹ฌ๋จ, ๋ฐฉํ™”๋ฒฝ์€ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ๋Œ€๋ถ€๋ถ„
์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์€ ์ „ํ˜€ ์„ฑ๊ณตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์•ค๋“œ๋ฅ˜ ๋ฉœ๋กœ

@PerilousApricot ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค ! ์ด ๊ฒฝ์šฐ iptables ์„ /bin/true ์— ์‹ฌ๋ณผ๋ฆญ ๋งํฌํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ๋„ ๋งŒ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๋˜๋Š” ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์„ ์†์ด๋Š” ์œ ์‚ฌํ•œ ํŠธ๋ฆญ?)

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์€ ๋˜ํ•œ ๋‹ค์Œ์˜ ์ถœ๋ ฅ์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
iptables, ๊ทธ๋ž˜์„œ ๊ทธ๋ ‡๊ฒŒ ์‰ฝ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค :)

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ํ•ดํ‚น์ด ๋˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ -- ๋Œ€์‹  ๊ฐ€์งœ iptables ๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์–ด๋–ค ๋”๋ฏธ ์ถœ๋ ฅ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ข‹์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์™„์ „ํžˆ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง„์ง€ํ•˜๊ฒŒ, ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ณ ์ณ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค :)

docker ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ docker๋Š” ์ €๋ฅผ ์—ฌ๊ธฐ๋กœ ๋ฐ๋ ค์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธ€์Ž„, lxc์˜ ๋„์ปค, ๊ตฌ์ฒด์ ์œผ๋กœ ๋งํ•˜๋ฉด ์šฐ๋ฆฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด lxc๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ lxc์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

docker์˜ docker์—์„œ๋„ ์ด๊ฒƒ์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š” ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๋Š” ๋‹ค์†Œ ํฝ๋‹ˆ๋‹ค. ์ž์ฃผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์ปค๋ฐ‹ํ•  ํ•„์š” ์—†์ด docker build ์ผ๋ถ€๋กœ ๊ฐ€์ ธ์™€์„œ ์บ์‹œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์žก์•„๋‹น๊ธด ์šฉ๊ธฐ.

์ด ๊ธฐ๋Šฅ์€ ํ•„์ˆ˜ IMHO์ด๋ฉฐ RUNP ์™€ build-privileged ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ง๋ฉดํ•œ ์‹ค์ œ/ํ”„๋กœ๋•์…˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ์ค‘๊ฐ„ ์ปจํ…Œ์ด๋„ˆ์—์„œ Puppet ํ”„๋กœ๋น„์ €๋‹์œผ๋กœ ๊ตฌ์ถ•๋œ Docker ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. ์ƒ์Šน๋œ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ํŠน์ • ์„œ๋น„์Šค์—์„œ๋Š” ENTRYPOINT ๋˜๋Š” CMD ์ปจํ…Œ์ด๋„ˆ๋ฅผ -privileged ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋นŒ๋“œ์— ์‹คํŒจํ•˜์—ฌ puppet ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์‹œ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์‹ค์ œ ์„œ๋น„์Šค์˜ ์‹œ์ž‘ ์‹œ๊ฐ„์ด ์ง€์—ฐ๋ฉ๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ์ƒํƒœ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๊ผญ๋‘๊ฐ์‹œ ๊ตฌ์„ฑ์„ ๋นŒ๋“œํ•œ ๋‹ค์Œ ์ ์šฉํ•ด์•ผ ํ•˜๊ณ (์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋จ) ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹ค์ œ -privileged ์—์„œ ์‹คํ–‰๋  ํ•„์š”๊ฐ€ _์—†์Šต๋‹ˆ๋‹ค.

์œ„์˜ ๋‚ด์šฉ์ด ์˜๋ฏธ๊ฐ€ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@jpetazzo centos6 ์œ„์— ์›น ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. dockerfile์„ ํ†ตํ•ด iptable ๊ทœ์น™์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. @PerilousApricot ์˜ ๋ฌธ์ œ์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

btw: ๋‚˜๋Š” ๊ฐ€์งœ iptables์™€ ๊ฐ™์€ ํ•ดํ‚น์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

@pmoust : ์ƒ์Šน๋œ ๊ถŒํ•œ์ด ํ•„์š”ํ•œ ๋นŒ๋“œ ์ž‘์—…์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์•„๋งˆ๋„ ์ด ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ๋‹น์‹ ์—๊ฒŒ ๋งŒ์กฑ์Šค๋Ÿฝ์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์™„์ „ํžˆ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์–ด๋–ค ์ข…๋ฅ˜์˜ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ/๋นŒ๋”๊ฐ€ ์ด๋Ÿฌํ•œ ๊ถŒํ•œ์„ ์š”๊ตฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค...

@passion4aix :

@jpetazzo Bitrock ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์ด ํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค. /tmp๋ฅผ tmpfs๋กœ ๋งˆ์šดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. http://answers.bitrock.com/questions/3092/running-installer-inside-docker๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@jpetazzo ๋˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“ 

๋˜ํ•œ TokuMX๋Š” 'transparent_hugepage' ์ปค๋„ ์˜ต์…˜์„ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ TokuMX๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๋ฏธ 1๋…„์ด ๋„˜์—ˆ๊ณ  ๋Œ“๊ธ€์„ ๋ณด๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด Dockerfile์—์„œ ๊ถŒํ•œ ์žˆ๋Š” ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” '--privileged' ์†”๋ฃจ์…˜์œผ๋กœ ๋นŒ๋“œ๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ „์ฒด ์„ค์น˜๋ฅผ ๊ถŒํ•œ ์žˆ๋Š” ์ƒํƒœ๋กœ ์‹คํ–‰ํ•˜๋Š” ๋Œ€์‹  ์ผ๋ถ€ ์ž‘์—…๋งŒ ๊ถŒํ•œ ์žˆ๋Š” ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ RUNP ์†”๋ฃจ์…˜์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ตœ์†Œํ•œ ์–ธ์ œ RUNP๋ฅผ ์‚ฌ์šฉํ• ์ง€ ์ƒ๊ฐํ•˜๊ณ  ํ•„์š”ํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ์งˆ๋ฌธ์€ ๋” ์ด์ƒ ์ด ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ ์™„๋ฃŒ๋  ๋•Œ๋งŒ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์–ธ์ œ ์ด ๊ธฐ๋Šฅ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@diversit ๊ทธ๋“ค์€ ๊ฒฐํ•ฉ๋˜์–ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ช…๋ น์ค„์—์„œ --privileged ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด RUNP ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด DockerHub๋ฅผ ํฌํ•จํ•˜์—ฌ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ณด์•ˆ ์•…๋ชฝ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ Dockerfile ๊ตฌ๋ฌธ ์™ธ๋ถ€์—์„œ ์ˆ˜๋™์œผ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋Š” Dockerfile์„ ์ฝ๊ณ , ์—ฌ๊ธฐ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค๊ณ , ์ด๋ฏธ์ง€์— ๋‹ค์‹œ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.

@deas : VOLUME /tmp ํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@PerilousApricot : ์ข€ ๋” ์ž์„ธํžˆ

@diversit : ๊ทธ ํŠน์ •ํ•œ ๊ฒฝ์šฐ์—, ๋‚˜๋Š” ๊ธฐ๊ณ„์˜ ๊ด€๋ฆฌ์ž๊ฐ€ ๋นŒ๋“œํ•˜๊ธฐ ์ „์— ํˆฌ๋ช…ํ•œ ๊ฑฐ๋Œ€ํ•œ ํŽ˜์ด์ง€๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋”๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋„๋ก ํ—ˆ์šฉ๋˜๋ฉด ์ „์—ญ์ ์œผ๋กœ(๋งž์Šต๋‹ˆ๊นŒ?) ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์†์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฌด์Šจ ๋ง์ธ์ง€ ์•Œ๊ฒ ์–ด? ์ปจํ…Œ์ด๋„ˆ X๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ์ด ์ปจํ…Œ์ด๋„ˆ Y๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์ค‘๋‹จํ•˜๋ฉด ๋‚˜์  ๊ฒƒ์ž…๋‹ˆ๋‹ค...

๋ชจ๋‘: Dockerfile์ด ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๋•Œ ๋งค์šฐ ์‹ค๋ง์Šค๋Ÿฝ๊ณ  ์ด --privileged / RUNP ํ”Œ๋ž˜๊ทธ

@jpetazzo ๋งŽ์€/๋Œ€๋ถ€๋ถ„์˜

๋˜ํ•œ "๊ถŒํ•œ ์žˆ๋Š” ๋นŒ๋“œ๊ฐ€ ํ•„์š”ํ•œ Dockerfile์ด ์žˆ๋Š” ๊ฒฝ์šฐ X, Y, Z ๊ธฐ๋Šฅ์„ ์žƒ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ๊ณต์ •ํ•œ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Oracle x๋Š” ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฉด ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ณ„์ •์€ enuf ๊ณต๊ฐ„์ด ์žˆ๋Š” remountimg tmpfs๊ฐ€ Oracle x๋ฅผ ๊ธฐ์˜๊ฒŒ ์‹œ์ž‘ํ•˜๊ณ  ๊ตฌ์„ฑ์„ ์™„๋ฃŒํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์šดํŠธ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ ค์„œ ๊ทน๋ณตํ•œ๋‹ค๋Š” ์†Œ๋ฌธ)

๋นŒ๋“œ ์ค‘
RUN ๋งˆ์šดํŠธ ํ•ด์ œ tmpfs
์‹คํŒจ
umount: /proc/kcore: umountํ•˜๋ ค๋ฉด ์ˆ˜ํผ์œ ์ €์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ RUNP๋ฅผ ์ฃผ๊ฑฐ๋‚˜ ์ฃฝ์Œ์„ .... ๋˜๋Š” .... ๋‹ค๋ฅด๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ์„ธ์š” :)

๋‚ด ์˜ˆ๋Š” ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. @jpefazzo๋Š” ์—ฌ์ „ํžˆ ์„œ ์žˆ์Šต๋‹ˆ๋‹ค :) ๋‚ด Oracle ์„ค์ •์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๊ณ  tmpfs ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค... ์ตœ์†Œํ•œ ์ดˆ๊ธฐ ์„ค์น˜๋ฅผ ์œ„ํ•ด์„œ๋Š”.

CentOS 7.0์—์„œ run --privileged ๊ฒฝ์šฐ์—๋งŒ ํ•ด๊ฒฐ๋˜๋Š” iptables ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/docker/docker/issues/3416

๊ถŒํ•œ ์žˆ๋Š” ๊ฑด๋ฌผ์— ๋Œ€ํ•œ ์ง€์›์ด ์—†์œผ๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

Step 24 : RUN iptables -I INPUT -p tcp --dport 80 -j ACCEPT
 ---> Running in 74ebc19b6935
iptables v1.4.21: can't initialize iptables table `filter': Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.

@buley #8299์— security-opts ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด --privileged ์—†์ด๋„ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

@jpetazzo VOLUME /tmp ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Bitrock ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ์—์„œ๋Š” ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ /tmp ๋Š” ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ AUFS ๊ณ„์ธตํ™”๋ฅผ ์šฐํšŒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ AUFS์—์„œ ๊ทผ๋ณธ ์›์ธ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— chroot ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” debootstrap ๊ฐ€ chroot์— proc์„ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
W: Failure trying to run: chroot /var/chroot mount -t proc proc /proc
mount: permission denied
์ปจํ…Œ์ด๋„ˆ๋ฅผ run --privileged ํ•˜๋ฉด (๋ฌผ๋ก ) ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค...
Dockerfile์—์„œ chroot๋ฅผ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ํ•ด์ œํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค(ํ›จ์”ฌ ๋” ๊นจ๋—ํ•จ). RUNP ๋˜๋Š” ๋นŒ๋“œ --privileged๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ž‘๋™ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

--privileged ๋˜๋Š” ํƒ‘์žฌ์˜ ๊ฒฝ์šฐ +1์ž…๋‹ˆ๋‹ค. glusterfs ๊ตฌ์ถ• ์ž๋™ํ™”์˜ ํ•„์š”์„ฑ

์ด๊ฒƒ์€ Bitnami Tomcat ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋ ค๋Š” ๋‚˜์˜ ๋…ธ๋ ฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค์น˜ ํ”„๋กœ์„ธ์Šค์˜ 99%๋Š” ๋ฌธ์ œ ์—†์ด ์‹คํ–‰๋˜์ง€๋งŒ ์ฒ˜์Œ์œผ๋กœ tomcat์„ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ•˜๋ฉด catalina-daemon.out์—์„œ ๋‹ค์Œ ์ถœ๋ ฅ๊ณผ ํ•จ๊ป˜ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

set_caps: ๊ธฐ๋Šฅ์„ ์„ค์ •ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
์ปค๋„์ด ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š”์ง€ ํ™•์ธ
์‚ฌ์šฉ์ž 'tomcat'์— ๋Œ€ํ•ด set_caps(CAPS)๊ฐ€ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ฐ˜ํ™˜ ๊ฐ’์ด 4์ธ ์„œ๋น„์Šค ์ข…๋ฃŒ

"--cap-add ALL"๋กœ ์ƒ์„ฑํ•œ ์ปจํ…Œ์ด๋„ˆ์—์„œ Tomcat ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜๋™์œผ๋กœ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 'docker run' ๋‹ค์Œ 'docker commit'์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด 'docker build'๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด ์ด์ƒํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. ๋นŒ๋“œ ๊ณผ์ •์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋Š” '๋„์ปค ์‹คํ–‰'์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์™€ ๊ฐ™์€ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@gilbertpilz ๊ทธ๋“ค์€ ๋นŒ๋“œ ์ด์‹์„ฑ๊ณผ ๋ณด์•ˆ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋งค์šฐ ๋ช…์‹œ์ ์œผ๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@cpuguy83 - ๋ง์ด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜๋ฉด ์†์œผ๋กœ ์›ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„์ปค ์‹คํ–‰ --cap-add ALL .... /bin/bash
bitnami-tomcatstack-7.0.56-0-linux-x64-installer.run ...
์ถœ๊ตฌ
๋„์ปค ์ปค๋ฐ‹ ....

๋‚ด๊ฐ€ ์—ฌ๊ธฐ์„œ ์ˆ˜๋™์œผ๋กœ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด "๋„์ปค ๋นŒ๋“œ"๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ๋งŒ ์š”๊ตฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๋ฅผ ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ "์ด๋™์„ฑ ๋ฐ ๋ณด์•ˆ"์ด ์–ด๋–ป๊ฒŒ "๋ณด์žฅ๋˜๋Š”์ง€"๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ข‹์•„, ํ˜ธ์ŠคํŠธ์˜ /etc/passwd๋ฅผ ๋นŒ๋”์— ๋งˆ์šดํŠธํ•˜๊ณ  ์šฐ์—ฐํžˆ ๊ทธ๊ฒƒ์„ ๋‚˜์—๊ฒŒ ๋ณด๋‚ด๋Š” Dockerfile์„ ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌผ๊ฑด์€ ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ --privileged(๋ฐ --cap-add ALL)๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ˜ธ์ŠคํŠธ์˜ ๋ชจ๋“  ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์„ ํ—ˆ์šฉํ•˜๋ฉด DockerHub ์ „์ฒด๊ฐ€ ์†์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@cpuguy83 -

๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์€ ์™•๊ตญ์˜ ์—ด์‡ ๋ฅผ ํ‰๋‚ด๋‚ด์ง€ ์•Š๊ณ  ์‹ ๋ขฐํ•˜์ง€ ์•Š๋Š” ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ sudo๋ฅผ ์ฃผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋นŒ๋“œ๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ์•ˆ์ „ํ•˜๊ฒŒ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œ์—์„œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด CLI ํ”Œ๋ž˜๊ทธ๋ฅผ ๋„์ž…ํ•˜๋ฉด ๋นŒ๋“œ์˜ ์ด์‹์„ฑ์ด ๊นจ์ ธ ์•„์ง ์ถ”๊ฐ€๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ฆ‰, ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด๊ฐ€ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์–ด์•ผ ํ•˜๋Š” ํ•ญ๋ชฉ์„ ์š”์ฒญํ•˜๋Š” ์˜ค๋ฅ˜๊ฐ€ ๊ฑฐ์˜ ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค.

์ •ํ™•ํžˆ. ๊ถŒํ•œ์ด ํ•„์š”ํ•œ ๋„์ปค ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ์‹ ๋ขฐํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ฃผ์–ด์„œ๋Š” ์•ˆ ๋˜์ง€๋งŒ, ๋„์ปค๋Š” ๋‹น์‹ ์ด _do_ ์‹ ๋ขฐํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ •์ฑ… ๊ฒฐ์ •์ด๋ฉฐ ๋„๊ตฌ๊ฐ€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ •์ฑ… ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ์„ ์ •๋ง ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค. ์ข‹์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‚ด๊ฐ€ ๋‚ด๋ฆฐ ์ •์ฑ… ๊ฒฐ์ •์„ ๋ช…ํ™•ํ•˜๊ณ  ๋†€๋ผ์šด ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๋” ํฐ ๊ทธ๋ฆผ์„ ๋ณด๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์ƒํƒœ๊ณ„์—๋Š” ๋‹น์‹ ์˜ ์„œ๋ฒ„์™€ ๋‚ด ์„œ๋ฒ„๋ณด๋‹ค ๋” ๋งŽ์€ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด DockerHub๋Š” ํ•ญ์ƒ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ DockerHub๋Š” ๋นŒ๋“œ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก _์•ˆ_ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๋‚ด ๋„์ปค ๋นŒ๋“œ๋ฅผ DockerHub๋กœ ํ‘ธ์‹œํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ๋ผ๋ฉด ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

@cpuguy83 @tianon @jpetazzo -- FUD๊ฐ€ ์‹œ์ž‘๋  ๋•Œ, ๋‚˜๋Š” ๋งํ•  ์ˆ˜๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค:

์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์„ ํ—ˆ์šฉํ•˜๋ฉด DockerHub ์ „์ฒด๊ฐ€ ์†์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ—?
์ด ๊ธฐ๋Šฅ ๊ตฌํ˜„ == TEOTWAWKI ?

๋ฌผ๋ก  DockerHub๋Š” ์š”์ฒญ๋œ --privileged ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ docker build ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋„ˆ๋ฌด ๋งŽ์ด ์ƒ๊ฐํ•˜์ง€ ์•Š์•„๋„ ๊ตฌํ˜„ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ถ„๋ช…ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋‹น์‹ ์€ ๋˜ํ•œ ์‹œ์ž‘ํ•˜๋ฉด ํ”Œ๋ž˜๊ทธ๋Š” ์ž‘๋™ docker -d ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ํ”Œ๋ž˜๊ทธ : --i-want-a-broken-security-model
  • ์ฝ”๋“œ ๊ฒฝ๋กœ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋Š” ์ปดํŒŒ์ผ ํƒ€์ž„ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ „๋ฐ˜์ ์œผ๋กœ ๊ตฌํ˜„์— ๋Œ€ํ•œ ์—”์ง€๋‹ˆ์–ด๋ง ๊ธฐ๋ฐ˜ ์ด์œ ์— ๋Œ€ํ•œ ์ด๋ฅผ ๊ฐˆ๊ธฐ์˜ ๋น„์œจ์ด ์—ฌ๊ธฐ์—์„œ ์ •๋ง ๋†’์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@tamsky ๊ทธ๋ฆฌ๊ณ  ๋นŒ๋“œ๊ฐ€ ํ•œ ๊ณณ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๊ณณ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ์–ด๋–ค ๊ฒฝ์šฐ๋ฅผ ๋…ผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ์˜ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋˜ํ•œ... ๋Œ€๋ถ€๋ถ„์˜ ๊ฒƒ๋“ค์€ ์–ด๋–ค ์ข…๋ฅ˜์˜ ํŠน๊ถŒ ์•ก์„ธ์Šค๋„ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ํŠน๊ถŒ ์•ก์„ธ์Šค๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์„ค์น˜๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐ _์‹ค์ œ๋กœ_ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์„ค์น˜์— ์‹คํŒจํ•˜๋ฉด ํ•ด๋‹น ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์ด ์†์ƒ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: ์ธ์šฉ๋œ tomcat ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ).
์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด ์‚ฌ๋žŒ๋“ค์ด ๋‹น๋ฉดํ•œ ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ์‹ค์ œ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๋Œ€์‹  ํŠน๊ถŒ ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•˜๋„๋ก ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

@cpuguy83

๊ทธ๋ฆฌ๊ณ  ๋นŒ๋“œ๊ฐ€ ํ•œ ๊ณณ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๊ณณ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ž ์‹œ ๋™์•ˆ ์šฐ๋ฆฌ๊ฐ€ _policy_๊ฐ€ ๋‹ค๋ฅด๊ณ  ์ผ๋ถ€ ๋นŒ๋“œ๋Š” ํ•œ ๊ณณ์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๊ณณ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์„ธ๊ณ„๋กœ ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ์ด๋™ํ–ˆ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ณด์„ธ์š”...

์ด๊ฒŒ ์™œ ํฐ์ผ์ด์•ผ?
์ •ํ™•ํžˆ ๋ˆ„๊ฐ€ ์‹ ๊ฒฝ์“ฐ๋‚˜์š”?

Docker Inc๋Š” "๋ชจ๋“  ๋นŒ๋“œ๋Š” ๋ชจ๋“  ๊ณณ์—์„œ ์ž‘๋™ํ•ด์•ผ ํ•จ"์ด๋ผ๋Š” ๊ฐ€์žฅ ๋‚ฎ์€ ๊ณตํ†ต ๋ถ„๋ชจ์˜ ์ง„์–ธ/์š”๊ตฌ ์‚ฌํ•ญ์ด ์‹ค์ œ๋กœ ์‹ค์ œ ๊ณ ๊ฐ์˜ ์š”๊ตฌ๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๊นŒ?

ํ˜„์žฌ ์ •์ฑ…์€ ๊ณ ๊ฐ์ด "๋„์ปค์—์„œ X๋ฅผ ๋นŒ๋“œ"ํ•˜๊ธฐ ์œ„ํ•œ ์—”์ง€๋‹ˆ์–ด๋ง ๋น„์šฉ์„ ์™ธ๋ถ€ํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

docker์—์„œ ์ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋Œ€์‹  "์–ด๋–ค ์ข…๋ฅ˜์˜ ๊ถŒํ•œ ์•ก์„ธ์Šค๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€"(๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ๋Š”) ์ „ ์„ธ๊ณ„์˜ ๋ชจ๋“  ํƒ€์‚ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๋จผ์ € ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ๋„์ปค ๋นŒ๋“œ ์‚ฌ๋ก€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์›์ˆญ์ด ํŒจ์น˜๋ฅผ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ Docker๊ฐ€ ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰๋  ๊ฒฝ์šฐ 'docker ๋นŒ๋“œ'๋Š” ๋ชจ๋“  ์‹œ์Šคํ…œ์—์„œ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, Windows ์ปจํ…Œ์ด๋„ˆ, Solaris ์ปจํ…Œ์ด๋„ˆ ๋˜๋Š” ARM Linux ์ปจํ…Œ์ด๋„ˆ์˜ ๋นŒ๋“œ๋Š” x86-64 Linux์—์„œ์™€ ๋™์ผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋“ค์— ๋Œ€ํ•œ ๋ณด์•ˆ ์ปจํ…์ŠคํŠธ๋„ ํ”Œ๋žซํผ์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฆ‰, @cpuguy83 , Dockerfile์ด ๋ณดํŽธ์ ์œผ๋กœ ์œ ์ง€๋  ๊ฒƒ์ด๋ผ๊ณ  ํ•ญ์ƒ ๊ฐ€์ •ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋“ค ์‚ฌ์ด์— ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์›ํ•˜๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๊ณ ๋ ค ์‚ฌํ•ญ์€ ์œ„ํ—˜ํ•˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ ๊ถ๊ทน์ ์œผ๋กœ ๋‹ค์ค‘ ์•„ํ‚คํ…์ฒ˜/๋‹ค์ค‘ ํ”Œ๋žซํผ ์ง€์›๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ฐœ์ƒํ•ด์•ผ ํ•˜๋Š” ๋Œ€ํ™”์— ํฌํ•จํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋กœ๋“œ๋œ ์•ฑ ๊ฐ‘์˜ท ํ”„๋กœํ•„ ๋•Œ๋ฌธ์— ๋นŒ๋“œ๊ฐ€ ๋ชจ๋“  ๊ณณ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์ด๋ฏธ์ง€๋กœ ๊ตฌ์šด ์‚ฌ์ „ ์บ์‹œ๋œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์˜ ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

2014๋…„ 18์›” 11์ผ 2์‹œ 53๋ถ„์— tamsky [email protected]์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@cpuguy83

๊ทธ๋ฆฌ๊ณ  ๋นŒ๋“œ๊ฐ€ ํ•œ ๊ณณ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๊ณณ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ •์ฑ…์ด ๋‹ค๋ฅด๊ณ  ์ผ๋ถ€ ๋นŒ๋“œ๋Š” ํ•œ ๊ณณ์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๊ณณ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์„ธ๊ณ„๋กœ ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ์ด๋™ํ–ˆ๋‹ค๊ณ  ์ž ์‹œ ์ƒ์ƒํ•ด ๋ณด์„ธ์š”...

์ด๊ฒŒ ์™œ ํฐ์ผ์ด์•ผ?
์ •ํ™•ํžˆ ๋ˆ„๊ฐ€ ์‹ ๊ฒฝ์“ฐ๋‚˜์š”?

Docker Inc๋Š” "๋ชจ๋“  ๋นŒ๋“œ๋Š” ๋ชจ๋“  ๊ณณ์—์„œ ์ž‘๋™ํ•ด์•ผ ํ•จ"์ด๋ผ๋Š” ๊ฐ€์žฅ ๋‚ฎ์€ ๊ณตํ†ต ๋ถ„๋ชจ์˜ ์ง„์–ธ/์š”๊ตฌ ์‚ฌํ•ญ์ด ์‹ค์ œ๋กœ ์‹ค์ œ ๊ณ ๊ฐ์˜ ์š”๊ตฌ๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๊นŒ?

ํ˜„์žฌ ์ •์ฑ…์€ ๊ณ ๊ฐ์ด "๋„์ปค์—์„œ X๋ฅผ ๋นŒ๋“œ"ํ•˜๊ธฐ ์œ„ํ•œ ์—”์ง€๋‹ˆ์–ด๋ง ๋น„์šฉ์„ ์™ธ๋ถ€ํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

docker์—์„œ ์ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋Œ€์‹  "์–ด๋–ค ์ข…๋ฅ˜์˜ ๊ถŒํ•œ ์•ก์„ธ์Šค๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€"(๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ๋Š”) ์ „ ์„ธ๊ณ„์˜ ๋ชจ๋“  ํƒ€์‚ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๋จผ์ € ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ๋„์ปค ๋นŒ๋“œ ์‚ฌ๋ก€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์›์ˆญ์ด ํŒจ์น˜๋ฅผ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ํšŒ์‹ ํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.

์ด ์ƒํ™ฉ์—์„œ "๊นจ์ง„" ๊ฒƒ์€ "์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ"์ด ์•„๋‹ˆ๋ผ Tomcat 7์ž…๋‹ˆ๋‹ค. ์ €๋Š” Tomcat์„ Apache ๋ฐ MySQL๊ณผ ํ†ตํ•ฉํ•˜๋Š” Bitnami์˜ Tomcat ์Šคํƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Docker๋Š” ์†Œ์Šค, ๊ตฌ์„ฑ, ํ†ตํ•ฉ, ํ…Œ์ŠคํŠธ ๋ฐ ํŒจํ‚ค์ง• ์„œ๋น„์Šค์˜ ๊ณต๊ธ‰๋ง ๋์— ์žˆ์Šต๋‹ˆ๋‹ค. Tomcat์„ "์ˆ˜์ •"ํ•˜๋„๋ก ์š”๊ตฌํ•˜๋ฉด ์ด ๊ณต๊ธ‰๋ง์„ ์ด์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Tomcat์„ "์ˆ˜์ •"ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์†์œผ๋กœ ์›ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค("--privileged"๋กœ ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘, ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰, ์ปจํ…Œ์ด๋„ˆ ์Šค๋ƒ…์ƒท ๋“ฑ).

+1
์š”๋ฆฌ์‚ฌ ์—ญํ• ์€ ๋ชจ๋‘ ufw๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌํŠธ๋ฅผ ์—ฌ๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— docker๋กœ ํฌํŒ…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋นŒ๋“œ์— --privileged๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

+1. ๋‚ด Dockerfiles์˜ ๋‹จ๊ณ„๋กœ debootstrap์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

+1. ๋‚ด Dockerfiles์˜ ๋‹จ๊ณ„๋กœ debootstrap์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Dockerfile/build๋ฅผ ํ†ตํ•ด chroot๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ์ด ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์ง€๋งŒ @fbrusch๊ฐ€ ์–ธ๊ธ‰ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

FROM ubuntu:utopic
ENV HOME /root
RUN sudo apt-get update
RUN sudo apt-get install -y eatmydata
RUN for i in /usr/bin/apt*; do sudo ln -s /usr/bin/eatmydata $(basename $i); done
RUN sudo apt-get install -y debootstrap qemu-user-static binfmt-support
RUN sudo debootstrap --foreign --arch arm64 trusty ubuntu-arm64-chroot
RUN ls ubuntu-arm64-chroot
RUN sudo cp /usr/bin/qemu-aarch64-static ubuntu-arm64-chroot/usr/bin
RUN sudo cp /etc/resolv.conf ubuntu-arm64-chroot/etc
RUN sudo DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LC_ALL=C LANGUAGE=C LANG=C chroot ubuntu-arm64-chroot /debootstrap/debootstrap --second-stage; sudo cat ubuntu-arm64-chroot/debootstrap/debootstrap.log

์‹คํŒจ:

Step 11 : RUN sudo DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LC_ALL=C LANGUAGE=C LANG=C chroot ubuntu-arm64-chroot /debootstrap/debootstrap --second-stage; sudo cat ubuntu-arm64-chroot/debootstrap/debootstrap.log
 ---> Running in 2654257e860a
I: Keyring file not available at /usr/share/keyrings/ubuntu-archive-keyring.gpg; switching to https mirror https://mirrors.kernel.org/debian
W: Failure trying to run:  mount -t proc proc /proc
W: See //debootstrap/debootstrap.log for details
gpgv: Signature made Thu May  8 14:20:33 2014 UTC using DSA key ID 437D05B5
gpgv: Good signature from "Ubuntu Archive Automatic Signing Key <[email protected]>"
gpgv: Signature made Thu May  8 14:20:33 2014 UTC using RSA key ID C0B21F32
gpgv: Good signature from "Ubuntu Archive Automatic Signing Key (2012) <[email protected]>"
mount: block device proc is write-protected, mounting read-only
mount: cannot mount block device proc read-only
 ---> de534a4e5458
Removing intermediate container 2654257e860a
Successfully built de534a4e5458

RUNP ๋Œ€์‹  --insecure ๋นŒ๋“œ ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?
๋ชจ๋“  RUN ๋ช…๋ น์— ๋Œ€ํ•ด ํ›„์† ์ปจํ…Œ์ด๋„ˆ๋Š” --add-cap=all ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํŠน๊ถŒ ๋Œ€์‹  ๋‹ค๋ฅธ ์ผ๋„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน๊ถŒ ๋Œ€์‹  ...
๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ ์ด๊ฒƒ์€ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ๋„ ํ•„์š”ํ•  ๊ฒฝ์šฐ ์ „์ฒด privileged ์„ค์ •์„ ๊ตฌํ˜„ํ•˜๋„๋ก ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@cpuguy83
RUN ๋ช…๋ น์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ RUNP ๋ช…๋ น์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๋„์ปค ๋นŒ๋“œ์— ์ „๋‹ฌ๋œ ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์— ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Dockerfile์„ ๋ณด๊ณ  ๊ทธ ์•ˆ์˜ ๋ช…๋ น์ด๋‚˜ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ํ†ตํ•ด ๊ถŒํ•œ ์žˆ๋Š” ์•ก์„ธ์Šค๊ฐ€ ํ•„์š”ํ•˜๊ณ  ๋Ÿฐํƒ€์ž„์— 10๋‹จ๊ณ„๋กœ ์ด๋™ํ•˜์—ฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋Œ€์‹  ์‹œ์ž‘ํ•  ๋•Œ Dockerfile ๊ถŒํ•œ์ด ํ•„์š”ํ•œ ๋ช…๋ น์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.


์ด ์Šค๋ ˆ๋“œ๋กœ ๋‚˜๋ฅผ ๋ฐ๋ ค์˜จ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ์ด๋ฉฐ, ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๊ถŒํ•œ ๋ชจ๋“œ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ํ•  ๋•Œ ๋ช…๋ น์„ ํ•จ๊ป˜ ์—ฐ๊ฒฐํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•˜๋ ค๋Š” ํ”„๋กœ์„ธ์Šค ์ „์— ์‹œ์Šคํ…œ ์„ค์ •์„ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰๋˜๋Š” ์ดˆ๊ธฐํ™” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ฐ–๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

Dockerfile์— ๋‹ค์Œ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

RUN mount --bind /dir1 /dir2

๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•  ๊ฒƒ์ด๋ฏ€๋กœ ์ด๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ช…๋ น ์š”์ฒญ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ €์˜ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์˜์—ญ์˜ ๋งˆ์šดํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์— ๋ฐ”์ธ๋”ฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์˜ˆ

/usr/local/application/data -> /mnt/data 
/mnt/data -> HOST:/var/datasets/dataset1

์ด๊ฒƒ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์˜์—ญ์— ์ง์ ‘ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ณตํ†ต ์œ„์น˜์— ์ œ๊ณตํ•˜๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํŠน์ • ๋งคํ•‘์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋˜ํ•œ symlinks๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ถ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋Œ€์ƒ/๋ฐ์ดํ„ฐ ํด๋”๋กœ symlink๋ฅผ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ ์œ„์น˜ ๊ตฌ์„ฑ์„ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ ์˜์—ญ์„ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ์ˆ˜ํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ ์œ„์น˜ ๊ตฌ์„ฑ์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ ํ˜„์‹ค์€ ๋ฐ์ดํ„ฐ์™€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ณต๊ฐ„์„ ์ ์ ˆํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ ๋˜๋Š” ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ํ•ญ์ƒ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

A -> B -> C๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ด ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ผ๋ฐ˜ ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ณ  --volumes-from ๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ๋ฐ์ดํ„ฐ ์ปจํ…Œ์ด๋„ˆ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์กฐํ•ฉ์—์„œ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

--volumes-from ์ปจํ…Œ์ด๋„ˆ ์ฒด์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ๋‹ฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

GenericDataContainer -> ApplicationDataContainer -> ApplicationContainer

์ด๊ฒƒ์ด ์ •๋‹ต์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ๋˜ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ถŒํ•œ ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•œ ๋‹ค์Œ ๋งˆ์šดํŠธ ๋ฐ”์ธ๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ด๋ฅผ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์•„๋ž˜์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ํ•ด๋‹น ๋งˆ์šดํŠธ ๋ฐ”์ธ๋“œ๋ฅผ ์ง€์†ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์œผ๋ฉฐ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ์žฌ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. . ์ปค๋ฐ‹ ์‹œ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

๋‚ด ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ๋Œ€๋‹ต์€ 3์ฒด์ธ ์ปจํ…Œ์ด๋„ˆ ์ ‘๊ทผ ๋ฐฉ์‹ ๋˜๋Š” ์ดˆ๊ธฐํ™” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ Dockerfile์—์„œ ์ปจํ…Œ์ด๋„ˆ ๋‚ด(๋˜๋Š” ๊ธฐํƒ€ ๊ถŒํ•œ ์žˆ๋Š” ๋ช…๋ น)๋ฅผ ๋ฐ”์ธ๋”ฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ๋ฐ์ดํ„ฐ ์ปจํ…Œ์ด๋„ˆ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ํ˜ธ์ŠคํŠธ ๋Œ€ ์ปจํ…Œ์ด๋„ˆ ๋งคํ•‘์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ ํŠน์ • ๋ฌธ์ œ์™€ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋„์ปค ์ปค๋ฐ‹์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๊ถŒํ•œ ์žˆ๋Š” ๋ช…๋ น์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ง€์†๋˜๋ฉด ๋„์ปค ์ด๋ฏธ์ง€ ๋นŒ๋“œ์™€ ๋„์ปค ์ด๋ฏธ์ง€ ์‹คํ–‰์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์ปค ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜์—ญ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ตœ์ข… ์‚ฌ์šฉ์ž๋Š” ๊ถŒํ•œ ์—†๋Š” ๋ชจ๋“œ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ปค๋ฐ‹๋œ ์ปจํ…Œ์ด๋„ˆ๋งŒ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ˜„์žฌ ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ ๋ฐ ์ปค๋ฐ‹์„ ์‹คํ–‰ํ•  ๋•Œ ์›์ธ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ /proc/mounts ์ž‘๋™ ๋ฐฉ์‹๊ณผ ๋” ๊ด€๋ จ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๊ฐ„๋‹จํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค.

[root@ip-10-0-3-202 ~]# docker run --privileged -i -t --name test_priv centos:centos6 /bin/bash
[root<strong i="17">@d1d037cb170c</strong> /]# cat /proc/mountsย 
rootfs / rootfs rw 0 0
/dev/mapper/docker-202:1-25352538-d1d037cb170c12dab94ebd01c56807210cf2aec50bef52c944f89225c8346827 / ext4 rw,seclabel,relatime,discard,stripe=16,data=ordered 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev tmpfs rw,seclabel,nosuid,mode=755 0 0
shm /dev/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
devpts /dev/pts devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666 0 0
sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
/dev/xvda1 /etc/resolv.conf xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
/dev/xvda1 /etc/hostname xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
/dev/xvda1 /etc/hosts xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
tmpfs /run/secrets tmpfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
devpts /dev/console devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0

๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค๊ณ  symlink ์˜ˆ์ œ๋„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

[root<strong i="6">@d1d037cb170c</strong> /]# mkdir /var/data1
[root<strong i="7">@d1d037cb170c</strong> /]# mkdir /var/data2
[root<strong i="8">@d1d037cb170c</strong> /]# mount --bind /var/data1 /var/data2
[root<strong i="9">@d1d037cb170c</strong> /]# ln -s /var/data1 /var/data3

Show ํŒŒ์ผ์€ 3๊ฐœ์˜ ๋””๋ ‰ํ† ๋ฆฌ ๋ชจ๋‘์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[root<strong i="13">@d1d037cb170c</strong> /]# touch /var/data1/test
[root<strong i="14">@d1d037cb170c</strong> /]# ls /var/data1
test
[root<strong i="15">@d1d037cb170c</strong> /]# ls /var/data2
test
[root<strong i="16">@d1d037cb170c</strong> /]# ls /var/data3
test

/proc/mounts ์—…๋ฐ์ดํŠธ๋จ

[root<strong i="21">@d1d037cb170c</strong> /]# cat /proc/mounts
rootfs / rootfs rw 0 0
/dev/mapper/docker-202:1-25352538-d1d037cb170c12dab94ebd01c56807210cf2aec50bef52c944f89225c8346827 / ext4 rw,seclabel,relatime,discard,stripe=16,data=ordered 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev tmpfs rw,seclabel,nosuid,mode=755 0 0
shm /dev/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
devpts /dev/pts devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666 0 0
sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
/dev/xvda1 /etc/resolv.conf xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
/dev/xvda1 /etc/hostname xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
/dev/xvda1 /etc/hosts xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
tmpfs /run/secrets tmpfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
devpts /dev/console devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
/dev/mapper/docker-202:1-25352538-d1d037cb170c12dab94ebd01c56807210cf2aec50bef52c944f89225c8346827 /var/data2 ext4 rw,seclabel,relatime,discard,stripe=16,data=ordered 0 0

์ค‘์ง€ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ข…๋ฃŒํ•œ ๋‹ค์Œ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค.

[root<strong i="25">@d1d037cb170c</strong> /]# exit
[root@ip-10-0-3-202 ~]# docker start -a -i test_priv
test_priv

/proc/mounts ์— ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

[root<strong i="7">@d1d037cb170c</strong> /]# cat /proc/mountsย 
rootfs / rootfs rw 0 0
/dev/mapper/docker-202:1-25352538-d1d037cb170c12dab94ebd01c56807210cf2aec50bef52c944f89225c8346827 / ext4 rw,seclabel,relatime,discard,stripe=16,data=ordered 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev tmpfs rw,seclabel,nosuid,mode=755 0 0
shm /dev/shm tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,size=65536k 0 0
devpts /dev/pts devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666 0 0
sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
/dev/xvda1 /etc/resolv.conf xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
/dev/xvda1 /etc/hostname xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
/dev/xvda1 /etc/hosts xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
tmpfs /run/secrets tmpfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
devpts /dev/console devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0

Symlink๋Š” ์‚ด์•„๋‚จ์•˜์ง€๋งŒ ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

[root<strong i="11">@d1d037cb170c</strong> /]# ls /var/data1
test
[root<strong i="12">@d1d037cb170c</strong> /]# ls /var/data2
[root<strong i="13">@d1d037cb170c</strong> /]# ls /var/data3
test
[root<strong i="14">@d1d037cb170c</strong> /]#

๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ ์žฌ์„ค์ •

[root<strong i="18">@d1d037cb170c</strong> /]# mount --bind /var/data1 /var/data2

์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ข…๋ฃŒํ•˜๋Š” ๋Œ€์‹  ctrl+p ctrl+q ๋กœ ๋ถ„๋ฆฌํ•œ ๋‹ค์Œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒˆ ์ด๋ฏธ์ง€๋กœ ์ปค๋ฐ‹ํ•˜๊ณ  ๋น„๊ฐœ์ธ ๋ชจ๋“œ์˜ ์ด๋ฏธ์ง€์—์„œ ์ƒˆ ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘

[root@ip-10-0-3-202 ~]# docker commit test_priv test_priv
74305f12076a8a6a78f492fd5f5110b251a1d361e63dda2b167848f59e3799e2
[root@ip-10-0-3-202 ~]# docker run -i -t --name test_nonpriv test_priv /bin/bash

/proc/mounts
๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡์ด ์ถ”๊ฐ€ /proc/[sys,sysrq-trigger,irq,bus,kcore] ๋งˆ์šดํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ–ˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

[root<strong i="5">@ba1ba4083763</strong> /]# cat /proc/mountsย 
rootfs / rootfs rw 0 0
/dev/mapper/docker-202:1-25352538-ba1ba40837632c3900e4986b78d234aefbe678a5ad7e675dbab7d91a9a68469e / ext4 rw,context="system_u:object_r:svirt_sandbox_file_t:s0:c327,c505",relatime,discard,stripe=16,data=ordered 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev tmpfs rw,context="system_u:object_r:svirt_sandbox_file_t:s0:c327,c505",nosuid,mode=755 0 0
shm /dev/shm tmpfs rw,context="system_u:object_r:svirt_sandbox_file_t:s0:c327,c505",nosuid,nodev,noexec,relatime,size=65536k 0 0
devpts /dev/pts devpts rw,context="system_u:object_r:svirt_sandbox_file_t:s0:c327,c505",nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666 0 0
sysfs /sys sysfs ro,seclabel,nosuid,nodev,noexec,relatime 0 0
/dev/xvda1 /etc/resolv.conf xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
/dev/xvda1 /etc/hostname xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
/dev/xvda1 /etc/hosts xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
tmpfs /run/secrets tmpfs rw,context="system_u:object_r:svirt_sandbox_file_t:s0:c327,c505",nosuid,nodev,noexec,relatime 0 0
devpts /dev/console devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
proc /proc/sys proc ro,nosuid,nodev,noexec,relatime 0 0
proc /proc/sysrq-trigger proc ro,nosuid,nodev,noexec,relatime 0 0
proc /proc/irq proc ro,nosuid,nodev,noexec,relatime 0 0
proc /proc/bus proc ro,nosuid,nodev,noexec,relatime 0 0
tmpfs /proc/kcore tmpfs rw,context="system_u:object_r:svirt_sandbox_file_t:s0:c327,c505",nosuid,mode=755 0 0

์‹ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ€ ์‚ด์•„ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค.

[root<strong i="9">@ba1ba4083763</strong> /]# ls /var/data1
test
[root<strong i="10">@ba1ba4083763</strong> /]# ls /var/data2
[root<strong i="11">@ba1ba4083763</strong> /]# ls /var/data3
test
[root<strong i="12">@ba1ba4083763</strong> /]# exit

๋‚ด๊ฐ€ ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ , ๋‚ด ๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ ๊ณ ์ • ํ‘œ์‹œ๊ธฐ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  dind์„ . ๊ทธ๋ ‡๋‹ค๋ฉด ํ˜„์žฌ ๋นŒ๋“œ์—์„œ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๊นŒ?

์—ฌ๋Ÿฌ๋ถ„, ์ด๊ฒƒ์„ ์›ํ•œ๋‹ค๋ฉด '/usr/bin/unshare -f -m -u -i -n -p -U -r -- /path/to/binary'๋ฅผ ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‚ฌ์šฉ์ž ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š” ๋นŒ๋“œ ๋‚ด๋ถ€์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ํ•„์š”์— ๋”ฐ๋ผ ๊ณต์œ  ํ•ด์ œ ์˜ต์…˜์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‹ค์ œ๋กœ ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ '/sbin/capsh'๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋‚ด ํ”„๋กœ์„ธ์Šค์˜ ๊ธฐ๋Šฅ์„ ์„ธ๋ถ€์ ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๊ถŒํ•œ ์žˆ๋Š” ๋นŒ๋“œ์— ๋Œ€ํ•œ ๋ชจ๋“  ์‚ฌ์šฉ์ž ์‚ฌ๋ก€๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ์ผ๋ถ€ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด Docker ์ž์ฒด์˜ ์ผ๋ถ€๊ฐ€ ๋˜์–ด์•ผ ํ•˜๊ณ  ์‚ฌ์šฉ์ž ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ํ†ตํ•ฉ์ด ์ง„ํ–‰ ์ค‘์ธ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

@saulshanabrook ์ •ํ™•ํžˆ๊ฐ€ ์•„๋‹ˆ๋ผ ๋นŒ๋“œ์—์„œ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜๋ฃจ ๋นจ๋ฆฌ ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ์•ฝ๊ฐ„์˜ ์กฐ์‚ฌ๋ฅผ ํ–ˆ๊ณ  VFS ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ•œ ๋นŒ๋“œ ๋‚ด์—์„œ '๋„์ปค ํ’€'์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ํŽธ๋ฆฌํ•˜๊ฒŒ๋Š” '๋„์ปค ์ €์žฅ'๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋Š” ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ์‹ค์ œ ์†”๋ฃจ์…˜์ด ์•„๋‹ˆ์ง€๋งŒ '๊ณต์œ  ํ•ด์ œ' ๋ฐ '์บก์‹œ'๊ฐ€ ์ž‘๋™ํ•˜๋ฏ€๋กœ ๊ถŒํ•œ์ด ์—†๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ปจํ…Œ์ด๋„ˆ์™€ ๊ฐ™์€ ๋Ÿฐํƒ€์ž„์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ๋นŒ๋“œ ์ค‘ ). ํ‹€๋ฆผ์—†์ด '๋„์ปค ์‹คํ–‰'์„ ์ƒ๋žตํ•˜๊ณ  ์ด ๋‹จ๊ณ„๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ด๋ฏธ์ง€๋ฅผ ๋„์ปค์— ๋‹ค์‹œ ์ปค๋ฐ‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๋ก ๋ชจ๋“  ๊ฒƒ์„ ํ™œ๋กœ ๋ฌถ์ง€๋Š” ์•Š๋”๋ผ๋„ ๋ง์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ฒฐ๊ตญ์—๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด Docker ์ž์ฒด์— ๋“ค์–ด๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

RUNP๋ฅผ ํ†ตํ•œ ๋„์ปค ํ’€์˜ ๊ฒฝ์šฐ +1

docker build ๊ถŒํ•œ ์žˆ๋Š” ์‹คํ–‰์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉด ์…ธ ๋ฐ docker ์ปค๋ฐ‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ๋นŒ๋“œ๋ฅผ ์Šน๊ฒฉํ•˜์—ฌ Dockerfile์„ ๋ฌด์˜๋ฏธํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋„์ปค ๋นŒ๋“œ์— ๊ถŒํ•œ ์žˆ๋Š” ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋นŒ๋“œ์™€ ๊ถŒํ•œ ์žˆ๋Š” ๋นŒ๋“œ ์‚ฌ์ด์— ์„ ์„ ๊ทธ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ ๋ผ์ธ์€ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์‹คํ–‰์— ์ถ”๊ฐ€๋˜์—ˆ์„ ๋•Œ ์ด๋ฏธ ๊ทธ๋ ค์กŒ๊ณ  ์ง€์›๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

+1 ์ด๊ฒƒ์€ ์ฃผ์–ด์ง„ ์‹œ์ ์—์„œ ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค(๋„์ปค ํŒŒ์ผ๋งŒ ๊ฐ€์ง€๊ณ  ๋‹ค๋‹ ํ•„์š”๊ฐ€ ์žˆ์Œ)

+1 ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ณธ ์—ญํ• ์„ ์™„์ „ํžˆ ๋ถ„ํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„์ปค ์ฑ„ํƒ์œผ๋กœ ๊ธฐ์กด์˜ ๋งŽ์€ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์ •๋ง๋กœ ๋ฐ”๋ž์ง€๋งŒ ์ด๋ฏธ ํฌ๊ธฐ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ์—ญํ• ์„ ์ƒ์„ฑํ–ˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ด์ œ ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@lsjommer ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋‚˜์š”? --privileged๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์™„์ „ํžˆ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋ฐฉ๋ฒ•์ด๋ฉฐ ์ปจํ…Œ์ด๋„ˆ์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ ์ „์ฒด ๋ฃจํŠธ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜์ง€ ๋ง์ž๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์šฐ๋ฆฌ๊ฐ€ ์ด์•ผ๊ธฐํ•˜๋Š” ๋‚ด์šฉ์— ๋Œ€ํ•ด ์‹ค์ œ๋กœ ์•Œ์•„๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.

๋˜ํ•œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์›ํ•˜๋Š” ๊ฒฝ์šฐ ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค ...

@cpuguy83 ์ด๊ฒƒ์€ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์— ์ฑ„ํƒํ•˜๋ ค๊ณ  ํ•˜๋Š” ์šฐ๋ฆฌ์˜ ํ‘œ์ค€ "๋ฒ ์–ด๋ฉ”ํƒˆ" ๊ธฐ๋ณธ ์—ญํ• ์ด๋ฉฐ, ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€๋งŒ ์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œ์—์„œ ๊ท€์ฐฎ๊ฒŒ ํ•  ํ•„์š”์กฐ์ฐจ ์—†์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ํ˜ธ์ŠคํŠธ์—์„œ๋งŒ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?
http://pastebin.com/P3QQxjNQ

Docker๊ฐ€ ๋ฆฌ์†Œ์Šค ๊ณต์œ ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์™„์ „ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค.

@ljsommer ๋”ฐ๋ผ์„œ shm์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ง์Šน์ด๋ฉฐ RUN ๋ช…๋ น ๊ฐ„์—(๋˜๋Š” ์‹ค์ œ๋กœ docker run ) ์ง€์†๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@cpuguy83 ์˜ˆ, ์ปจํ…Œ์ด๋„ˆ ํ˜ธ์ŠคํŠธ ์ž์ฒด์— ๋Œ€ํ•œ ๊ธฐ์ค€์„ ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•œ ๊ฒƒ์„ ์ณค๋‹ค๋Š” ์ ์—์„œ ์ด๊ฒƒ์ด ๋Œ€๋ถ€๋ถ„ ์ œ ์ž˜๋ชป์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์‹œ๊ฐ„์„ ๋‚ด์–ด ๋‹ต๋ณ€ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌ ๋“œ๋ฆฌ๋ฉฐ ๋ถˆ๋งŒ์„ ์ œ๊ธฐํ•˜๊ธฐ ์ „์— ์ž์‹ ์„ ์ ์ ˆํ•˜๊ฒŒ ๊ต์œกํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ์— ๋Œ€ํ•ด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
;)

๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ์ค‘ ์‹คํ–‰/๊ถŒํ•œ์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
์ง€์ •๋œ IP ์ฃผ์†Œ์— ๋Œ€ํ•œ ๋„์ปค ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด IP ํ…Œ์ด๋ธ”์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ RUNP ๋ฐ/๋˜๋Š” "docker build --privileged"๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

FROM ubuntu:latest
MAINTAINER xyz

RUN apt-get -qq update
RUN apt-get -yq install iptables

RUN iptables -t nat -I OUTPUT -p tcp --dport 443 -j DNAT --to-destination 127.0.0.1:8080 && iptables-save > /etc/iptables.rules

์ด Dockerfile์€ ๋‹ค์Œ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š์ง€๋งŒ "docker run --privileged"๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค...

getsockopt failed strangely: Operation not permitted

@malcm , @ RUNP ๊ฐ™์€ ๊ฒƒ์ด ์žˆ๋”๋ผ๋„ iptables ๊ทœ์น™์ด ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์œ ์ง€๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค: RUN x ํ•˜๋ฉด Docker๋Š” x ๋ฅผ ์‹คํ–‰ํ•œ ๋‹ค์Œ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์Šค๋ƒ…์ƒท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ํŒŒ์ผ ์‹œ์Šคํ…œ ์™ธ๋ถ€์˜ ํ•ญ๋ชฉ(์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค, ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”, iptables ๊ทœ์น™, sysctl ์„ค์ •...)์€ Docker ์ด๋ฏธ์ง€์— ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ •์˜ iptables ๊ทœ์น™์„ ์›ํ•˜๋Š” ๊ฒฝ์šฐ ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • --name myapp ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘
  • docker run --net container:myapp --privileged iptablesimage iptables -t nat ... ์™€ ๊ฐ™์ด iptables ๊ทœ์น™์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ, ๊ถŒํ•œ ์žˆ๋Š” ์›์ƒท ์‹œ์ž‘

๋ง์ด ๋ผ?

@jpetazzo : ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด iptables ๊ทœ์น™์ด ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋ฐ์ดํ„ฐ๋กœ ์œ ์ง€๋˜๋„๋ก ๋‘ ๋ฒˆ์งธ ๋ช…๋ น์„ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด --privileged ์˜ต์…˜์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•œ ํ›„ iptables ๊ทœ์น™์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RUN do-something-with-iptables && iptables-save > /etc/iptables.rules

RUNP ๋˜๋Š” "build --privileged"๊ฐ€ ์—†์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ADD iptables.rules /etc/

์˜ˆ, ์ด๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚ด ์ €์žฅ์†Œ์˜ Dockerfile ์˜†์— iptables.rules๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚˜๋Š” RUNP๋ฅผ ์›ํ•œ๋‹ค(๋˜๋Š” ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๊ฐ–๊ณ  ์‹ถ๋‹ค). :)

@jpetazzo @strib
iptables ๋ฌธ์ œ, ๋งˆ์šดํŠธ ๋ฐ ๊ธฐํƒ€ ๊ถŒํ•œ ์žˆ๋Š” ์ž‘์—… ์™ธ์—๋„ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋นŒ๋“œ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ํ•˜๋‚˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

VM ๋ฐฐํฌ ๋ฐ ๋ฒ ์–ด๋ฉ”ํƒˆ ์„ค์น˜๋ฅผ ์œ„ํ•œ ์–ดํ”Œ๋ผ์ด์–ธ์Šค๋ฅผ ๋ฐฐ์†กํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฐจ๋ก€๋กœ ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์–ดํ”Œ๋ผ์ด์–ธ์Šค ๋‚ด๋ถ€์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ…Œ์ŠคํŠธ ์ปจํ…Œ์ด๋„ˆ๋Š” docker-in-docker๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ํ…Œ์ŠคํŠธ ์ด๋ฏธ์ง€์— ๋ฏธ๋ฆฌ ๋กœ๋“œํ•ด์•ผ ํ•˜๋Š” ์„œ๋น„์Šค ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค(ํ…Œ์ŠคํŠธ ์‹œ๊ฐ„์— ์„œ๋น„์Šค ์ด๋ฏธ์ง€๊ฐ€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ๋‹ค์šด๋กœ๋“œ๋˜์ง€ ์•Š๋„๋ก). ์ง€๊ธˆ ๋‹น์žฅ์€ d-in-d๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Dockerfile์„ ๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ ๊ถŒํ•œ ๋ชจ๋“œ์—์„œ d-in-d ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. docker daemon will not start, "docker pull " ๋˜๋Š” "๋„์ปค ๋กœ๋“œ"๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

RHEL7 ํ˜ธ์ŠคํŠธ์—์„œ ์‹คํ–‰ํ•  ๋•Œ ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฃจํŠธ์ธ ๊ฒฝ์šฐ su ๊ฐ€ ์‹คํŒจํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ƒํ•˜๊ฒŒ๋„ ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋ผ๋ฉด su ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์‹คํ–‰ ๋ช…๋ น ํ”Œ๋ž˜๊ทธ --add-cap=SYS_RESOURCE . ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฌธ์ œ๋กœ ์ธํ•ด ๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ๋Š” ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

docker run ๋ฐ docker commit ํ•˜์—ฌ Dockerfiles ์ฃผ์œ„์— +1 ์Šคํฌ๋ฆฝํŒ…ํ•˜๋Š” ๊ฒƒ์€ ์šฐ์Šค๊ฝ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ํฌํ•จ์‹œํ‚ค์‹ญ์‹œ์˜ค.

์ด ๊ธฐ๋Šฅ์˜ ํ•„์š”์„ฑ์— +1. ์ปจํ…Œ์ด๋„ˆ์— ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œํ•œํ•˜๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ์ „์—ญ "๋ณด์•ˆ ์ˆ˜์ค€"์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•ˆ์ „ํ•œ ๊ธฐ๋ณธ๊ฐ’(์˜ค๋Š˜๋‚ ๊ณผ ๊ฐ™์ด)์ด ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๊ฐ€ ์ด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์–ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋” ๋งŽ์€ ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ RUNP ๋ช…๋ น์ด ํฌํ•จ๋œ dockerfiles๋Š” ์ด๋Ÿฌํ•œ ์ „์—ญ ์ œํ•œ์ด ์žˆ๋Š” ์‹œ์Šคํ…œ์—์„œ "์ด Dockerfile์—๋Š” ๋‹ค์Œ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.... ๋นŒ๋“œํ•˜๋ ค๋ฉด"๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ์‹คํ–‰๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋ณด์•ˆ๊ณผ ์œ ์šฉ์„ฑ ์‚ฌ์ด์˜ ๊ท ํ˜•์„ ํ—ˆ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๋ถ€์— ์ด๋ฆ„์ด ์—†๋Š” evli ์ „์šฉ db๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ์—๋„ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
db๋Š” docker์—์„œ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๋ง‰๋Œ€ํ•œ ์–‘์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ --privileged ๋‹จ๊ณ„ ์‹คํ–‰ ๋ฐ ๋ณ„๋„์˜ ์ปค๋ฐ‹ ๋‹จ๊ณ„๊ฐ€ ์žˆ๋Š” 2๋‹จ๊ณ„ ๋นŒ๋“œ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ—ˆ์šฉํ•˜๋„๋ก ๋„์ปค๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. db๊ฐ€ ์†Œ์œ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ๋ฌด์—‡์„ ํ•˜๊ณ  ์‹ถ์€์ง€ ์•Œ์•„๋‚ด๊ธฐ๊ฐ€ ์กฐ๊ธˆ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

+1
์ด ๊ธฐ๋Šฅ์„ ์œ„ํ•ด.
์—ญ์‚ฌ์  ๋ฐ ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๊ฒฝ์šฐ ์ด ์†์ž„์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
https://github.com/docker/docker/issues/12138#issuecomment -90536998
์†์ž„์ˆ˜๋ฅผ ์ง€์ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @cpuguy83

๋‚˜๋„์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์ปค ๋นŒ๋“œ ์ค‘์— cifs ๊ณต์œ ์— ์—ฐ๊ฒฐํ•˜๋ ค๋Š” ์‹œ๋„๋Š” ํŠน๊ถŒ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š๋Š” ํ•œ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์ œ ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” pull ์š”์ฒญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—์„œ ์ง„ํ–‰ ์ƒํ™ฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/docker/docker/issues/12261

์–ด๋–ค ๊ฒƒ์ด ํŠน๊ถŒ ๋ชจ๋“œ๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ์–ด๋–ค ์‹์œผ๋กœ๋“  ํ˜ธ์ŠคํŠธ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ด๋Ÿฌํ•œ ์ˆ˜์ •์€ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ์ง€๋ฅผ ์ด์‹ํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

#13171์ด ๋ณ‘ํ•ฉ๋˜๋ฉด ์ž์‹ ์˜ ๋นŒ๋” ๋กค๋ง์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  --privileged๋ฅผ ํ—ˆ์šฉํ•˜๋ฏ€๋กœ ์ด๊ฒƒ์„ ๋‹ซ์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋‚ด์žฅ๋œ docker build ๊ฐ€ ์ด๊ฒƒ์„ ํ—ˆ์šฉํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ @cpuguy83 , ๋‚ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•œ๋‹ค๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ docker build ๋ฅผ ์™„์ „ํžˆ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ์ถ”๊ฐ€ ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹ค๋ฅธ ํŒจ์น˜๊ฐ€ ์ ์šฉ๋˜๋ฉด ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด ๋‚ด ๊ณ ์œ  ๋ฒ„์ „์˜ docker build (์•„๋งˆ๋„ docker pbuild ?)๋ฅผ ์กฐํ•ฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ์— ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ PR์„ ํ™•์ธํ–ˆ๋Š”๋ฐ ๋ชจ๋‘ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.
BUILD --privileged/--granted ์˜ต์…˜์„ ๋” ์„ธ๋ถ„ํ™”ํ•˜๊ณ  ์ด๋ฏธ์ง€ ๋นŒ๋”/์†Œ์œ ์ž์—๊ฒŒ๋งŒ ์ œํ•œ๋œ ํ˜ธ์ŠคํŠธ ๋ฆฌ์†Œ์Šค์˜ ํŠน์ • ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Dockerfile์—์„œ RUN docker pull ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์†”๋ฃจ์…˜์— ๋Œ€ํ•ด +1์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์‚ฌ๋ก€: ์ด๋ฏธ์ง€ ๋ณ€ํ™˜ ๋ฐ ๋ฌธ์„œ ์ž‘์„ฑ์„ ์œ„ํ•œ ์—ฌ๋Ÿฌ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ ์ถฉ๋Œํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ธํ•ด ์ด๋Ÿฌํ•œ ๋ชจ๋“  ๋„๊ตฌ๋ฅผ ๋‹จ์ผ ์ด๋ฏธ์ง€์— ์„ค์น˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๋„๊ตฌ ์ค‘ ์ผ๋ถ€๋ฅผ ๋ณ„๋„์˜ ์ด๋ฏธ์ง€๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  ๋ชจ๋“  ๋„๊ตฌ๋ฅผ ๋‹จ์ผ ์ด๋ฏธ์ง€, ์ฆ‰ ์ด๋ฏธ์ง€์˜ ์ด๋ฏธ์ง€๋กœ ๋ฐฐํฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‚ด Dockerfile์—์„œ RUN docker pull ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

@cpuguy83 ์ด ๋ฌธ์ œ๊ฐ€ ๋งŒ์กฑ์Šค๋Ÿฝ๊ฒŒ ํ•ด๊ฒฐ๋œ ๊ฒƒ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ ˆ๋Œ€์ ์œผ๋กœ, 100% ๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ /proc/sys/kernel/core_pattern ์“ฐ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ง€๋ฃจํ•œ ์ผ์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ์„ธ๊ณ„์—์„œ๋Š” run ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์ด ๊ถŒํ•œ ์žˆ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์–ด์จŒ๋“  ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ํ—ˆ๋ธŒ๋กœ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋‚ด๊ฐ€ _ever_ ์ƒ์‚ฐํ•œ ์–ด๋–ค Dockerfile ๋„ ์—„๊ฒฉํ•˜๊ฒŒ ์žฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ง€์†์ ์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ๊ณต๊ฐœ ์ €์žฅ์†Œ์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ชฐ๋ž๋‹ค

  1. ๋‚ด ์ด๋ฏธ์ง€์˜ ๊ณต๊ฐœ ์†Œ๋น„๊ฐ€ ์šฐ์„  ์ˆœ์œ„์˜€์Šต๋‹ˆ๋‹ค.
  2. ๊ทธ๋“ค์€ ์žฌํ˜„ ๊ฐ€๋Šฅํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์€ ๋นŒ๋“œ์—์„œ privileged ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ํ˜•ํŽธ์—†๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ _์ง„ํ–‰_ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋Š” ๊ณณ์œผ๋กœ ์ด๋™ํ•˜์—ฌ ํ•ต์‹ฌ ๋นŒ๋“œ ๋„๊ตฌ์—์„œ ์ด๋ฅผ ํ—ˆ์šฉํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฌด์„œ์šด ๋ฉ”์‹œ์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

cc @thaJeztah , ์ด ์ž…์žฅ์— ๊ณต๊ฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

์ด ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด PR์„ ๋งŒ๋“ค์—ˆ์ง€๋งŒ ๊ฑฐ๋ถ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์–ด๋–ค ํ˜•ํƒœ๋กœ๋“  ๊ฑด์ถ•์—…์ž์—๊ฒŒ ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ ํ†ตํ™”๋ฅผ ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด PR ์Šค๋ ˆ๋“œ ์ž์ฒด์—์„œ ๋™์š”ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ RPM์ด --privileged์—์„œ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์‹คํŒจํ•˜๋Š” binmft_misc ๋“ฑ๋ก ์‹œ๋„์ด๋ฏ€๋กœ CentOS์—์„œ ์ด์ „ JDK 1.6 ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Dockerbuild๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ๋น„ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

๋ณต์ œํ•˜๋ ค๋ฉด

Centos5.11์—์„œ
์‹คํ–‰ yum ์„ค์น˜ -y jre-1.6.0_29-fcs

์„ ํƒ์  ํ”Œ๋ž˜๊ทธ๋กœ ๋นŒ๋“œ์˜ ๊ถŒํ•œ ์žˆ๋Š” ๋ช…๋ น ๋ถ€๋ถ„์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ค‘ ํ•˜๋‚˜๋ฅผ POC๋กœ ๋„์ปค์— ์ด์‹ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ ์ ์šฉ๋˜์ง€ ์•Š๊ณ  ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•˜๋Š” IPtables ์„ค์ •์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์— ๋Œ€ํ•ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๋ณ€๊ฒฝ์„ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ปค๋ฐ‹ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ docker ๋นŒ๋“œ์˜ ์žฌ๋ฏธ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด๋Š” ๋นŒ๋“œ์˜ ์ผ๋ถ€์ผ ๋ฟ์ด๋ฉฐ ์ด๋ฏธ ๊ธฐ๋ณธ ๋ฆด๋ฆฌ์Šค์˜ ์ผ๋ถ€์ด๋ฏ€๋กœ ์‰ฝ๊ฒŒ ์ด์‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker๋Š” ๊ถŒํ•œ ์žˆ๋Š” ์˜ต์…˜์ด ์„ค์ •๋œ ์ค‘๊ฐ„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‰ฝ๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@shubhamrajvanshi ์šฐ๋ฆฌ๋Š” ๋ฐ๋ชฌ์—์„œ (๊ทธ๋ฆฌ๊ณ  ํด๋ผ์ด์–ธํŠธ๋กœ) "๋นŒ๋”"๋ฅผ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ์‚ฌ์šฉ์ž ์ •์˜๋ฅผ ์œ„ํ•œ ๋ฌธ์„ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž ์ •์˜ ๋นŒ๋” ๊ตฌํ˜„ ๊ฐ€๋Šฅ ํฌํ•จ). "ํŠน๊ถŒ์ด ์žˆ๋Š”" ๋นŒ๋“œ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ณ ๋ ค๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Š” ๋ฆฌํŒฉํ† ๋ง ํ›„์— ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ฒฐ์ •์ž…๋‹ˆ๋‹ค. (https://github.com/docker/docker/blob/master/ROADMAP.md#122-builder ์ฐธ์กฐ)

@shubhamrajvanshi ์ •๋‹นํ•œ ์ด์œ ๋กœ ๋นŒ๋“œ์—์„œ iptables๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์„ค์ •์ด ๊ณ ์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋นŒ๋“œ์—์„œ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” --privileged๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

@thaJeztah ๋„์›€์ด ๋  ๊ฒƒ
@cpuguy83 ์ด๋ฏธ์ง€์— iptables-persistent ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด๋„

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ทœ์น™์ด ๋””์Šคํฌ์— ์ €์žฅ๋˜์ง€๋งŒ ๋ถˆํ–‰ํžˆ๋„ ์—ฌ์ „ํžˆ ๋‹ค์‹œ ๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

_USER POLL_

_์ด ํ† ๋ก ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์„ ๋•Œ ์•Œ๋ฆผ์„ ๋ฐ›๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์˜ ๊ตฌ๋… ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค._

์•„๋ž˜์— ๋‚˜์—ด๋œ ์‚ฌ๋žŒ๋“ค์€ ๋ฌด์ž‘์œ„ +1๋กœ ๊ท€ํ•˜์˜ ์˜๋ฏธ ์žˆ๋Š” ํ† ๋ก ์— ๊ฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

@karelstriegel

CoreOS์˜ Docker์™€ ํ•จ๊ป˜ nVidia์˜ CUDA ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ ค๋ฉด ์ด๊ฒƒ๋„ ์ •๋ง ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ์ œ๊ณตํ•˜๋Š” ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์€ ์ปค๋„ ์†Œ์Šค์— ๋Œ€ํ•ด ์ปค๋„ ๋ชจ๋“ˆ์„ ๋นŒ๋“œํ•œ ๋‹ค์Œ modprobe๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œํ•  --privileged ์˜ต์…˜ ์—†์ด ์ž‘๋™ํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๋นŒ๋“œ ์‹œ ํ•ญ์ƒ ๊ถŒํ•œ ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

+1
centos7์šฉ Dockerfile์—์„œ mysql ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
๋ฌผ๋ก  entrypoint.sh๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋นŒ๋“œ์™€ ์‹คํ–‰ ๋ชจ๋‘์— -privileged๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋” ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

MySQL ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด --privileged๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ(๋˜๋Š” ์ผ์–ด๋‚˜์•ผ ํ•  ๊ฒƒ)์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์œผ๋ฏ€๋กœ ๋‹ซ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋นŒ๋“œ์—์„œ ๊ถŒํ•œ์„ ํ—ˆ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋นŒ๋”๊ฐ€ ํ˜ธ์ŠคํŠธ์—์„œ ํ•ญ๋ชฉ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๊ฐ€ ํ•ด๋‹น ํ˜ธ์ŠคํŠธ(๋˜๋Š” ์œ ์‚ฌํ•œ ์ˆ˜์ •์ด ์žˆ๋Š” ํ˜ธ์ŠคํŠธ)์—์„œ๋งŒ ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œ์—์„œ ๊ถŒํ•œ์„ ํ—ˆ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋นŒ๋”๊ฐ€ ํ˜ธ์ŠคํŠธ์—์„œ ํ•ญ๋ชฉ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๊ฐ€ ํ•ด๋‹น ํ˜ธ์ŠคํŠธ(๋˜๋Š” ์œ ์‚ฌํ•œ ์ˆ˜์ •์ด ์žˆ๋Š” ํ˜ธ์ŠคํŠธ)์—์„œ๋งŒ ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ chroot ์‚ฌ์šฉ์ž ์‚ฌ๋ก€์— ์ ์šฉ๋ฉ๋‹ˆ๊นŒ?

์ด๋Ÿฐ ๊ฒƒ ์—†์ด dpkg-depcheck -d ./configure ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ(๋˜๋Š” --priviledged ์—†์ด ์‹คํ–‰) ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ํŒŒ์•…ํ•˜๊ฑฐ๋‚˜ ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

dpkg-depcheck -d ./configure
strace: test_ptrace_setoptions_followfork: PTRACE_TRACEME doesn't work: Permission denied
strace: test_ptrace_setoptions_followfork: unexpected exit status 1
Running strace failed (command line:
strace -e trace=open,execve -f -q -o /tmp/depchJNii2o ./configure
devel<strong i="8">@98013910108c</strong>:~/src/cairo-1.14.2$ 

์•ฝ 3๋…„ ๋™์•ˆ 162๊ฐœ์˜ ๋Œ“๊ธ€์ด ๋‹ฌ๋ ธ์œผ๋‹ˆ ์ถฉ๋ถ„ํžˆ ๊ด€์‹ฌ์„ ๊ฐ€์งˆ๋งŒํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ธ์šฉ๋œ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์— ํŠน๊ถŒ ๋ชจ๋“œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ์˜๊ฒฌ์€ ์‚ฌ์‹ค์ด๋ฉฐ, ์ œ ๊ฒฝ์šฐ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋กœ์ปฌ, ์ž„์‹œ, ํƒ์ƒ‰ ๋ฐ/๋˜๋Š” ํŽธ์˜ ๋นŒ๋“œ์— ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๊ธˆ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์†Œ๋“ค์ด ์กฐํ™”๋ฅผ ์ด๋ฃฐ ๋•Œ๊นŒ์ง€ ๊ฒฝ๊ณ ๋ฅผ ๊ฒŒ์‹œํ•˜๊ณ , ๋ช…๋ น์ค„ ๊ฒฝ๊ณ ๋ฅผ ์ธ์‡„ํ•˜๊ณ , ์‚ฌ์šฉ์„ ์š•ํ•˜๊ณ  ๋น„๋‚œํ•˜์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค. ์ด์‹์„ฑ์ด ํ•ญ์ƒ ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ์ฃผ์š” ๊ด€์‹ฌ์‚ฌ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

_USER POLL_

_์—…๋ฐ์ดํŠธ ์•Œ๋ฆผ์„ ๋ฐ›๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์ด ํŽ˜์ด์ง€์˜ _๊ตฌ๋…_ ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค._

๋ฌธ์ œ์— ๋Œ€ํ•ด "+1" ๋˜๋Š” "๋‚˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค" ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์šฐ๋ฆฌ๋Š” ์ž๋™์œผ๋กœ
์Šค๋ ˆ๋“œ๋ฅผ ์งง๊ฒŒ ์œ ์ง€ํ•˜๋ ค๋ฉด ํ•ด๋‹น ์ฃผ์„์„ ์ˆ˜์ง‘ํ•˜์‹ญ์‹œ์˜ค.

์•„๋ž˜ ๋‚˜์—ด๋œ ์‚ฌ๋žŒ๋“ค์ด +1 ๋Œ“๊ธ€์„ ๋‚จ๊ฒจ ์ด ๋ฌธ์ œ์— ์ฐฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

@robeferre

+1

๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— NFS ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ง€๊ธˆ๊นŒ์ง€๋Š” "--privileged=true" ํ”Œ๋ž˜๊ทธ ์—†์ด๋Š” NFS ๊ณต์œ ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์— ๊ฐ€์žฅ ์ข‹์€ ๊ฒฝ์šฐ๋Š” ๊ถŒํ•œ ์žˆ๋Š” ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ•œ์ง€?

+1

Step 19 : RUN lxc-create -t ubuntu.sf -n percise -- -r precise -a i386 -b root
 ---> Running in 4c51b7cf0058
lxc_container: lxccontainer.c: create_run_template: 893 error unsharing mounts
lxc_container: lxccontainer.c: create_run_template: 1084 container creation template for percise failed
lxc_container: lxc_create.c: main: 274 Error creating container percise
The command '/bin/sh -c lxc-create -t ubuntu.sf -n percise -- -r precise -a i386 -b root' returned a non-zero code: 1

๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ docker์˜ gentoo ์‹œ์Šคํ…œ์— gobject-introspection์„ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•˜์ง€๋งŒ ๋‹ค์Œ ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

  • ISE:_do_ptrace: ptrace(PTRACE_TRACEME, ..., 0x000000000000000, 0x0000000000000000): ์ž‘์—…์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์Œ

์ปจํ…Œ์ด๋„ˆ์— ์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•ด๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€๋งŒ ๊ถŒํ•œ ๋ชจ๋“œ(docker run --privileged)๋กœ ์‹œ์ž‘๋œ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹œ๋„ํ•˜๋ฉด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

glibc๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•  ๋•Œ๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋นŒ๋“œ ์ค‘์— ๊ถŒํ•œ ์žˆ๋Š” ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋„์ปค ๋ฒ„์ „ 1.10.1์„ ์‚ฌ์šฉ ์ค‘์ด๊ณ  glibc ๋ฌธ์ œ๊ฐ€ 1.9์—์„œ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „ 1.10์—์„œ๋Š” ๋„คํŠธ์›Œํ‚น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— 32๋น„ํŠธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
--privileged ๋˜๋Š” --security-opt seccomp:unconfined for BUILD -๋Š” ์ •๋ง ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
๋˜๋Š” Dockerfile์˜ ํ•ด๋‹น ์ง€์‹œ๋ฌธ

๋‚˜์—๊ฒŒ์„œ ํฐ +1

๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ '๋งˆ์šดํŠธ' ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด ์ €์—๊ฒŒ๋Š” ์ง„์งœ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธํ•  ์ˆ˜ ์—†๋‹ค๋Š” ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ ํ˜ธ์ŠคํŠธ์— NFS ์„œ๋ฒ„๋ฅผ ์„ค์ •ํ•˜๊ณ  NFS ๊ณต์œ  ๋งˆ์šดํŠธ๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋น„ํŠน๊ถŒ ๋ชจ๋“œ ๋•Œ๋ฌธ์— ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„๋ƒˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋Š” ๋นŒ๋“œ ์ปจํ…์ŠคํŠธ์— ๋ณต์‚ฌํ•˜์ง€ ์•Š๊ณ  ์ด๋ฏธ์ง€์— ๋ช‡ ๊ฐ€์ง€ ํ•ญ๋ชฉ์„ ์„ค์น˜ํ•˜๊ณ  ์„ค์น˜ํ•˜๊ธฐ ์ „์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„ ํƒ์˜ ์—ฌ์ง€๊ฐ€ ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค.

thaJeztah๋Š” 3์›” 10์ผ์— ์ด ๋ฌธ์ œ๋ฅผ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
1.10.2๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ LTTng ๋™์ž‘์˜ ํšŒ๊ท€ #20818 ์ข…๋ฃŒ๋จ

์•„๋‹ˆ์˜ค, ๋‹ซํžˆ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” 1.11.0-0~wily๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ 32๋น„ํŠธ ์ปจํ…Œ์ด๋„ˆ์—์„œ๋Š” 1.10.0 ์ดํ›„๋กœ ์ƒˆ ์ž‘์—…์ด ์ž‘๋™ํ•˜์ง€ ์•Š์ง€๋งŒ 1.9.x๋Š” ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.
-privileged๋งŒ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ด ์Šค๋ ˆ๋“œ์—์„œ๋งŒ 2.5๋…„ ๋™์•ˆ ๊ตฌ๊ฑธํ–ˆ๊ณ  ์‚ฌ๋žŒ๋“ค์ด ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด PR์„ ์ œ์ถœํ–ˆ์Œ์„ ๊ฐ์•ˆํ•  ๋•Œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋ถ„๋ช…ํžˆ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒƒ์ด ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์‚ฌ์‹ค์— ๋†€๋ž์Šต๋‹ˆ๋‹ค.

@ctindel ์— ๋™์˜ rkt๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ์ด์œ  ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

@ctindel ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ์ง€์›ํ•  ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ตฌํ˜„ ์ž์ฒด๋Š” ๋‹ค์†Œ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค(์‹ฌ์ง€์–ด ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง์ ‘ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค). ๊ทธ๊ฑด ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

--privileged ๋Š” ํƒฑํฌ์ด๋ฉฐ ๋นŒ๋“œ ์‹œ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•˜๋ฉฐ ์ด๋ฏธ์ง€ ์ด์‹์„ฑ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

๋ธŒ๋ผ์ด์–ธ,

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด ์ €์—๊ฒŒ๋„ ๊ณต์œ ํ•ด ์ฃผ์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ๊ฒƒ
์— ๊ฐ์‚ฌํ•˜๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”
์Šˆ๋ฐค ๋ผ์ฆˆ๋ฐ˜์‹œ
669-300-8346

2016๋…„ 5์›” 2์ผ ์›”์š”์ผ ์˜คํ›„ 2์‹œ 30๋ถ„์— Brian Goff [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@ctindel https://github.com/ctindel ์•„์ง ์ค€๋น„๊ฐ€ ์•ˆ ๋œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.
๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„ ์ž์ฒด๋Š” ๋‹ค์†Œ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค(๋‚˜๋Š” ์‹ฌ์ง€์–ด
์šฐ๋ฆฌ๊ฐ€ ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง์ ‘ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค), ๊ทธ๊ฒƒ์€ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

--privileged๋Š” ํƒฑํฌ์ด๋ฉฐ ๋นŒ๋“œ ์‹œ ์ด๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฏธ์ง€ ์ด์‹์„ฑ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/docker/docker/issues/1916#issuecomment -216369957

ํœด๋Œ€์„ฑ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ์‹œ ๊ถŒํ•œ ์žˆ๋Š” ์ž‘์—…์ด ์ด์‹์„ฑ์— ์–ด๋–ค ์˜ํ–ฅ์„ ์ค๋‹ˆ๊นŒ? ์ œ ๋ง์€, ๊ถŒํ•œ์ด ์žˆ๋“  ์—†๋“  ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํœด๋Œ€์šฉ์ด ์•„๋‹Œ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์–ด๋ ต์ง€๋Š” ์•Š์ง€๋งŒ ๊ถŒํ•œ์ด ์žˆ๋Š” ์ž‘์—…์œผ๋กœ ๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ด์‹์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํœด๋Œ€์šฉ์ด์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ปจํ…Œ์ด๋„ˆ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์„ฑ๋˜๊ณ  ์ผ๋ถ€๋Š” ๋‚ด๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠน๊ถŒ ๋ชจ๋“œ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ์•ฑ์˜ ์ด์‹์„ฑ ๋ฌธ์ œ๋Š” ์•ฑ ์ž์ฒด์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ถŒํ•œ ๋ชจ๋“œ๋Š” ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ์•ฑ์ด ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ์ตœํ›„์˜ ์ˆ˜๋‹จ์ž…๋‹ˆ๋‹ค.

ํŠน๊ถŒ ๋ชจ๋“œ ๊ตฌ์ถ•์ด ํ•„์š”ํ•œ ์ด๋ฏธ์ง€ ๋นŒ๋”๋Š” ๊ทธ๋Ÿฌํ•œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํŠน๊ถŒ ๋ชจ๋“œ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

ํŠน๊ถŒ ๋ชจ๋“œ๋กœ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ์€ ์ด์‹์„ฑ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ๋ถ„๋ช…ํžˆ ๋ฌธ์„œํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Outlook Mo ๋‹ด์ฆ™ ์—์„œ

2016๋…„ 5์›” 2์ผ ์›”์š”์ผ ์˜คํ›„ 2:53 -0700์— "Trevor Blackwell" < [email protected] [email protected] >์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

ํœด๋Œ€์„ฑ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ์‹œ ๊ถŒํ•œ ์žˆ๋Š” ์ž‘์—…์ด ์ด์‹์„ฑ์— ์–ด๋–ค ์˜ํ–ฅ์„ ์ค๋‹ˆ๊นŒ? ์ œ ๋ง์€, ๊ถŒํ•œ์ด ์žˆ๋“  ์—†๋“  ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํœด๋Œ€์šฉ์ด ์•„๋‹Œ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์–ด๋ ต์ง€๋Š” ์•Š์ง€๋งŒ ๊ถŒํ•œ์ด ์žˆ๋Š” ์ž‘์—…์œผ๋กœ ๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ด์‹์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์— ๊ฐ€์ž…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/docker/docker/issues/1916#issuecomment -216375159์—์„œ ํ™•์ธํ•˜์„ธ์š”.

@tlbtlbtlb ํŠน๊ถŒ ๋ชจ๋“œ๋Š” ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ ์ „์ฒด ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ shmmax ๋˜๋Š” ํ›จ์”ฌ ๋” ๋‚˜์œ ๊ฒƒ๊ณผ ๊ฐ™์€ ๋‹จ์ˆœํ•œ ๊ฒƒ์„ ์„ค์ •ํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‚˜๋Š” ์ด๊ฒƒ์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” 1์ผ์ฐจ์— ์ด๋Ÿฌํ•œ ์ผ์ด ์ผ์–ด๋‚  ๊ฒƒ์ž„์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

@davidl-zend "ํœด๋Œ€์šฉ"์€ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•œ ๊ธฐ๊ณ„์—์„œ ๋‹ค๋ฅธ ๊ธฐ๊ณ„๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

@cpuguy83 ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ง€์ ํ–ˆ๋“ฏ์ด ์ด๋ฏธ์ง€ ์ด์‹์„ฑ์„ ๊นจ๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ถŒํ•œ ์žˆ๋Š” ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ์œผ๋กœ์จ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์€ Dockerfile์—์„œ ๋ถ€๋ถ„์ ์œผ๋กœ ๋นŒ๋“œํ•œ ๋‹ค์Œ ์ˆ˜๋™์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์ปค๋ฐ‹์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ Dockerfile์—์„œ ๋ถ€๋ถ„์ ์œผ๋กœ ๋นŒ๋“œํ•˜๊ณ  ์™„๋ฃŒํ•˜๋Š” ๋‘ ๋‹จ๊ณ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ–๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ฒ˜์Œ ์‹คํ–‰๋  ๋•Œ ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋œ ์„ค์น˜๋Š” ์งœ์ฆ๋‚˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ๋ถ€ํŒ…์ด ์ž‘๋™ํ•˜๋Š” ๋ฐ ๋ช‡ ๋ถ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ํฌ๋Ÿผ์—์„œ ๋ณธ ์˜๊ฒฌ์„ ๊ฐ์•ˆํ•  ๋•Œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์˜ค๋Š˜๋‚  ์กด์žฌํ•˜๋Š” ๋„์ปค ์ œํ•œ ์‚ฌํ•ญ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฏธ ์ •ํ™•ํžˆ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์ด์‹์„ฑ์ด ์ˆ˜์‹ญ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์†์ƒ๋œ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์žˆ์œผ๋ฉด ์ด ํŠน์ • ํ’์ฐจ์— ๋Œ€ํ•ด ๊ธฐ์šธ์–ด์ง€๋Š” ๊ฒƒ์ด ๋ฌด์Šจ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ถ„๋ช…ํžˆ ๋” ์ด์ƒ ๋„์ปค ํ—ˆ๋ธŒ๋‚˜ travis-ci๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋„๋ก ํ•  ์ˆ˜ ์—†์ง€๋งŒ ๊ถŒํ•œ ๋ชจ๋“œ๋กœ ๋นŒ๋“œํ•ด์•ผ ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ์–ด์จŒ๋“  ์ดํ•ดํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ctindel ์ด๋ฏธ์ง€ ์ด์‹์„ฑ์ด ๊นจ์ง€๋Š” ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ์ผ์„ ํ•˜๋Š” ๊ฒƒ์ด _์ •ํ™•ํžˆ_ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
์ด๋ฏธ์ง€์— ์žˆ์–ด์„œ๋Š” ์•ˆ ๋˜๋Š” ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ์ž…๋‹ˆ๋‹ค.

@cpuguy83 ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ Dockerfile์—์„œ ๋ถ€๋ถ„ ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ , ๊ถŒํ•œ ๋ชจ๋“œ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํšŒ์ „ํ•˜๊ณ , ๋” ๋งŽ์€ ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ, ๋„์ปค ์ปค๋ฐ‹์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋Œ€ํ•ด ๋…ผ์Ÿํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ํŠน๊ถŒ ๋ชจ๋“œ์—์„œ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ๊ณผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฆ…๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์ด ์˜ค๋Š˜๋‚  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ํ•˜๊ณ  ์žˆ๋Š” ์ผ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ป”๋ป”์Šค๋Ÿฝ๊ฒŒ ๋งํ•˜๋ ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์‚ฌ๋žŒ๋“ค์ด ์–ด์ƒ‰ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ผํ•˜๊ณ  ์žˆ๋Š” ํ”Œ๋žซํผ์˜ ์‹ฌ๊ฐํ•œ ํ•œ๊ณ„๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์‹œ์Šคํ…œ์— ํŠน์ • ๊ธฐ๋Šฅ์ด ์—†์œผ๋ฉด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์—†๋Š” ํƒ€์‚ฌ ๋ฐ๋น„์•ˆ ํŒจํ‚ค์ง€(๋ฐ ์•„๋งˆ๋„ RPM)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ๋น„์•ˆ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์€ "๋Ÿฐํƒ€์ž„ ์„ค์ •"์ด ์•„๋‹ˆ๋ผ ์„ค์น˜ ๊ณผ์ •์˜ ์ด์ƒํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

@ctindel ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ „ํ˜€ ํ† ๋ก ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฐจ์ด์ ์€ ํ–‰๋™์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฐจ์ด๊ฐ€ ์—†์—ˆ๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ์ด ํ† ๋ก ์„ ํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ €์—๊ฒŒ ์ €๋Š” ๋™์˜ํ•˜๋Š” ์„ฑ์ธ์ด๊ณ  ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ๊ฑธ์ณ packstack ์ด๋ฏธ์ง€๋ฅผ ๋กค๋งํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ Dockerfile ํญํƒ„์œผ๋กœ ๋นŒ๋“œํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋„์ปค ์ œํ•œ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์†์ž„์ˆ˜๋ฅผ ์จ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@ cpuguy83 ์‚ฌ๋žŒ๋“ค์ด ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š” ์ด ์˜ต์…˜์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Œ์œผ๋กœ์จ ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€ (์ด ์Šค๋ ˆ๋“œ์˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค) ์—ฌ์ „ํžˆ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์ปค๋ฐ‹ ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜๋Š” ์ˆœ๊ฐ„ ๋‹น์‹ ์ด ๋…ผ์Ÿํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ์ผ์ข…์˜ ์•„ํ‚คํ…์ฒ˜ ์ˆœ์ˆ˜์„ฑ(๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋” ๋‚˜์€ ๋‹จ์–ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค)์ด ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๊ฒƒ์ด ๊ถŒํ•œ ์žˆ๋Š” ๋นŒ๋“œ ๋˜๋Š” ๊ถŒํ•œ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ๋„์ปค ์ปค๋ฐ‹์„ ํ†ตํ•œ Dockerfile.

ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ๋”์ฐํ•œ PITA์ด๊ณ  Dockerfile์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•˜๋Š” ํ˜„์žฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•œ ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ ๋งค์šฐ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ, ๋‹น์‹ ์€ ๋‚ด ์งˆ๋ฌธ์— ๋Œ€๋‹ตํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํƒ€์‚ฌ ๋ฐ๋น„์•ˆ ํŒจํ‚ค์ง€(๋˜๋Š” packstack)์˜ ๊ฐ„๋‹จํ•œ ์„ค์น˜๋ฅผ "๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ"์œผ๋กœ ๊ฐ„์ฃผํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@ctindel ์ด์‹์„ฑ. ์–ด๋–ค ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ด์„œ ์ง€์›๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ build ์— ํฌํ•จํ•˜์—ฌ ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์ง€์›๋œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ํ˜ธ์ŠคํŠธ ๊ฐ„์— ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ด๋ฏธ์ง€ ๋ฌธ์ œ๋กœ ๊ฐ€๋“ ์ฐจ _ํ• _ ๊ฒƒ์ž…๋‹ˆ๋‹ค... ์ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Docker์˜ ๋ชจ๋“  ์ด์œ ๋ฅผ ๋ฌดํšจํ™”ํ•ฉ๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด --privileged ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํŒจํ‚ค์ง€๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜์—๋Š” --privileged ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ... ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์„ค์น˜ ์ž์ฒด๊ฐ€ ์ด์‹ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๋‹ค๋Š” ํ‘œ์‹œ์ž…๋‹ˆ๋‹ค(ํ˜ธ์ŠคํŠธ์—์„œ ๋ณ€๊ฒฝํ•ด์•ผ ํ•จ)... --privileged ์—†์ด ์ปจํ…Œ์ด๋„ˆ์—์„œ docker๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค(์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋ฉฐ --privileged ์—†์ด ๋ฌธ์ œ ์—†์ด ์›ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Œ).

๊ทธ๋Ÿฌ๋‚˜ ๋„์ปค ์ปค๋ฐ‹์„ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์ง€์›๋œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค!

์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ง€์›๋˜์ง€ ์•Š๋Š” ์ด๋ฏธ์ง€์— ๋Œ€ํ•ด ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ฐœ์ธ์ ์œผ๋กœ ๋ถˆ๋งŒ์„ ์ œ๊ธฐํ• ๊นŒ๋ด ๊ฑฑ์ •ํ•ด์„œ ์ด ์ œํ’ˆ์˜ ํ•œ๊ณ„๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ์ž‘์—…(์—ฌ๊ธฐ์„œ ๊ตฌ์„ฑ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜์ง€๋„ ์•Š์Œ)์ด "๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ" ์ž‘์—…์ธ ์ด์œ ์— ๋Œ€ํ•œ ๋‚ด ์งˆ๋ฌธ์— ์—ฌ์ „ํžˆ ๋Œ€๋‹ตํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. "ํœด๋Œ€์„ฑ"์ด๋ผ๋Š” ๋ง์€ ์•„๋ฌด ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋„์ปค์— ๋Œ€ํ•ด x86_64์— ํŠน์ •ํ•œ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ํŠน์ • CPU ์•„ํ‚คํ…์ฒ˜์šฉ์œผ๋กœ ๋นŒ๋“œ๋œ ๋„์ปค ์ด๋ฏธ์ง€๊ฐ€ ๊ฒฐ๊ตญ์—๋Š” ์—†์„๊นŒ์š”? ๋˜ํ•œ ํœด๋Œ€๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๋‚ด ๋ง์€ ์–ด๋–ป๊ฒŒ ๋“  ํ•ญ์ƒ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ ์™€์„œ ๋‹ค๋ฅธ ์ˆ˜๋งŽ์€ ๋ณ€์ˆ˜์— ๊ด€๊ณ„์—†์ด ์ „ ์„ธ๊ณ„์˜ ๋ชจ๋“  ๋„์ปค ํ˜ธ์ŠคํŠธ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š”์ด ์ „์ฒด ์•„์ด๋””์–ด๋Š” ์–ด์จŒ๋“  ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋ฏ€๋กœ ํ‘ธ์‹œํ•ด์•ผ ํ•  ํ•„์š”์„ฑ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ์š”๊ตฌํ•˜๋Š” ์ด ํŠน์ • ๊ธฐ๋Šฅ์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

BTW, ์—ฌ๊ธฐ์—์„œ ๊ท€ํ•˜์˜ ๋‹ต๋ณ€๊ณผ ์ง€์†์ ์ธ ์ฐธ์—ฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด์Šˆ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฌด์‹œ๋˜๋Š” ๋‹ค๋ฅธ ๋งŽ์€ github ํ”„๋กœ์ ํŠธ!

docker run --privileged with docker commit ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์— ๋Œ€ํ•œ ์š”์ ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๋‘ ํšŒ์‚ฌ์— ๋Œ€ํ•ด ๊ทธ๋Ÿฐ ์†”๋ฃจ์…˜์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๋Ÿฐ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ด๊ณ  ๊ทธ๊ฒƒ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋”์ฐํ•˜๊ณ  ๋”์ฐํ•œ ์ผ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ํ–‰๋™ํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ง€์˜ฅ, --privileged ๋กœ ๋นŒ๋“œ๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ๋„ˆ๋ฌด ๋‘๋ ค์šฐ๋ฉด ๋ฌธ์„œ์— ๋ช…ํ™•ํ•˜๊ฒŒ ๋ช…์‹œํ•˜์—ฌ ์‚ฌ๋žŒ๋“ค์ด ์ž์‹ ์˜ ์œ„ํ—˜์„ ๊ฐ์ˆ˜ํ•˜๊ณ  ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Œ์„ ์™„๋ฒฝํ•˜๊ฒŒ ์ธ์‹ํ•˜๋„๋ก ํ•˜์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ์ง€๊ธˆ๊นŒ์ง€ ์–ด๋–ค ๋ถ€์ •์ ์ธ ์˜ํ–ฅ๋„ ๋ณด์ง€ ๋ชปํ–ˆ์ง€๋งŒ. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์‹œ ์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ๋ฐฐํฌํŒ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@PerilousApricot ์‹ค์ œ๋กœ packstack์— ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ์›์ธ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํŠน์ • ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ฑฐ๋‚˜ ์—…์ŠคํŠธ๋ฆผ์—์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์„ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜ธ์ŠคํŠธ ์„œ๋ฒ„์— ๋Œ€ํ•œ ์™„์ „ํ•œ ๋ฌด์ œํ•œ ๋ฃจํŠธ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” --privileged ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ํŠน์ • ๋นŒ๋“œ ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์‹ค์ œ๋กœ ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๋ฃจํŠธ ์•ก์„ธ์Šค๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@justincormack init ์Šคํฌ๋ฆฝํŠธ๊ฐ€ tmpfs ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๋งˆ์šดํŠธํ•ด์•ผ ํ•˜๋Š” ์ž์ฒด ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ํƒ€์‚ฌ ํŒจํ‚ค์ง€(์ฆ‰, ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ)์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‚ด ๋ง์€ --privileged๋ฅผ ๋ฌด์‹œํ•˜๋”๋ผ๋„ ๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ --cap-add ๋˜๋Š” --security-opt apparmor:unconfined๋ฅผ ์ˆ˜ํ–‰ํ•  ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

@ctindel ์„ค์น˜ ์‹œ tmpfs๋ฅผ ๋งˆ์šดํŠธํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„ ์‹œ tmpfs๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ›Œ๋ฅญํ•˜์ง€๋งŒ ์„ค์น˜ ์‹œ์—๋Š” ์ •ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@cpuguy83 ์ƒ์—…์ ์ธ ์ œ 3์ž๋กœ๋ถ€ํ„ฐ ์˜จ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—

์ด๊ฒƒ์ด ์ด ์ „์ฒด ํ† ๋ก ์˜ ์š”์ ์ž…๋‹ˆ๋‹ค. "์ž˜๋ชปํ•˜๋Š”" ์‚ฌ๋žŒ๋“ค์˜ ์ง€์› ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ ํ•™์  ์šฐ๋ ค ๋•Œ๋ฌธ์— ๋„์ปค ์‚ฌ์šฉ์„ ํ›จ์”ฌ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ์ž„์˜์˜ ์ œํ•œ์„ ๋ถ€๊ณผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ์šด์˜ ์ฒด์ œ๊ฐ€ ์‚ฌ๋žŒ๋“ค์ด ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„๋ง ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž˜๋ชปํ•˜๋ฉด ์šฐ์„  ์ˆœ์œ„๊ฐ€ ์—ญ์ „๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋˜๋Š” ์ž˜๋ชป ์‚ฌ์šฉํ•˜๋ฉด ์—„์ง€์†๊ฐ€๋ฝ์„ ์น  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๋„ ๋ง์น˜๋ฅผ ๋งŒ๋“ค์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๋ฒˆ ๋งํ–ˆ๋“ฏ์ด docker๋Š” ์ด๋ฏธ commit ๋ช…๋ น์„ ํ†ตํ•ด ์ด๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ๊ณ ํ†ต์Šค๋Ÿฌ์šธ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์›ํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๊ณ , ๋™์˜ํ•œ ์„ฑ์ธ์€ ์ œํ•œ ์‚ฌํ•ญ์„ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ ๋ˆˆ์„ ํฌ๊ฒŒ ๋œจ๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ctindel ๋”๊ตฐ๋‹ค๋‚˜ 50km ๋ฐ˜๊ฒฝ์— ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์„ ์ฃฝ์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ํ•ตํญํƒ„์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์„ค์น˜ํ•˜๋Š” ๋™์•ˆ tmpfs๋ฅผ ๋กœ๋“œํ•ด์•ผ ํ•˜๋Š” ์ด ํŒจํ‚ค์ง€์˜ ํŠน์ง•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์„ค์น˜๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์ผ๋ถ€ ์•„์นด์ด๋ธŒ ํ˜•์‹์—์„œ rootfs๋กœ ํŒŒ์ผ์„ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฌด์—‡์ด๋“  ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋นŒ๋“œ ์‹œ ๊ถŒํ•œ ์žˆ๋Š” ๊ถŒํ•œ์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์„ค์น˜ ์‹œ tmpfs๋ฅผ ๋งˆ์šดํŠธํ•˜์ง€ ์•Š๋„๋ก ์—…์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๊ณ  ์•ˆ์ „ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

Docker๋Š” ์›Œํฌ๋กœ๋“œ ์ด์‹์„ฑ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋นŒ๋“œ์— ๋Œ€ํ•œ ํŠน๊ถŒ(๋˜๋Š” ์ถ”๊ฐ€ ๊ถŒํ•œ, ๋ณด์•ˆ ํ”„๋กœํ•„ ์กฐ์ • ๋“ฑ)์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ๊ทผ๋ณธ์ ์œผ๋กœ ์ค‘๋‹จ๋˜๋ฉฐ ์˜ค๋Š˜๋‚  ์šฐ๋ฆฌ๊ฐ€ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ๋Š” ์‚ฌํ•ญ์ด ์•„๋‹™๋‹ˆ๋‹ค.

commit ๋ฐ build ๋Š” ๋งค์šฐ ๋‹ค๋ฅธ ๋‘ ๊ฐ€์ง€์ด๋ฉฐ ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ด์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ๋ฐฉ๋ฒ•์œผ๋กœ๋„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

FROM python

ENV PACKSTACK_VERSION 7.0.1
RUN cd /opt && git clone https://github.com/openstack/packstack.git \
  && cd packstack \
  && git checkout $PACKSTACK_VERSION \
  && rm -rf .git \
  && python setup.py install

๊ถŒํ•œ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฒˆ์˜์˜ ๊ตํšŒ.
์–ธ์  ๊ฐ€๋Š” "๊ฐ•์ œ" ์ด์‹์„ฑ์ด ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ฃฝ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.
๋„ˆ๋ฌด ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์• ๋งคํ•œ ์ด์‹์„ฑ ๋•Œ๋ฌธ์— ๊ฑฐ๋ถ€๋˜๊ณ  ์žˆ๊ณ , ๊ทธ๊ฒƒ ๋•Œ๋ฌธ์— ๋งŽ์€ ์ง„์ „์ด ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค .....
์–ธ์  ๊ฐ€ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ํฌํฌํ•˜๊ณ  ์ด์‹์„ฑ์„ ์„ ํƒ ์‚ฌํ•ญ์œผ๋กœ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฟˆ ... ๊ฟˆ .... ์•„๋ฉ˜.

๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆ„๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์„ฑ๋Šฅ์„ ์œ„ํ•ด tmpfs๋ฅผ ๋งˆ์šดํŠธํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ๊ถŒํ•œ์ด ์žˆ๋Š” ์ž‘์—…์„ ๊ฒฝ์†”ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ. ์ด๋Ÿฌํ•œ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์€ ์‰ฝ๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€๊นŒ์šด ์‹œ์ผ ๋‚ด์— ํ•ด๊ฒฐ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ).

์ด ๊ฒฝ์šฐ Docker๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์„ ํ‘ธ์‹œ๋ฐฑํ•˜๋Š” ๊ฒƒ์ด ์œ ํšจํ•œ ์ฒ ํ•™์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์—๋Š” Dockerfile์„ ์กฐ๊ธˆ ๋” ๊ธธ๊ฒŒ ๋งŒ๋“œ๋Š” ์ผ์ข…์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. GPU ๋“œ๋ผ์ด๋ฒ„์šฉ ์ปค๋„ ๋ชจ๋“ˆ ์„ค์น˜์™€ ๊ฐ™์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ถŒํ•œ ์žˆ๋Š” ์ž‘์—…์— ์˜์กดํ•˜๋Š” ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ. ์ด๊ฒƒ๋“ค์€ ๋˜ํ•œ ๊ทผ๋ณธ์ ์œผ๋กœ ํœด๋Œ€๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Mac์šฉ docker-machine์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ Docker ํ™˜๊ฒฝ์ด ์†์ƒ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Mac์—์„œ๋Š” docker-machine์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ˜ธํ™˜๋˜๋Š” ๋Œ€์ƒ ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์—์„œ๋งŒ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ํ˜ธ์ŠคํŠธ OS(CoreOS)์— nVidia GPU ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด์–ด์„œ ํ˜ธ์ŠคํŠธ OS์— ์ง์ ‘ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์–ด๋Š ์ชฝ์ด๋“  ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์˜ ๋ฏธ๋•์„ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ์ฐพ์•„์˜จ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์„ ๋ฐ”๊พธ๊ฒŒ ๋งŒ๋“  ๊ฒƒ์€ ๋จผ์ € ๋‚ด ์ฝ”๋“œ๋ฅผ Ubuntu ์ƒ์ž์— ๋ฐ€์–ด ๋„ฃ๊ณ  ๊ฑฐ๊ธฐ์—์„œ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค docker-machine์„ ์‚ฌ์šฉํ•˜์—ฌ ๋žฉํ†ฑ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ํŽธ๋ฆฌํ•จ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@tlbtlbtlb ๋ฌด์Šจ "๋•"์„ ๋ง์”€ํ•˜์‹œ๋Š”์ง€ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒฝ๋ฐ•ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ํ•œ ํ™˜๊ฒฝ์—์„œ๋Š” ์‹คํ–‰๋˜์ง€๋งŒ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ์ˆ˜๋งŽ์€ ๋„์ปค ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด, linux->linux์—์„œ mongodb ์ปจํ…Œ์ด๋„ˆ๋กœ ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. mmapv1 ์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ mmap ํ•ญ๋ชฉ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ฑด๋ฌผ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๋„์ปค ์ด๋ฏธ์ง€๊ฐ€ "์ด์‹ ๊ฐ€๋Šฅ"ํ•˜๊ณ  "์–ด๋””์„œ๋‚˜ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค"๋Š” ์ƒ๊ฐ์€ ์ด ์‹œ์ ์—์„œ ์™„์ „ํžˆ ๋„Œ์„ผ์Šค์ž…๋‹ˆ๋‹ค. ์•„๋ฌด๋ฐ๋„ ๋‹ฌ๋ฆด ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด "์–ด๋””์„œ๋“  ์ง€์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค"๋Š” ๋ง์ด ๋ฌด์Šจ ๋ฏธ๋•์ด๊ฒ ์Šต๋‹ˆ๊นŒ?

์š”์ ์€ mongodb ์ด๋ฏธ์ง€๊ฐ€ ๋ชจ๋“  ๊ณณ์—์„œ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ ๋‹ค๋ฅธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

Docker์—๋Š” ์ด์‹ ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ๊ณผ ์ด์‹ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ์ด ๋งค์šฐ ๊ตฌ์ฒด์ ์ด๊ณ  ์žฅ์—์„œ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์–ด๋–ค๊ฐ€์š” ?
๋‚ด nginx ๊ตฌ์„ฑ ํ™•์ธ ํŒจ์Šค์— ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ๋‚ด ์‹ค์ œ IP๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด Dockerfile์ž…๋‹ˆ๋‹ค.

FROM ubuntu:14.04.4

RUN apt-get update
RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:nginx/stable
RUN apt-get update
RUN apt-get install -y nginx-full vim
RUN ifconfig lo:0 192.168.168.70 netmask 255.255.255.0 up
RUN ifconfig lo:1 192.168.168.57 netmask 255.255.255.0 up
RUN ifconfig lo:2 192.168.168.58 netmask 255.255.255.0 up

ADD . /etc/nginx

โžœ  nginx git:(ha-node-01) โœ— docker build -t nginx4test .
Sending build context to Docker daemon 976.4 kB
Step 1 : FROM ubuntu:14.04.4
 ---> 90d5884b1ee0
Step 2 : RUN apt-get update
 ---> Using cache
 ---> eea42cb6135d
Step 3 : RUN apt-get install -y software-properties-common
 ---> Using cache
 ---> 9db86ab17850
Step 4 : RUN add-apt-repository ppa:nginx/stable
 ---> Using cache
 ---> 5ed2266a93a9
Step 5 : RUN apt-get update
 ---> Using cache
 ---> 09fcfdc1fed3
Step 6 : RUN apt-get install -y nginx-full vim
 ---> Using cache
 ---> cc0c1662e009
Step 7 : RUN ifconfig lo:0 192.168.168.70 netmask 255.255.255.0 up
 ---> Running in 5d962ec4e35d
SIOCSIFADDR: Operation not permitted
SIOCSIFFLAGS: Operation not permitted
SIOCSIFNETMASK: Operation not permitted
SIOCSIFFLAGS: Operation not permitted
The command '/bin/sh -c ifconfig lo:0 192.168.168.70 netmask 255.255.255.0 up' returned a non-zero code: 255

๊ถŒํ•œ ์˜ต์…˜์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ฃจํ”„๋ฐฑ ์ธํ„ฐํŽ˜์ด์Šค์— IP๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ถ”๊ฐ€ํ•  ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•˜๋‚˜ ๋” ์žˆ์Šต๋‹ˆ๋‹ค.

@cpuguy83 ๋‚ด Dockderfile ์— RUN ํ•˜๊ณ  ์‹ถ์€ iptable ํ•ญ๋ชฉ์ด ์•ฝ 20์ค„ ์ •๋„ ์žˆ์ง€๋งŒ --cap-add=NET_ADMIN ๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ช…๋ น์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ๋žŒ๊ณผ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ปดํ“จํ„ฐ(์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‚ด๋ถ€ ์•ฑ์„ ์‹คํ–‰ํ•จ)์— ๊ด€๊ณ„์—†์ด ๋ฐœ์ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ„์—์„œ ๋…ผ์˜ํ•œ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์–ด๋””/์–ด๋–ป๊ฒŒ ์ œ์•ˆํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@MatthewHerbst ๋ถˆํ–‰ํžˆ๋„ iptables ๊ทœ์น™์€ ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ ์ง€์†๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ง€์†๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@cpuguy83 ์ €๋Š” centos:6 ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ run /sbin/service iptables save ์„ ์‹คํ–‰ํ•˜์—ฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๊ทœ์น™์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค์ด iptables-persistent ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด Ubuntu์™€ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์—์„œ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ํŒŒ์ผ์— ๋Œ€ํ•œ iptables ๊ทœ์น™์„ ์ƒ์„ฑํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
์‹ค์ œ๋กœ ์ ์šฉํ•˜์‹ญ์‹œ์˜ค. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋„คํŠธ์›Œํฌ ์ƒํ™ฉ์€
๋งค์šฐ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋Ÿฐํƒ€์ž„์— ๊ทœ์น™์„ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํ˜ธ์ŠคํŠธ๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ์ˆ˜ ์žˆ์Œ).

2016๋…„ 5์›” 16์ผ 16:03์— "Matthew Herbst" ์•Œ๋ฆผ @github.com์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

@ cpuguy83 ์ €๋Š” CentOS๋ฅผ ์‚ฌ์šฉ
ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๊ทœ์น™์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด ๋น„์Šทํ•˜๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.
iptables-persistent ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•œ Ubuntu ๋ฐ ๊ธฐํƒ€ ๊ธฐ๋Šฅ.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.

@justincormack ์™œ ๊ทธ ์ƒ๊ฐ์„ ๋ชปํ–ˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์–ด! ๊ฐ์‚ฌ ํ•ด์š”!

docker service ์‚ฌ์šฉํ•  ๋•Œ ๊ถŒํ•œ์ด ํ•„์š”ํ•œ ๋ช…๋ น์„ ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋ช‡ ๋Œ€์˜ ์ปดํ“จํ„ฐ์— ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์„ค์ •ํ•ด์•ผ ํ•˜์ง€๋งŒ ๋ถˆํ–‰ํžˆ๋„ ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@nostrebor ๋Š” ์ด ๊ณต๊ฐœ ๋ฌธ์ œ์™€ ๋งค์šฐ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.
์„œ๋น„์Šค๋ฅผ 1:1๋กœ ๋ณต์‚ฌํ•˜๋Š” ๋Œ€์‹  ์„œ๋น„์Šค์— ์–ด๋–ค ์˜ต์…˜์ด ์žˆ์–ด์•ผ ํ•˜๋Š”์ง€ ํ‰๊ฐ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน๊ถŒ ๋ชจ๋“œ๋Š” ์„œ๋น„์Šค์— ๋Œ€ํ•ด 1.12์— ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์„ค์น˜๋ฅผ ์œ„ํ•ด ๋ฌด์–ธ๊ฐ€๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š” ๋„์ปค ๋นŒ๋“œ๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์žˆ์ง€๋งŒ CVMFS ๋„คํŠธ์›Œํฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์กด์žฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ์ปดํŒŒ์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  --privileged๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  CVMFS๋ฅผ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ Dockerfile์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „ํ˜€ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@cpuguy83 @tlbtlbtlb ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ถŒํ•œ ์žˆ๋Š” ๋™์ž‘์— ์˜์กดํ•˜๋Š” '์ธ์Šคํ†จ๋Ÿฌ'์˜ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋‚ด๊ฐ€ '์‚ฌ์†Œํ•œ ์‚ฌ์šฉ'์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋„คํŠธ์›Œํฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฒฝ์šฐ ์„ค์น˜๋Š” ๋‹จ์ˆœํžˆ ์ผ๋ถ€ ์•„์นด์ด๋ธŒ์—์„œ ํŒŒ์ผ์„ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๋งˆ์šดํŠธํ•˜๋Š” ๊ฒƒ์ด ์ด์‹์„ฑ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. (์šฐ๋ฆฌ์˜ ๋ชจ๋“  ๋Œ€์ƒ ํ™˜๊ฒฝ์€ ์ด ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ์—๋„ ์—ฐ๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๋‹ค๋ฅธ ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.)

๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‹œ๋„ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ํ˜ธ์ŠคํŠธ์— CVMFS๋ฅผ ๋งˆ์šดํŠธํ•˜๊ณ  ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ปจํ…Œ์ด๋„ˆ ๋“ฑ๊ณผ ๊ณต์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์ด ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์™ธ๋ถ€ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์„ค์ •ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ์ด๋ฏธ์ง€์—๋Š” ์ด๋ฏธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ „์ฒด ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. CVMFS๋ฅผ ๋งˆ์šดํŠธํ•  ์ˆ˜๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Dockerfile์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ๋ปค์ง€๋งŒ docker run --privileged ์ผ๋ถ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ docker ๋Œ€์‹  ๋‹ค๋ฅธ ๊ฒƒ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์—†๋Š” _์—†๋Š”_ ์ปจํ…Œ์ด๋„ˆ์— ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๋งˆ์šดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์Šคํฌ๋ฆฝํŠธ ๋‚ด๋ถ€์— ๊ถŒํ•œ ์žˆ๋Š” ๋ช…๋ น์„ ๋ฐฐ์น˜/๋ฐ˜ํ–ฅํ•˜์—ฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ˆ˜ํ–‰ํ•˜๊ณ  CMD ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ์ง„์ž…์ ์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฏ€๋กœ ๊ทธ๋Ÿฐ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•œ ํ›„ ๊ถŒํ•œ ์žˆ๋Š” ๋ชจ๋“œ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@drstapletron , CERN cvmfs ๋ฌธ์„œ ์— ๋”ฐ๋ฅด๋ฉด ํ˜„์žฌ๋กœ์„œ๋Š” ํ˜ธ์ŠคํŠธ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋กœ cvmfs๋ฅผ ๋งˆ์šดํŠธํ•˜๊ฑฐ๋‚˜ ๊ถŒํ•œ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— cvmfs๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ดˆ์˜ ๊ฒฝ์šฐ ์—ฌ๊ธฐ์—์„œ cmssw ๋…€์„์„ ์œ„ํ•œ ๋„์ปค ํŒŒ์ผ์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/iahmad-khan/system-admin/blob/master/cvmfs-inside-docker.Dockerfile

๋”ฐ๋ผ์„œ ์ด ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ (๋˜๋Š” cmssw dockerhub์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ) P ๋ชจ๋“œ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ๊ฒƒ์ด ์ด๋ฏธ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ์žˆ์Šต๋‹ˆ๋‹ค( ls /cvmfs/*)

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์˜ ๋ชฉ๋ก์ด ๋‹ค์†Œ ๊ธธ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์œ„์—์„œ ๋‹ค๋ฃจ์–ด์กŒ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋„ --privileged ๋นŒ๋“œ ๋ช…๋ น์„ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” gentoo stage3์—์„œ go ebuild๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ๋ถ€๋”ชํžŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด gentoo ํ•ธ๋“œ๋ถ์˜ ํ˜„์žฌ ์ง€์นจ์œผ๋กœ ์ธํ•ด 'umount -l /mnt/gentoo/dev{/shm,pts,} && umount -l /mnt/gentoo/{ proc,sys}' systemd๋กœ ๋ถ€ํŒ…๋œ ์‹œ์Šคํ…œ์—์„œ... ๋‚ด stage3 ๋นŒ๋“œ๋ฅผ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋กœ ์ด๋™ํ•˜๋ฉด ๋นŒ๋“œ์— ptrace ๋˜๋Š” go-1.7.1์ด ์š”๊ตฌํ•˜๋Š” ๋‹ค๋ฅธ ์ œํ•œ๋œ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•  ๋•Œ๊นŒ์ง€ ๋ชจ๋“  ๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ebuild๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ๋‹จ์ˆœํžˆ docker run ๋ช…๋ น ๋‚ด์—์„œ ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ปค๋ฐ‹ํ•œ ๋‹ค์Œ ๊ณ„์† ์ง„ํ–‰ํ•˜์ง€๋งŒ ์ˆ˜๋™ ๋‹จ๊ณ„๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด docker build ๋ช…๋ น ์ž์ฒด ๋‚ด์—์„œ ptrace๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ €๋„ ์ด ๊ธฐ๋Šฅ์„ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์ง€๋งŒ ์ปค๋„ ๋ชจ๋“ˆ์ด ํ•„์š”ํ•˜๊ณ  ๋นŒ๋“œํ•  ๋•Œ modprobe๊ฐ€ ์ €์™€ ํ˜‘๋ ฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ตฌ์ฒด์ ์œผ๋กœ ํŠน๋ณ„ํžˆ:

modprobe vcan && \
ip link add type vcan && \
ifconfig vcan0 up

์™„์ „ํžˆ ํ•ฉ๋ฆฌ์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

@seltzy docker ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ท€ํ•˜์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ํ•ฉ๋ฆฌ์„ฑ์„ ์ธ์ •ํ•  ๋•Œ๊นŒ์ง€ ์ˆจ์„ ์ฐธ์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์•„ํ‚คํ…์ฒ˜ ๋ฐ ๊ธฐ๋Šฅ ํฌํ•จ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋งค์šฐ ์—„๊ฒฉํ•˜๊ณ  ์‹ค์šฉ์ ์ด๋ฉฐ ๋ƒ‰๋‹ดํ•˜๋ฉฐ _์ž์‹ ์˜_ ๋กœ๋“œ๋งต์— ๋งž์ง€ ์•Š๋Š” ๋ชจ๋“  ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋ฌด์‹œํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ํ‰๋ฒ”ํ•œ ์‚ฌ๋žŒ๋“ค์€ ์ดํ•ดํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. docker ํŒ€์€ ์ž์‹ ์˜(๋น„์ฆˆ๋‹ˆ์Šค ๊ณ ๊ฐ ๋ฐ ์…€ํ”„ ์„œ๋น„์Šค ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š”) ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑ์‹œํ‚ค๋Š” ์•„ํ‚คํ…์ฒ˜ ๊ฒฐ์ •์„ ๋‚ด๋ฆฝ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฐ์ •์€ ๋งค์šฐ ํž˜๋“ค๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์šฐ๋ฆฌ(๊ณต๊ฐœ ์ตœ์ข… ์‚ฌ์šฉ์ž)์™€ ๊ฑฐ์˜ ๊ฒน์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์ œ์ถœํ•˜๋Š” ๋ฌธ์ œ .

๋ฌผ๋ก  ๊ทธ๋“ค์€ ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์—”์ง€๋‹ˆ์–ด๋ง ๋ฆฌ์†Œ์Šค๋ฅผ ์ž์œ ๋กญ๊ฒŒ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ํšŒ์‚ฌ๊ฐ€ "์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ๋ฅผ ์ง„์ง€ํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ด๋Š”" ๊ฒƒ์œผ๋กœ ๋ฌ˜์‚ฌ๋œ๋‹ค๋ฉด ์ƒ์ƒ์„ ๋ถˆ๋Ÿฌ์ผ์œผํ‚ค๋Š” ์‹ค์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

@tamsky ์ˆ˜๊ณ  ํ•˜์…จ์Šต๋‹ˆ๋‹ค!

@tamsky ๋‹น์‹ ์ด ๋ถ„๋ช…ํžˆ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ”„๋กœ์ ํŠธ์—์„œ ์ˆ˜๋ฝํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์™œ ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฒฐ์ •๊ณผ๋„ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๋นŒ๋“œ ์‹œ --privileged ๋Š” ์ด์‹ํ•  ์ˆ˜ ์—†๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
๋นŒ๋“œ ํ™˜๊ฒฝ์—์„œ modprobe ์™€ ๊ฐ™์€ ๊ฒƒ์€ ๋„์›€์ด ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋‘ ๊ฐœ์˜ ๋นŒ๋“œ์—์„œ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜ ์ž์‹ ์€ ๋นŒ๋“œ์— --privileged ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์—”์ง€๋‹ˆ์–ด๋ง ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ฉฐ ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ ๊ถŒํ•œ ์žˆ๋Š” ์ง€์›์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์กด API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์‚ฌ์šฉ์ž ์ •์˜ ๋นŒ๋”๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ์ด ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๋“ฃ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ดํ•ดํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@cpuguy83 ์„ค๋ช… ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํœด๋Œ€์„ฑ ๋ฌธ์ œ์ธ์ง€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๋‚˜์˜ ์š•๋ง์€ ์˜คํ•ด์—์„œ ๋น„๋กฏ๋œ ๊ฒƒ ๊ฐ™๋‹ค.

ํŠน๊ถŒ ๋นŒ๋“œ๋ฅผ ๊ฐ–๊ณ  ์‹ถ์€ ์œ ํ˜น์— ์ง๋ฉดํ–ˆ์„ ๋•Œ ์ทจํ•ด์•ผ ํ•  ์ผ๋ฐ˜์ ์ธ ์ฒ ํ•™์  ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@seltzy ๊ท€ํ•˜์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์ด ๊ธฐ๋Šฅ์˜ ํ•„์š”์„ฑ์— ๋Œ€ํ•œ ํ•ฉ๋ฆฌ์ ์ธ ์˜ˆ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ํ™•์‹ ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

@cpuguy83 ์•„์ง ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๊ธฐ๊ด€์˜ ๋นŒ๋“œ ์‹œ์Šคํ…œ์€ ๋‚ด ์ปจํ…Œ์ด๋„ˆ์— ํƒ‘์žฌ ํ•ด์•ผ ํ•˜๋Š” ๋„คํŠธ์›Œํฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ถŒํ•œ ์žˆ๋Š” ๋ชจ๋“œ์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ•œ ์šฐ๋ฆฌ ๊ธฐ๊ด€์˜ ๊ฒฐ์ •์€ ์ž…์ž ๋ฌผ๋ฆฌํ•™์—์„œ ๋“œ๋ฌธ ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋นŒ๋“œ ์‹œ --privileged ๊ฐ€ ์ด์‹ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ์ „ํ˜€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฐœ๋ฐœ ๋ชจ๋ธ์€ ๋„คํŠธ์›Œํฌ ํŒŒ์ผ ์‹œ์Šคํ…œ(์ •๋ง?)์˜ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด ์žƒ์–ด๋ฒ„๋ฆด _์ˆ˜๋„ ์žˆ๋Š”_ ๋ชจ๋“  ์ด์‹์„ฑ์„ ์ด๋ฏธ ํฌ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๋งˆ์šดํŠธํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ ๊ธฐ๊ณ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@ cpuguy83 ์ถ”์‹  ๋‹น์‹ ์€ ์‚ฌ์šฉ์ž ์ •์˜ ๋นŒ๋”๋ฅผ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ์–ด๋””์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ ํ•ด์š”!

์ปจํ…Œ์ด๋„ˆ ์ด์‹์„ฑ์— ๋Œ€ํ•œ ์ด ๋ชจ๋“  ๋…ผ์˜๋Š” ์–ด์จŒ๋“  ๊ฑฐ๋Œ€ํ•œ ์ฒญ์–ด์ž…๋‹ˆ๋‹ค. 1๋‹จ๊ณ„ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ถŒํ•œ ๋ชจ๋“œ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ํ•ด์•ผ ํ•  ์ผ์„ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ, ๋„์ปค ์ปค๋ฐ‹์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ตœ์ข… ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•จ์œผ๋กœ์จ ์ด๋ฏธ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋‹จ ๋„์ปค ์ปค๋ฐ‹ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ด๋ฏธ์ง€ ์ด์‹์„ฑ์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ฐœ๋…์ด ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ 1๋‹จ๊ณ„ ๋Œ€์‹  3๋‹จ๊ณ„๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์€ ์•„๋ฌด ๊ฒƒ๋„ ์–ป์ง€ ๋ชปํ•˜๊ณ  ๊ถŒํ•œ ์žˆ๋Š” ๋นŒ๋“œ ์˜ต์…˜์„ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์งœ์ฆ๋‚˜๊ฒŒ ํ•  ๋ฟ์ž…๋‹ˆ๋‹ค.

@drstapletron ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๋งˆ์šดํŠธํ•˜๋Š” ๊ฒƒ์ด ๋ฐ˜๋“œ์‹œ ์ด์‹์„ฑ์„ ์†์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค(๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๋ฏธ์ง€์— ๋งˆ์šดํŠธ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์ง€ ์•Š๋Š” ํ•œ).
์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ ๋˜ํ•œ ๋‹ค๋ฅธ ๋งŽ์€ ๋‚˜์œ ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ctindel ์˜ˆ, ์ƒ์„ฑํ•œ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์›ํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ docker build ๊ฐ€ ์ง€์›๋˜๋Š” ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ฐฉ๋ฒ•์ด๋ผ๋Š” ์‚ฌ์‹ค์€ ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€๊ฐ€ ์ด์‹์„ฑ _์žˆ๋Š”_ ๊ฒƒ์„ ๋ณด์žฅํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

ํœด๋Œ€์šฉ ์ด๋ฏธ์ง€๋Š” ์ฒญ์–ด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์›Œํฌ๋กœ๋“œ ์ด์‹์„ฑ์€ Docker์˜ ์ฃผ์š” ์„ค๊ณ„ ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ์šฐ๋ฆฌ์˜ ์ฃผ์š” ์ง€์‹œ.

@seltzy ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ƒ์Šน๋œ ๊ถŒํ•œ์ด ์–ด๋–ค ์‹์œผ๋กœ๋“  ํ˜ธ์ŠคํŠธ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€ ๊ถŒํ•œ์ด ํ•„์š”ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ํ•ญ๋ชฉ์€ ๋Ÿฐํƒ€์ž„์— ์†ํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰, ๋นŒ๋“œ ์‹œ ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ํ™•์‹คํžˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์œ„์˜ nfs ๋งˆ์šดํŠธ).... ํ•˜์ง€๋งŒ NFS์˜ ๊ฒฝ์šฐ์—๋„ ์ด๋ฏธ์ง€๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋นŒ๋“œํ•˜๋Š” ๊ฒฝ์šฐ( docker build ์•„๋‹˜), ์ปจํ…Œ์ด๋„ˆ์— --privileged ๋˜๋Š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์ „ํ˜€ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ  ๋Œ€์‹  nfs ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ๋ณผ๋ฅจ์œผ๋กœ ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๋‹ค.

@drstapletron mount ๋Š” --privileged ๋” ์ œํ•œ๋œ ๊ธฐ๋Šฅ ์ง‘ํ•ฉ๋งŒ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ํ•˜๋Š” ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ ์ „์ฒด ๋ฃจํŠธ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ๊ถŒํ•œ ๋ชจ๋“œ๋ณด๋‹ค ๋” ๋นจ๋ฆฌ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํ›จ์”ฌ ๋†’์Šต๋‹ˆ๋‹ค. ํ•˜์ง€. (์—ฌ์ „ํžˆ ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ๋” ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.)

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์™„์ „ํžˆ ์ด์‹ ๊ฐ€๋Šฅํ•˜๊ณ  ํ˜ธ์ŠคํŠธ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์‹ฌ์ง€์–ด ์˜คํ”ˆ ์†Œ์Šค์ด๋ฉฐ ์—ฌ๊ธฐ์—์„œ ๋ณผ ์ˆ˜

๊ธฐ๋ณธ์ ์œผ๋กœ ํœด๋Œ€์šฉ Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ Mock์„ ์‹คํ–‰ํ•˜์—ฌ ๋งž์ถคํ˜• CentOS ISO ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. Mock์€ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆํ™”๋œ RPM ๋นŒ๋”์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— --privileged ๋˜๋Š” --cap-add ํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” docker build ๊ฐ€ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜์—ฌ ๋ช‡ ๊ฐ€์ง€ ์ธ์ˆ˜๋ฅผ ์ทจํ•˜๊ณ  ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ํ”Œ๋ž˜๊ทธ๊ฐ€ ์—†์œผ๋ฉด ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€! ๋„์ปค ๋‚ด๋ถ€์—์„œ mock์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ทธ ๋•Œ๋ฌธ์— ์•…๋ชฝ์ž…๋‹ˆ๋‹ค :(

Sending build context to Docker daemon 9.728 kB
Step 1 : FROM centos
 ---> 980e0e4c79ec
Step 2 : MAINTAINER Gregory Boddin
 ---> Using cache
 ---> 93e709c87f25
Step 3 : RUN yum install -y spectool mock
 ---> Using cache
 ---> 7006ef8d0276
Step 4 : RUN useradd mock -g mock
 ---> Using cache
 ---> bfb931c56d89
Step 5 : ADD *.cfg /etc/mock/
 ---> Using cache
 ---> 15521d2822b1
Step 6 : RUN su mock -c"/usr/bin/mock -r edge-5-x86_64 --init"
 ---> Running in 542a742b6017
INFO: mock.py version 1.2.17 starting (python version = 2.7.5)...
Start: init plugins
INFO: selinux disabled
Finish: init plugins
Start: run
ERROR: Namespace unshare failed.

@cpuguy83 ์€ ๋‹ค์Œ

์‚ฌ์‹ค --privileged on build๋Š” ์ด์‹ํ•  ์ˆ˜ ์—†๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ด‘๋ฒ”์œ„ํ•œ ํœด๋Œ€์„ฑ์„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด --privileged ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
๊ณต์‹ ๋ฌธ์„œ์˜ ๊ฐ„๋‹จํ•œ ๋ฉ”๋ชจ๋Š” ํ•ฉ๋ฆฌ์ ์ธ ์ ˆ์ถฉ์•ˆ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค(์˜ˆ: _๊ฒฝ๊ณ : build ๋ช…๋ น์— --privilege ๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ์ด๋ฏธ์ง€์˜ ์ด์‹์„ฑ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!_). ์ด๊ฒƒ์€ ๊ฑฐ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ํ•ด๊ฒฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์‚ฌ์šฉ์ž๋Š” ์ด์‹์„ฑ์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ณ  ์–ด๋–ค ์‚ฌ์šฉ์ž๋Š” ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๊ณ ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ์š”๊ตฌ๋ฅผ ์ถฉ์กฑํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

build --privileged ์˜ ๋ถ€์กฑ์œผ๋กœ ์ธํ•ด ํ˜„์žฌ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์ƒ๋‹นํžˆ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค.

--non-portable ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•„์ง docker์˜ ๋ฐฐํฌ ๋ถ€๋ถ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ๊ฒฉ๋ฆฌ + ์˜ค๋ฒ„๋ ˆ์ด ํŒŒ์ผ ์‹œ์Šคํ…œ ํ•ญ๋ชฉ์€ ๊ทธ๊ฒƒ ์—†์ด๋Š” ์ •๋ง ์œ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ถŒํ•œ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ๋…์  ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์€ ์—†์Šต๋‹ˆ๋‹ค. 3๋‹จ๊ณ„ ๋นŒ๋“œ, ์‹คํ–‰, ์ปค๋ฐ‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ์ด์‹์„ฑ์€ ๋‚˜์™€ ๋‚ด ๋น„์ฆˆ๋‹ˆ์Šค์— ์•„๋ฌด ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๋Œ€๋ถ€๋ถ„์˜ ๋น„์ฆˆ๋‹ˆ์Šค์—๋Š” ์•„๋ฌด ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๊ฒƒ์€ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ค„์ด๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ์—์„œ ์‚ฌ์šฉ์„ฑ๋ณด๋‹ค ์ด์‹์„ฑ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด Docker์— ํ•ด๋กญ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•ด +1, setfacl์„ ์‚ฌ์šฉํ•˜๋Š” ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋นŒ๋“œ ์ค‘์— ์‹คํŒจํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ์—์„œ ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ตœ์ข… ์‚ฌ์šฉ์ž๋กœ์„œ ์šฐ๋ฆฌ๋Š” ์ œํ•œ๋˜์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ --priviledge ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ธฐ๋ณธ๊ฐ’์€ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•ด +1. ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ /proc ๋ฐ /dev๋ฅผ ๋งˆ์šดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” dockerfile์˜ ์ผ๋ถ€๋กœ ๋งˆ์šดํŠธ ๋‹จ๊ณ„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@samsun387 ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์— ์ด๊ฒƒ์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@skshandilya setfacl์€ ์ด์‹์„ฑ์ด ์—†์œผ๋ฉฐ

@robhaswell "๊ถŒํ•œ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ ํ•„์š”"๋Š” ๋ณ„๋กœ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์„ค์น˜ ์‹œ ๋ฌด์—‡์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

+1. ๋ชจ์˜ ์ดˆ๊ธฐํ™”๋Š” ์ด๊ฒƒ์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.
๊ฑฐ์˜ ์ „์ฒด ๋ฌธ์ œ๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค. ์™œ ์‚ฌ๋žŒ๋“ค์ด 3๋…„ ๋™์•ˆ "์ด๊ฒŒ ์™œ ํ•„์š”ํ•ด"๋ผ๊ณ  ๊ณ„์† ๋ฌป๋Š”์ง€ ์ดํ•ด๊ฐ€ ๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@Betriebsrat "X๊ฐ€ ์ด๊ฒƒ์„ ํ•„์š”๋กœ ํ•œ๋‹ค"๋Š” ๊ฒƒ์€ ๊ทธ๋‹ค์ง€ ๋„์›€์ด ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
"X"๋Š” ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ "X"๊ฐ€ ์ด๊ฒƒ์„ ํ•„์š”๋กœ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์˜ˆ๋ฅผ ๋“ค์–ด, /proc ๋ฐ /dev ๋ฅผ ๋งˆ์šดํŠธํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ์œ„์˜ ๊ฒฝ์šฐ๋Š” ์‹ค์ œ๋กœ ๋นŒ๋“œ ๋‹จ๊ณ„์— ์ ํ•ฉํ•œ ์œ„์น˜๊ฐ€ ์•„๋‹Œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉฐ ์ด๋ฏธ์ง€๊ฐ€ ํ˜ธ์ŠคํŠธ์— ์—ฐ๊ฒฐ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์‚ฌ๋ก€.

"privileged"๋„ ํƒฑํฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ ˆ๋Œ€์ ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์„ ์—ด๊ณ , ๋ชจ๋“  ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ , ์ผ๋ฐ˜์ ์œผ๋กœ ์ฝ๊ธฐ ์ „์šฉ ์žฅ์†Œ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๋Š” ์•„๋งˆ๋„ ๋งค์šฐ ํŠน์ •ํ•œ ์ผ์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ๋งŒ ํ•˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์งˆ๋ฌธ์€ ์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ๊ทธ๋Ÿฌํ•œ ์‚ฌ๋ก€๋ฅผ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ๋‚ด๊ฐ€ "๋ณด์•ˆ ๊ธฐ๋Šฅ"์ด๋ผ๊ณ  ๋งํ•  ๋•Œ ๋‘ ๊ฐ€์ง€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  1. ํ•ดํ‚น์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ๋“ค
  2. ํ˜ธ์ŠคํŠธ ๋ฌธ์ œ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฌธ์ œ ๊ฒฉ๋ฆฌ(์ฆ‰, ์ด๋ฏธ์ง€ ๋นŒ๋“œ๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œ๋œ ํ˜ธ์ŠคํŠธ์— ์—ฐ๊ฒฐํ•ด์„œ๋Š” ์•ˆ ๋จ).

๋‚ด ๋ฌธ์ œ๋Š” 21051์— ์˜ํ•ด ํ•ด๊ฒฐ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์™ธ์ถœ ์ค‘์ž…๋‹ˆ๋‹ค. :)

@shykes ๋Š” 2013๋…„ 11์›” 28์ผ @ https://github.com/docker/docker/pull/2839#issuecomment -29481246์— ๋งํ–ˆ์Šต๋‹ˆ๋‹ค::

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๋””์ž์ธ์€ '1 ์†Œ์Šค, 1 ๋นŒ๋“œ'๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ ์ด์™ธ์˜ docker ๋นŒ๋“œ์— ๋Œ€ํ•œ ์ธ์ˆ˜๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ๋นŒ๋“œ๋Š” ๊ถŒํ•œ ์žˆ๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด 1) Dockerfile์ด ๊ถŒํ•œ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋นŒ๋“œํ•ด์•ผ ํ•  ํ•„์š”์„ฑ์„ ํ‘œํ˜„ํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๊ณ , 2) ๋„์ปค๊ฐ€ ๋นŒ๋“œ๋ฅผ ์ผ์‹œ ์ค‘์ง€ํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์œ„ํ—˜์— ๋Œ€ํ•ด ์ ์ ˆํ•˜๊ฒŒ ๊ฒฝ๊ณ ํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๊ถŒํ•œ ๋ถ€์—ฌ/ํŠธ๋Ÿฌ์Šค ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Dockerfile์˜ ์ถœ์ฒ˜ ๋ฐ ์‹ ๋ขฐ์„ฑ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋…ธ์ถœํ•œ ๋‹ค์Œ ๋นŒ๋“œ๋ฅผ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€ํ•˜๋Š” ์‚ฌ์šฉ์ž์˜ ๊ฒฐ์ •์„ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.

@ cpuguy83 , "1 ์†Œ์Šค, 1 ๋นŒ๋“œ" ์‹œํ–‰์—์„œ ๋””์ž์ธ์ด ์ „ํ˜€ ๋ณ€๊ฒฝ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?
Docker ํ”„๋กœ์ ํŠธ๊ฐ€ ํ•ด๋‹น ๋””์ž์ธ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์š”์ฒญํ•œ ์ด ๊ธฐ๋Šฅ์„ ํ—ˆ์šฉํ•  ์˜ํ–ฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์œ„์˜ Shykes์˜ ์„ค๋ช…์€ ์ด ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด "์šฐ๋ฆฌ๊ฐ€ ํ•ด์•ผ ํ•  ์ผ"์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ์‚ฌ์šฉ๋œ ์–ธ์–ด("might")๋Š” ๋„์ปค ํ”„๋กœ์ ํŠธ์— ์ด ๋””์ž์ธ ๋ณ€๊ฒฝ์„ ๊ฑฐ๋ถ€ํ•  ์ถ”๊ฐ€ ์ด์œ ๋ฅผ ์ œ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ๊ณต๊ฐ„์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

NEEDS_PRIVILEGED ์„ ์–ธ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์žˆ์ง€๋งŒ ๋นŒ๋“œ ์ผ์‹œ ์ค‘์ง€์— ๋Œ€ํ•œ ์ด ๋ชจ๋“  ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•˜๊ณ  ์‹ค์ œ๋กœ ๊ถŒํ•œ ์žˆ๋Š” ๋นŒ๋“œ๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์šด์˜์ž๊ฐ€ --privileged ์˜ต์…˜์„ ์ „๋‹ฌํ•˜๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.

@cpuguy83 ๋ฌธ์ œ๋Š” ๋นŒ๋“œ์—์„œ ํŠน๊ถŒ ๋ชจ๋“œ๊ฐ€ ํ•„์š”ํ•œ ์‚ฌ๋žŒ๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ ์œ„ํ—˜์ด ๋ฌด์—‡์ธ์ง€ ์™„๋ฒฝํ•˜๊ฒŒ ์ž˜ ์•Œ๊ณ  ์žˆ๋Š” ๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋Œ€๋ถ€๋ถ„์€ ์ด๋ฅผ ์ˆ˜๋ฝํ•˜๊ณ  ํ•„์š”ํ•œ ๋‹จ๊ณ„์— ๋Œ€ํ•œ ๋นŒ๋“œ์˜ ์ผ๋ถ€๋กœ docker commit ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ์‚ฌ๋žŒ๋“ค์ด ๋นŒ๋“œ์—์„œ ํŠน๊ถŒ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์–ด๋–ค ์‹์œผ๋กœ๋“  ๋ง‰์ง€ ์•Š๊ณ  ๊ทธ์ € ๊ท€์ฐฎ๊ฒŒ ๋งŒ๋“ค๊ณ  ์žˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค.

๋‹น์‹ ์˜ ๋ชฉํ‘œ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ์งœ์ฆ๋‚˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด, ๋ช‡ ๋…„ ๋™์•ˆ ๊ณ„์† ๋†”๋‘๋Š” ๋Œ€์‹  ์ด ๋ฌธ์ œ๋ฅผ ์†”์งํ•˜๊ฒŒ ๋งํ•˜๊ณ  ๋‹ซ์œผ์‹ญ์‹œ์˜ค.

"์„ฑ๊ฐ€์‹œ๊ฒŒ ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๊ณ  ์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ์Šต๋‹ˆ๋‹ค.

/์‹ค

@cpuguy83 , ๋‚ด ์ดํ•ด์—์„œ Mock์€ unshare(2) CLONE_NEWNS ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ unshare(2) ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ chroot/container ํ™˜๊ฒฝ์„ ๋งŒ๋“ค ๋•Œ ๋‹ค๋ฅธ ๊ฒƒ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” CAP_SYS_ADMIN ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

"X"๋Š” ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ "X"๊ฐ€ ์ด๊ฒƒ์„ ํ•„์š”๋กœ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์šฐ๋ฆฌ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋Š” ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ์ผ๋ถ€ ๋…์  ์“ฐ๋ ˆ๊ธฐ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์šฐ๋ฆฌ ๋น„์ฆˆ๋‹ˆ์Šค๊ฐ€ "๋ณด์•ˆ"(์ด ๋งฅ๋ฝ์—์„œ)์ด๋‚˜ ์ด์‹์„ฑ ๋˜๋Š” ๋‚˜์—ด๋œ ์šฐ๋ ค ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๊ด€์‹ฌ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ๋งํ•  ์“ฐ๋ ˆ๊ธฐ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์— ๋„ฃ๊ณ  ๊ฐ€์น˜ ์žˆ๋Š” ์ผ์„ ํ•˜๊ณ  ์‹ถ์„ ๋ฟ์ž…๋‹ˆ๋‹ค.

@PonderingGrower๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ์–ด์จŒ๋“  ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ํ•˜๋Š” ๋™์•ˆ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜๋Š๋ƒ์˜ ๋ฌธ์ œ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

๋นŒ๋“œ์—์„œ ํŠน๊ถŒ ๋ชจ๋“œ๊ฐ€ ํ•„์š”ํ•œ ์‚ฌ๋žŒ๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ ์œ„ํ—˜์ด ๋ฌด์—‡์ธ์ง€ ์™„๋ฒฝํ•˜๊ฒŒ ์•Œ๊ณ  ์žˆ๋Š” ๊ณ ๊ธ‰ ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ ๊ฐ€์ •์— ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ „๋ฐ˜์ ์œผ๋กœ --privileged ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ "๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค๊ณ  ์ผ๊ธฐ ๋•Œ๋ฌธ์—" ๋งน๋ชฉ์ ์œผ๋กœ chmod -r 777 ์‹คํ–‰ํ•˜๋Š” ๋™์ผํ•œ ๋ฒ”์ฃผ์˜ ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋Š” ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ์ผ๋ถ€ ๋…์  ์“ฐ๋ ˆ๊ธฐ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์šฐ๋ฆฌ ๋น„์ฆˆ๋‹ˆ์Šค๊ฐ€ "๋ณด์•ˆ"(์ด ๋งฅ๋ฝ์—์„œ)์ด๋‚˜ ์ด์‹์„ฑ ๋˜๋Š” ๋‚˜์—ด๋œ ์šฐ๋ ค ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๊ด€์‹ฌ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ "์ด ์ปจํ…์ŠคํŠธ์—์„œ"๋Š” ํ˜ธ์ŠคํŠธ์—์„œ "์†Œ์œ ์˜ ์“ฐ๋ ˆ๊ธฐ" ๋ฃจํŠธ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

@thaJeztah ๋‚˜๋Š”

๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ dind๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ์ผ๋ถ€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฏธ๋ฆฌ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ์ด ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ 3๋…„๋™์•ˆ ๋ฌด์Šจ ์–˜๊ธฐ๋ฅผ ํ•˜๋Š”๊ฑฐ์•ผ?

docker run ์—๋Š” --cap-add , --cap-drop ๋ฐ ๊ธฐํƒ€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ RUN ์—์„œ ๋ช…๋ น Dockerfile ๋™์ผํ•œ ์˜ต์…˜์„ ๊ฐ–๊ณ  ์‹ถ์–ด. ๋”ฐ๋ผ์„œ Dockerfile ๋Š” ์ƒ์œ„ ์‹œ์Šคํ…œ์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์ผ๋ถ€ ๊ถŒํ•œ์„ ์ถ”๊ฐ€/์‚ญ์ œํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

์ƒ์œ„ ์‹œ์Šคํ…œ์€ ์ด๋Ÿฌํ•œ ์š”์ฒญ์œผ๋กœ ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‰˜์„ ๋Œ€ํ™”์‹์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ  GUI ํ™•์ธ ๋Œ€ํ™” ์ƒ์ž ๋“ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์—์„œ ์ด๋Ÿฌํ•œ ์š”์ฒญ์˜ ํ•ด๊ฒฐ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ƒ๋‹น์ˆ˜์˜ ๋„์ปค ์‚ฌ์šฉ์ž๋Š” ๋นŒ๋“œ ๋ช…๋ น์—์„œ --cap-add ๋˜๋Š” --privileged ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ ๋ช…๋ น์— ์žˆ๋Š” ๊ฒƒ์„ ๋ชจ๋ฐฉํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ์ด ํŠน์ • ์ธ์Šคํ„ด์Šค์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์—†์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ด ํ‹ฐ์ผ“์ด 3๋…„ ๋™์•ˆ ์—ด๋ ค ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค๊ณผ ํ•จ๊ป˜ ๊ณ„์†ํ•ด์„œ ์ฐจ์ž„๋ฒจ์ด ์šธ๋ฆฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ctindel ์ด๊ฒƒ์€ ํ™•์‹คํžˆ ์ด ๋ฌธ์ œ์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. docker build --cap-add ์™€ RUN --cap-add ์‚ฌ์ด์— ๊ฐ„๊ฒฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ docker build --cap-add=caps_array ๋งŒ์œผ๋กœ ์ž์‹ ์‹œ์Šคํ…œ์˜ ๊ถŒํ•œ ์š”์ฒญ์„ ํ•ด๊ฒฐํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? caps_array.include? requested_cap ์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ pre_requested_caps.include? requested_cap ์›ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ ์›ํ•˜๋Š” stdout << requested_cap, stdin.gets == 'y' K2661์— ์‚ฌ๋žŒ๋“ค์ด ์›ํ•˜๋Š” gui_confirm requested_cap . ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ ํ™•์‹คํžˆ UAC_fullscreen_dialog requested_cap ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

requested_cap ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์‚ฌ์šฉ์ž์˜ ์ทจํ–ฅ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฉฐ ์ด ์งˆ๋ฌธ์€ ์ ˆ๋Œ€ ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ RUN --cap-add ๋Š” ์‚ฌ๋žŒ์˜ ์ทจํ–ฅ๊ณผ ์•„๋ฌด ์ƒ๊ด€์ด ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ฌด์—‡์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@andrew-aladev ๊ท€ํ•˜์˜ ๊ฒŒ์‹œ๋ฌผ์ด ๋งํ•˜๋Š” ๋‚ด์šฉ์„ ์ •๋ง ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์š”์ ์€ ์‚ฌ๋žŒ๋“ค์ด ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ํƒ€์‚ฌ ์†Œํ”„ํŠธ์›จ์–ด(RPM, DEB ๋“ฑ)๊ฐ€ ์žˆ๊ณ  "๋„์ปค ๋นŒ๋“œ" ์‹œ๊ฐ„์— ์ด๋ฏธ์ง€์— ์„ค์น˜ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํƒ€์‚ฌ RPM์ด๋ฏ€๋กœ ์„ค์น˜ ๋‹จ๊ณ„์—์„œ ๊ถŒํ•œ ์ฆ๊ฐ€ ์š”๊ตฌ ์‚ฌํ•ญ์„ ํ•ด๊ฒฐํ•  ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ์ด๋Ÿฌํ•œ ํ–ฅ์ƒ๋œ ๊ธฐ๋Šฅ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์„ค์น˜ํ•œ ๋‹ค์Œ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ณ ํ†ต์Šค๋Ÿฝ๊ณ  ๋™์ผํ•œ ๋์ด ํšŒ๋กœ์ ์œผ๋กœ ๋‹ฌ์„ฑ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋นŒ๋“œ ์‹œ cap-add๋ฅผ ๊ธˆ์ง€ํ•  ๊ธฐ๋Šฅ์  ์ด์œ ๊ฐ€ ์—†์Œ์„ ๋ถ„๋ช…ํžˆ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

@ctindel ์ œ ์˜์–ด

์•Œ์•„์š”. glibc๋ฅผ ์ด๋จธ์ง€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๋Š”๋ฐ ptrace not permitted ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

docker ์ž์ฒด์ ์œผ๋กœ ๊ธฐ๋Šฅ์ด ์ฆ๊ฐ€/๊ฐ์†Œ๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. RUN ๋ช…๋ น์€ Dockerfile --cap-add , --cap-drop ๋“ฑ์„ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Dockerfile RUN --cap-add=SYS_PTRACE -- emerge -v1 glibc ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ด…์‹œ๋‹ค. ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ• ๊นŒ์š”?

  1. ์ž์‹ ๋จธ์‹ ์€ ๋ถ€๋ชจ์—๊ฒŒ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  SYS_PTRACE ํ•ฉ๋‹ˆ๋‹ค.
  2. ์ƒ์œ„๋Š” ํ™•์žฅ๋œ ๊ธฐ๋Šฅ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  3. ์ƒ์œ„๋Š” SYS_PTRACE๊ฐ€ ํ—ˆ์šฉ๋œ ์ƒˆ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์‹ค์ œ๋กœ ๋…ผ์Ÿ์„ ๋ฒŒ์ด๋Š” ์‚ฌ๋žŒ์€ ์•„๋ฌด๋„ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ํ—ˆ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ์— ๋Œ€ํ•ด ๋…ผ์Ÿํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@thaJeztah๊ฐ€ ๋งํ–ˆ๋‹ค

์ „๋ฐ˜์ ์œผ๋กœ --privileged๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ chmod -r 777์„ ๋งน๋ชฉ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๋™์ผํ•œ ๋ฒ”์ฃผ์˜ ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค.

์ด ์‚ฌ๋žŒ์€ log :info, requested_cap; return privileged? ๋ณด๋‹ค ๋” ์œ ์—ฐํ•œ ์œ ํšจ์„ฑ ๊ฒ€์ฆ ๋ฐฉ๋ฒ• ์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

@ctindel ๋‹น์‹ ์ด ๋ง

NEEDS_PRIVILEGED ์„ ์–ธ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์žˆ์ง€๋งŒ ๋นŒ๋“œ ์ผ์‹œ ์ค‘์ง€์— ๋Œ€ํ•œ ์ด ๋ชจ๋“  ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•˜๊ณ  ์‹ค์ œ๋กœ ๊ถŒํ•œ ์žˆ๋Š” ๋นŒ๋“œ๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์šด์˜์ž๊ฐ€ --privileged ์˜ต์…˜์„ ์ „๋‹ฌํ•˜๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.

์‰˜์„ ๋Œ€ํ™”์‹์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. stdout << requested_cap, stdin.gets == 'y' ์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ•„์ˆ˜ ๊ธฐ๋Šฅ์„ ๊ฒ€์ฆํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ• ์ž…๋‹ˆ๋‹ค.

@cpuguy83์ด ๋งํ–ˆ๋‹ค

๋ˆ„๊ตฐ๊ฐ€๋Š” ํ•ดํ‚น์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋งค์šฐ ๊ตฌ์ฒด์ ์ธ ์ผ์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋‚จ์ž๋Š” docker build --cap-add=caps_array caps_array.include? requested_cap ์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ•„์ˆ˜ ๊ธฐ๋Šฅ์„ ๊ฒ€์ฆํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ• ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ €๋Š” RUN in Dockerfile ์—ฌ์ „ํžˆ --cap-add , --cap-drop ๋“ฑ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ๋ฌป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋…ผ์Ÿํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 3๋…„์ด ์ง€๋‚ฌ๋‹ค!

@andrew-aladev ๋นŒ๋”๊ฐ€ ๋ฉ”์ธ ์—”์ง„์—์„œ ์žฌ์ž‘์„ฑ/๋ฆฌํŒฉํ„ฐ๋ง/๋ถ„๋ฆฌ๋  ๋•Œ๊นŒ์ง€ dockerfile ๊ตฌ๋ฌธ์ด ๊ณ ์ •๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๋„ ๊ทธ ๊ตฌ๋ฌธ์— ๋Œ€ํ•ด ๋…ผ์Ÿํ•˜์ง€ ์•Š์•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. https://github.com/docker/docker/issues/29719#issuecomment -269342554

๋” ๊ตฌ์ฒด์ ์œผ๋กœ ๋งํ•˜๋ฉด ๋ฌธ์ œ์˜ ์ œ๋ชฉ๊ณผ OP๊ฐ€ --privileged ๋นŒ๋“œ๋ฅผ ์š”์ฒญํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ Fonzie๋ฅผ ์ฟต์พ…๊ฑฐ๋ฆฌ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.Fonzie .

build ๋‹จ๊ณ„์—์„œ strace ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋งŽ์€ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
ํ˜„์žฌ ๋””๋ฒ„๊ทธ์— ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ run ๋‹จ๊ณ„๋กœ ์ด๋™ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์ด์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

build ๋‹จ๊ณ„๊ฐ€ ์•„๋‹Œ run ์—์„œ ์ž‘๋™ํ•˜๋Š” ์ด์œ ๋ฅผ ์•„๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ฆ‰, ์—ญ์‚ฌ์  ์ด์œ .
๋งŽ์€ ๊ถŒํ•œ์ด๋‚˜ ๊ตฌ์„ฑ ์—†์ด ์ž‘๋™ํ•˜๋Š” strace ๋Œ€ํ•œ ๋Œ€์•ˆ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด์— ๋Œ€ํ•œ ์ œ์•ˆ๋œ ์†”๋ฃจ์…˜/ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/docker/docker/issues/6800#issuecomment -50494871 :

๋„์ปค ๋นŒ๋“œ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ "๋นŒ๋” ์ปจํ…Œ์ด๋„ˆ"๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
docker run --cap-add [...] mybuilder | docker build -t myimage -

๋ˆ„๊ตฐ๊ฐ€(์•„๋งˆ๋„ @tiborvass) ์ด์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์„œ mybuilder ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
์ผ๋ถ€ ENTRYPOINT ๊ฐ€ ํฌํ•จ๋œ ์ด๋ฏธ์ง€ ์ด๋ฆ„ ? ๋˜๋Š” [...] ๋ฐ mybuilder ์˜ ์ด๋ฏธ์ง€ ๋ถ€๋ถ„์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.
์‰˜ ์Šคํฌ๋ฆฝํŠธ์—? ๊ทธ๋ฆฌ๊ณ  docker run ๊ฐ€ context.tar.gz๋ฅผ docker build - ์— ์ „๋‹ฌํ•˜๋„๋ก ์–ด๋–ป๊ฒŒ ์„ค๋“ํ•ฉ๋‹ˆ๊นŒ?
๊ทธ๊ฒƒ์ด ์ •๋ง๋กœ ์—ฌ๊ธฐ์—์„œ ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š” ์ผ์ด๋ผ๋ฉด. ๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค, Steffen

@sneumann mybuilder ๋Š” ์ด๋ฏธ์ง€ ์ด๋ฆ„์ด๊ณ  ์‹ค์ œ๋กœ CMD ๋˜๋Š” ENTRYPOINT ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ž‘๋™ํ•˜๋Š” ๊ณ„์•ฝ์€ mybuilder ๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์ปจํ…์ŠคํŠธ๋ฅผ tar ํ•ด์•ผ ํ•˜๊ณ  stdout์œผ๋กœ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰์— ์ „๋‹ฌ๋œ๋‹ค docker build '์˜ ํ‘œ์ค€ ์ž…๋ ฅ ์‰˜ ๊ด€ ๋•๋ถ„ | ํ•˜๊ณ  ๋Œ€ํ•œ ์ปจํ…์ŠคํŠธ ๊ฒฝ๋กœ ๋•Œ๋ฌธ์— ์ปจํ…์ŠคํŠธ๋กœ ๊ฐ„์ฃผ docker build -t myimage - ์ธ - .

์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์•ฝ๊ฐ„ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. build ๋ช…๋ น์—์„œ ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋” ๋‹จ์„œ๊ฐ€์žˆ๋Š” ์‚ฌ๋žŒ์ด ์™œ ์ ์šฉ๋˜์ง€ ์•Š๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@mbana --security-opt ๋Š” "credentialspec"์„ ์ง€์›ํ•˜๋Š” ๊ธฐ๋ณธ Windows ์ปจํ…Œ์ด๋„ˆ์šฉ์ž…๋‹ˆ๋‹ค. https://github.com/docker/docker/pull/23389

๋ฏธ๋ž˜์˜ build ๊ฐ€ ptrace ํ™œ์„ฑํ™”ํ•˜๋„๋ก ์ด๊ฒƒ์„ ์ˆ˜์ •ํ•˜๊ณ  ์ง€์†๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์—ฌ๊ธฐ์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ์‚ฌ๋žŒ์„ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ข‹์€ ๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠน์ • ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋œ ์ž‘์—…์„ ์š”๊ตฌํ•˜์ง€ ์•Š๋„๋ก ๋นŒ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ๋‹ค์–‘ํ•œ ์‚ฌ๋žŒ๋“ค์˜ ์ฃผ์žฅ์„ ๋งŽ์ด ๋ณด์•˜์ง€๋งŒ "๋„์ปค์˜ ๋„์ปค" ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•  ์ž‘์—…์— ๋Œ€ํ•œ ์ œ์•ˆ์€ ์—†์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ์—์„œ docker ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ์˜ˆ๋ฅผ ๋“ค์–ด ์ด ์•ˆ์— ํฌํ•จํ•˜๋ ค๋Š” ์ผ๋ถ€ ์ด๋ฏธ์ง€๋ฅผ ํ’€๋‹ค์šดํ•˜๊ฑฐ๋‚˜ ํ•˜์œ„ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋ ค๋ฉด ์ผ์ข…์˜ ๊ถŒํ•œ ์—†์ด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ์˜ต์…˜?

์ง€๊ธˆ์€ docker run ๋ฐ docker commit ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•˜์ง€๋งŒ docker build ๊ฐ€ ์ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@scjody ๋‹น์‹ ์ด ์›ํ•˜๋Š” ๊ฒƒ ๊ฐ™๊ตฐ์š” #31257

@ cpuguy83 ์ด ๊ฒฝ์šฐ์— ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋ณ‘ํ•ฉ๋˜๋ฉด ํ•œ ๋ฒˆ

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด ๋ชจ์ž์— ์ œ ์ด๋ฆ„์„ ๋„ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋‚˜๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋‚ด ๋ฌธ์ œ(์—ฌ๊ธฐ์„œ๋Š” docker noob)์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ณต์‹ centos/systemd ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  Saltstack์œผ๋กœ ํ”„๋กœ๋น„์ €๋‹ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํŠน๊ถŒ ๋ชจ๋“œ ์—†์ด๋Š” ํ•  ์ˆ˜ ์—†๋Š”(AFAIK) systemd๋กœ salt-minion ๋ฐ๋ชฌ์„ ์‹œ์ž‘(๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„ ๋‹ค์‹œ ์‹œ์ž‘)ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@onlyanegg ๊ทธ๋Ÿฐ ์ƒํ™ฉ์—์„œ Saltstack์€ ๋นŒ๋”์˜ ๊ธฐ๋Šฅ์„ ํฌ๊ฒŒ ๋Œ€์ฒดํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ RUN ๋ฌธ์€ ์ƒˆ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๋ฉฐ ์ด ์ง€์ ์—์„œ ์ด์ „ ๋นŒ๋“œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ค‘์ง€๋˜๊ณ  ์ด๋ฏธ์ง€/๊ณ„์ธต์— ์ปค๋ฐ‹๋ฉ๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ปค๋ฐ‹( docker commit )ํ•˜์—ฌ ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ–ˆ์Šต๋‹ˆ๊นŒ?

์‘๋‹ตํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, @thaJeztah. RUN ์ง€์‹œ๋ฌธ์ด ๋ฌด์—‡์ธ์ง€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ๋ฌธ์ œ์˜ ๋Œ€๋ถ€๋ถ„์„ ์ฝ์—ˆ์œผ๋ฏ€๋กœ docker build -> docker run -> docker commit ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ์ด๊ฒƒ์ด ๊ฒฐ๊ตญ ๋‚ด๊ฐ€ ํ•  ์ผ์ž…๋‹ˆ๋‹ค. ๋‚ด ์ด๋ฏธ์ง€๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋‹จ์ผ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ๋” ๊น”๋”ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋‚˜๋Š” ๊ทธ ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ํŒจ์ปค ํ›„์ฒ˜๋ฆฌ๊ธฐ์— ๋„ฃ์„ ์ˆ˜ ์žˆ๊ณ  ๊ทธ๋ ‡๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์™œ ์ด๋ ‡๊ฒŒ ๋ฌด์‹œ๋‹นํ•˜๋Š” ๊ฑธ๊นŒ์š”? ์ปจํ…Œ์ด๋„ˆ, kubernetes, minikube, CI์—์„œ docker ์‚ฌ์šฉ ๋ฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ํ†ตํ•ฉ ์‹œ๋Œ€์— ์ด ๊ธฐ๋Šฅ์€ ์ •๋ง ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

@onlyanegg ๊ถŒํ•œ ๋ชจ๋“œ ์—†์ด RUN ๋ช…๋ น์€ ํŠน๊ถŒ ๋ชจ๋“œ๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค") ๊ธฐ๊บผ์ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

@derberg ์ •ํ™•ํžˆ! ์ปจํ…Œ์ด๋„ˆ, CI, CD ์‹œ๋Œ€์—๋Š” ๋นŒ๋“œ ๋„๊ตฌ๊ฐ€ (๋ณด์•ˆ์ ์ธ ์˜๋ฏธ์—์„œ) ํฌํ•จ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ ๋ชจ๋“œ๋ฅผ ํ—ˆ์šฉํ•˜๋ฉด Jenkins, Travis, Codeship ๋“ฑ๊ณผ ๊ฐ™์€ CI ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ํฌ๊ฒŒ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์งˆ๋ฌธ: ๊ถŒํ•œ ๋ชจ๋“œ๊ฐ€ ํ•„์š”ํ•œ Dockerfile์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋Œ€์•ˆ์„ ์ œ์•ˆํ•˜๊ธฐ ์œ„ํ•ด ์‚ดํŽด๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@jpetazzo๋Š” ๋‚ด๋ถ€์— ๋„์ปค๊ฐ€ ์žˆ๋Š” ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์–ป์œผ๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

FROM ubuntu:16.04

# Get dependencies for curl of the docker
RUN apt-get update && apt-get install -y \
    curl \
    sudo \
    bash \
    && rm -rf /var/lib/apt/lists/*

RUN curl -sSL https://get.docker.com/ | sh

์ด์ œ ๋นŒ๋“œํ•˜๊ณ  ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค. ์‹œ์ž‘ ํ›„ service docker start ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋„์ปค ๋ฐ๋ชฌ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ service docker status ์„œ๋น„์Šค์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • ๊ถŒํ•œ ์žˆ๋Š” ํ”Œ๋ž˜๊ทธ ์ƒํƒœ๋Š” ์ •์ƒ์ด๋ฉฐ ๋ฌธ์ œ ์—†์ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ”Œ๋ž˜๊ทธ๊ฐ€ ์—†์œผ๋ฉด ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

@jpetazzo ech, ๋ฐฉ๊ธˆ ๋‹น์‹ ์ด https://github.com/jpetazzo/dind์˜ ์ œ์ž‘์ž์ž„์„ ์•Œ์•„์ฐจ๋ ธ์Šต๋‹ˆ๋‹ค :) ๊ทธ๋ž˜์„œ ๋‹น์‹ ์€ ๋„์ปค ๊ฐœ๋…์˜ ๋„์ปค๋ฅผ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค :)

์–ด์จŒ๋“  ์‹คํ–‰ํ•˜๋ ค๋ฉด ํŠน๊ถŒ ํ”Œ๋ž˜๊ทธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์–ด๋–ค ํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ•˜๊ณ  ๋‚ด๋ถ€์— ๋ฏธ๋ฆฌ ๊ตฌ์„ฑ๋œ ์ผ๋ถ€ ํ•ญ๋ชฉ(์˜ˆ: ์‚ฌ์ „ ์„ค์น˜๋œ ๊ตฌ์„ฑ ์š”์†Œ ๋˜๋Š” ๊ธฐํƒ€ ์š”์†Œ๊ฐ€ ์žˆ๋Š” minikube)์ด ํฌํ•จ๋œ ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์›ํ•˜๋Š” ๊ทธ๋ฃน์„ ์ƒ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด docker build ์— NFS ๋˜๋Š” SMB ๊ณต์œ ๋ฅผ ๋งˆ์šดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์•„์ง ์žˆ์Šต๋‹ˆ๊นŒ?

@derberg ๋นŒ๋“œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ --privileged ์‹คํ–‰ ์ค‘์ด๋”๋ผ๋„ ํ•ด๋‹น ๋‹จ๊ณ„๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋„์ปค ํŒจํ‚ค์ง€(๋ฐ ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ)๋Š” (์˜ˆ๋ฅผ ๋“ค์–ด) Ubuntu 16.04์— ์ปค๋„ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด --privileged ๊ฐ€ docker build ๋Œ€ํ•ด ๋‚˜์œ ์ƒ๊ฐ์ธ ์ด์œ ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด _host_์—์„œ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

docker๋Š” _running_ํ•  ๋•Œ ๊ถŒํ•œ์ด ํ•„์š”ํ•˜์ง€๋งŒ ์„ค์น˜ ์ž์ฒด์—๋Š” ์ด๊ฒƒ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ์€ ์ด๋ฏธ์ง€์— ๋„์ปค๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰ํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

docker build -t foo -<<'EOF'
FROM ubuntu:16.04

RUN apt-get update && apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common \
    && rm -rf /var/lib/apt/lists/*

RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable"
RUN apt-get update && apt-get install -y docker-ce \
    && rm -rf /var/lib/apt/lists/*
EOF

๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ์ž˜ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์—ฌ๊ธฐ์„œ --privileged ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋” ์„ธ๋ถ„ํ™”๋œ ๊ถŒํ•œ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค):

docker run -it --rm --privileged -v /var/lib/docker foo dockerd --debug

๋‹ค์Œ์€ ๊ถŒํ•œ ๋ชจ๋“œ์—์„œ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ด์•ผ ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์ด ๋ฌธ์ œ๋ฅผ ์šฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ์ผ๋ถ€ ๊ฒฝ์šฐ์—๋Š” ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•์—๋Š” Dockerfile, docker-compse ํŒŒ์ผ ๋ฐ ์…ธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋„์ปคํŒŒ์ผ

์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์œ ์ผํ•œ ์ฐจ์ด์ ์€ ๊ถŒํ•œ ์žˆ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์œ„์น˜์—์„œ ์ค‘์ง€ํ•˜๊ณ  ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋กœ docker-compose์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

FROM ubuntu:16.04
RUN apt-get update && apt-get install <your packages>
# And more commands
......

## Below are the operations you intended to run in privileged mode when building the image, which does not work.
# More commands....
## But they now are moved to a separated shell script and it will be included in the image
COPY further-commands-to-run-in-privileged-mode.sh /

ํŠน๊ถŒ ๋ชจ๋“œ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋” ๋งŽ์€ ๋ช…๋ น์€ ์ด์ œ further-commands-to-run-in-privileged-mode.sh ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€์— ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋‚˜์ค‘์— docker composer์—์„œ ์‹คํ–‰ํ•˜์—ฌ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

๋„์ปค ์ž‘์„ฑ ํŒŒ์ผ

์ž‘์„ฑ ํŒŒ์ผ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ๋จผ์ € ์œ„์˜ Dockerfile์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ๊ถŒํ•œ ์žˆ๋Š” ๋ชจ๋“œ ์—์„œ ํ•ด๋‹น ์ด๋ฏธ์ง€์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•œ ๋‹ค์Œ ๊ถŒํ•œ ์žˆ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

version: '3'

services:
  your_service:
    container_name: your_container
    # First build the image from the Dockerfile
    build:
      # Change this to where you keep above Dockerfile
      context: ../docker-build
    image: "your_image_name:your_image_tag"

    # Then start a container from the just built image in privileged mode to finish what's left
    entrypoint: /further-commands-to-run-in-privileged-mode.sh
    privileged: true

์ด๋ฏธ์ง€ ๊ตฌ์ถ•

์•„๋ž˜ ๋‹จ๊ณ„๋Š” ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

# First build the image and container(in privileged mode)
docker-compose -f docker-compose.yml up

# Then commit the temporary build container to a new image, change the ENTRYPOINT to what you want
docker commit \
    -c 'ENTRYPOINT ["/bin/bash"]' \
    <build container name> \
    <final image name>:<final image tag>

# Remove the temporary build container
docker rm <build container name>

@thaJeztah ์„ค์น˜์— ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ์ค‘์— ๋„์ปค ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์ƒ์ž์—์„œ ๊บผ๋‚ธ ์ด๋ฏธ์ง€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ผ๋ถ€ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Dockerfile์— ๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด docker ์„œ๋น„์Šค๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

#!/bin/bash

service docker start

sleep 20

service docker status

docker pull busybox

@derberg ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค! _๊ฐœ์ธ์ ์œผ๋กœ_ dind ์ปจํ…Œ์ด๋„ˆ์— ์ด๋ฏธ์ง€๋ฅผ ํฌํ•จํ•˜๋ ค๋ฉด ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ (์˜ˆ: reg ) ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ฒ˜์Œ ์‹œ์ž‘๋  ๋•Œ ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์™œ์š”? ๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด _ dind ๊ฐ€ ๋™์ผํ•œ ์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„๋กœ ์‹œ์ž‘๋œ ๊ฒฝ์šฐ์—๋งŒ ์ด๋ฏธ์ง€๊ฐ€ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ด๋ฏธ์ง€๊ฐ€ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์—์„œ ์ž‘๋™ํ•˜๊ฑฐ๋‚˜ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด๋ฏธ์ง€๊ฐ€ ํฐ ๊ฒฝ์šฐ(์˜ˆ: busybox ๋˜๋Š” alpine ์ด์™ธ์˜ ๋‹ค๋ฅธ ๊ฒƒ) ์ •๋ง ํฐ DinD ์ด๋ฏธ์ง€๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค...

๋‚˜๋Š” ๋‹น์‹ ์˜ ์ตœ์ข… ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ๋” ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ฑฐ๋Œ€ํ•œ DinD ์ด๋ฏธ์ง€๋ฅผ ๊ตฝ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๋ฐ ์šฐ๋ฆฌ๊ฐ€ ๋‹น์‹ ์„ ๋„์šธ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค :-)

(๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด @kraml ์ด ์ œ์•ˆํ•œ ์†”๋ฃจ์…˜์ด ์˜คํžˆ๋ ค ์šฐ์•„ํ•ฉ๋‹ˆ๋‹ค!)

https://github.com/moby/moby/blob/master/contrib/download-frozen-image-v2.sh ๋„ ์ฐธ์กฐ
bash+curl+tar๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค: https://github.com/moby/moby/blob/master/Dockerfile#L171

@jpetazzo ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ๋นŒ๋“œ-๋Ÿฐ-์ปค๋ฐ‹๊ณผ ๊ฐ™์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ๋‚ด ๊ด€์ ์—์„œ๋Š” ์—ฌ์ „ํžˆ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” kubernetes ๋ฐ minikube ํ™˜๊ฒฝ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋งค์šฐ ๊ตฌ์ฒด์ ์ด๋ฉฐ ํ˜„์žฌ๋กœ์„œ๋Š” ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋„์ปค๋ฅผ ๋ฐ๋ชฌ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋„์ปค์—์„œ minikube๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  virtualbox ๋˜๋Š” ๋‹ค๋ฅธ vm ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ dind ์ ‘๊ทผ ๋ฐฉ์‹์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์ด sysctl ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์‹คํŒจํ•œ ๋ ˆ๊ฑฐ์‹œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ(๋งค์šฐ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€)์ด ํฌํ•จ๋œ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ์ค‘์— ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ๋กœ ๋Œ์•„์™€ ๋„์ปค ๋นŒ๋“œ ๋ช…๋ น์— ์ผ์ข…์˜ ๊ถŒํ•œ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด 4๋…„ ๋™์•ˆ(!!!) ์•ž๋’ค๋กœ ๊ฒ€ํ† ํ•œ ๊ฒฐ๊ณผ ์ด โ€‹โ€‹์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜์€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. sysctl ํ˜ธ์ถœ ๋˜๋Š” ๋‹ค๋‹จ๊ณ„ ๋นŒ๋“œ -> ์‹คํ–‰ -> ์ปค๋ฐ‹ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜์ •ํ•˜๋Š” sed ๋ช…๋ น์˜ ๋ถˆ์พŒํ•œ ๋ฌด๋ฆฌ. ๋‚˜๋Š” '๋นŒ๋“œ -> ์‹คํ–‰ -> ์ปค๋ฐ‹'์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ๋Š๊ปด์ง„๋‹ค๋Š” @derberg์˜ ๋ง์— ๋™์˜ํ•˜๊ณ (์ด์ฒด์ /ํ•ดํ‚ค ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•) ๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ๋…ํŠนํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ ํ™•์ธ ๊ถŒํ•œ ๋ถ€์กฑ์œผ๋กœ ์ธํ•ด ์‹คํŒจํ•œ docker build ๋ช…๋ น์œผ๋กœ ๋‹ค์–‘ํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์น˜์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ ํ•˜๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ด ์‹œ์ ์—์„œ docker run ๋ช…๋ น์€ "--cap-add ๋ฐ --cap-drop์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์„ธ๋ฐ€ํ•œ ์ œ์–ด"์™€ ํ•จ๊ป˜ ๊ด‘๋ฒ”์œ„ํ•œ '๊ถŒํ•œ' ์˜ต์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ณด์•ˆ์ด๋‚˜ ๊ธฐ์ˆ ์ ์ธ ์ธก๋ฉด์—์„œ ๋ฐ˜๋Œ€ํ•˜๋Š” ๊ฒƒ์€ ๋ง์ด ์•ˆ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ ์žˆ๋Š” ์‹คํ–‰ ์˜ต์…˜์ด '--cap-add' ๋ฐ '--cap-drop'๊ณผ ํ•จ๊ป˜ ์ถ”๊ฐ€๋˜๋ฉด ๋ณด์•ˆ์— ๋ฏผ๊ฐํ•œ ์—”์ง€๋‹ˆ์–ด๋Š” ๋นŒ๋“œ์— ํ•„์š”ํ•œ ํŠน์ • ๊ธฐ๋Šฅ๋งŒ ํฌํ•จํ•˜๋„๋ก ๊ถŒํ•œ ์žˆ๋Š” ๋นŒ๋“œ๋ฅผ ์ œํ•œํ•˜๋„๋ก ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ,

๋‚˜๋Š” ์ด๋ฏธ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์ด์ „์— ๋ณด๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

Docker๋ฅผ ํŒจํ‚ค์ง• ๋„๊ตฌ๋กœ ์‚ฌ์šฉํ•˜์—ฌ VM๊ณผ container์—์„œ ๋™์ผํ•œ ์‚ฌ์šฉ์ž ID๋กœ VM๋‹น ํ•˜๋‚˜์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์ด์™€ ๊ด€๋ จ๋œ ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ์—ฌ์ „ํžˆ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ๊ธฐ๋Šฅ์„ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋„ ๋งŒ๋‚ฌ์Šต๋‹ˆ๋‹ค.
์Šฌ๋ ˆ์ด๋ธŒ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ๋•Œ CI/CD ๋นŒ๋“œ/ํ…Œ์ŠคํŠธ ๋„๊ตฌ ์ฒด์ธ์„ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด docker build ์— ๋Œ€ํ•œ ๊ถŒํ•œ ์žˆ๋Š” ๊ถŒํ•œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋Š” CI/CD ์Šฌ๋ ˆ์ด๋ธŒ๋กœ ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ €๋Š” ์ด ๊ธฐ๋Šฅ์„ ๋ช‡ ๋…„ ๋™์•ˆ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์œผ๋ฉฐ ํ–ฅํ›„ ์ง€์›๋  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์ง„์‹ฌ์œผ๋กœ ๋ฐ”๋ž๋‹ˆ๋‹ค.

--privileged for docker image์™€ ๊ด€๋ จํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋“ค๋กœ๋ถ€ํ„ฐ ์™œ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ๋ฐ˜๋ฐœ์ด ์žˆ๋Š”์ง€ ์ •๋ง ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ๋ฐœ์— ์ด์„ ์˜๊ณ  ์‹ถ๋‹ค๋ฉด ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋งŒ ๋„ฃ์œผ๋ฉด ๋์ž…๋‹ˆ๋‹ค. ๋™์ผํ•œ ๊ฒƒ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๊นŒ?
4~5๋…„์ด ์ง€๋‚ฌ์ง€๋งŒ ์•„๋ฌด๋Ÿฐ ์ง„์ „์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ƒฅ ๋†€๋ž๋‹ค...

์˜ค๋Š˜ ํ˜„์žฌ ์ด ๊ธฐ๋Šฅ์กฐ์ฐจ ์•„์ง ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
์‹คํ–‰ --cap-add=SYS_PTRACE
๋งŽ์€ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์— ๋งž๋Š”..

Gentoo Linux ํ˜ธ์ŠคํŠธ์—์„œ ์ด Dockerfile์„ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์•ˆํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

FROM gentoo/stage3-amd64
# Download and extract latest portage
RUN wget http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2 && \
    wget http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2.md5sum && \
    md5sum -c portage-latest.tar.bz2.md5sum 
RUN tar -xjvf portage-latest.tar.bz2 -C /usr
RUN emerge dev-lang/go

dev-lang/go๋ฅผ ์ด๋จธ์ง•ํ•  ๋•Œ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

##### Building Go bootstrap tool.
cmd/dist
 * /var/tmp/portage/sys-apps/sandbox-2.12/work/sandbox-2.12/libsandbox/trace.c:_do_ptrace():75: failure (Operation not permitted):
 * ISE:_do_ptrace: ptrace(PTRACE_TRACEME, ..., 0x0000000000000000, 0x0000000000000000): Operation not permitted
/usr/lib64/libsandbox.so(+0xb692)[0x7fd10e265692]
/usr/lib64/libsandbox.so(+0xb778)[0x7fd10e265778]
/usr/lib64/libsandbox.so(+0x6259)[0x7fd10e260259]
/usr/lib64/libsandbox.so(+0x6478)[0x7fd10e260478]
/usr/lib64/libsandbox.so(+0x7611)[0x7fd10e261611]
/usr/lib64/libsandbox.so(execve+0x3f)[0x7fd10e2634ff]
bash[0x41d8ff]
bash[0x41f387]
bash[0x420138]
bash[0x4219ce]
/proc/330/cmdline: bash ./make.bash 

 * ERROR: dev-lang/go-1.9.2::gentoo failed (compile phase):
 *   build failed
 * 
 * Call stack:
 *     ebuild.sh, line 124:  Called src_compile
 *   environment, line 1034:  Called die
 * The specific snippet of code:
 *       ./make.bash || die "build failed"
 * 
 * If you need support, post the output of `emerge --info '=dev-lang/go-1.9.2::gentoo'`,
 * the complete build log and the output of `emerge -pqv '=dev-lang/go-1.9.2::gentoo'`.
 * The complete build log is located at '/var/tmp/portage/dev-lang/go-1.9.2/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/dev-lang/go-1.9.2/temp/environment'.
 * Working directory: '/var/tmp/portage/dev-lang/go-1.9.2/work/go/src'
 * S: '/var/tmp/portage/dev-lang/go-1.9.2/work/go'

--cap-add=SYS_ADMIN --device /dev/fuse ๋˜๋Š” --privileged ์—†์ด ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

RUN apt-get -y install unionfs-fuse
RUN unionfs-fuse -o cow dir1=RW:dir2=RO dir3/

์ง„์ž…์ ์— ๋ณ„๋„์˜ bash ํŒŒ์ผ๋กœ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹จ์ผ Dockerfile์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@amd-nick ๋นŒ๋“œ ์ค‘ RUN unionfs-fuse ... ๋ผ์ธ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์˜ˆ์ƒํ•˜์‹ญ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์ด ์ž‘๋™ํ•˜๋”๋ผ๋„ ๋‹จ์ผ RUN ๋™์•ˆ์—๋งŒ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ๋งˆ์šดํŠธ๋˜๊ณ  ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

@thaJeztah ์„ค๋ช…ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ด repo ๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ฑด๋ฌผ์—์„œ ์ด ์ค„์„ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ๋‚˜์š”?

์•ˆ๋…•ํ•˜์„ธ์š”

๋ฌด์ž‘์œ„๋กœ ๋„์ปค ๋นŒ๋“œ๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์„ ํƒํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ DockerFile ๋‚ด์—์„œ "ํ˜ธ์ŠคํŠธ ์ด๋ฆ„"์„ ์‹คํ–‰ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋„์ปค ๋นŒ๋“œ๋ฅผ RUNP๋กœ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ๋นŒ๋“œ ์ค‘์— ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์„ ํƒํ•˜๋Š” ์˜ต์…˜์„ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

Kaniko๋กœ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์ด๋ฏธ์ง€๋ฅผ @maneamarius Mac ์šฉ ๋ถ€๋‘ ๋…ธ๋™์ž์—์˜ Dockerfile๋กœํ–ˆ๋‹ค ๊ทธ๊ฒƒ์„ ๋‹น์‹ ์ด Kaniko์˜ ์ „ํ™” ํ•œ ๋ฒˆ ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌ์ถ• ํ•  ๊ฒƒ docker run ์— "๋นŒ๋“œ"๋ช…๋ น --cap-add=SYS_PTRACE . ๊ทธ๋Ÿฌ๋‚˜ ๊ฒฐ๊ณผ tarball์„ ๋กœ์ปฌ๋กœ ๋กœ๋“œํ•˜๋Š” ๋ฐ ์•ฝ๊ฐ„์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฒ„๋ ˆ์ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ  ๋ ˆ์ด์–ด ์บ์‹ฑ์ด ์—ฌ์ „ํžˆ WIP์ด๊ธฐ ๋•Œ๋ฌธ์— RAM ์‚ฌ์šฉ๋Ÿ‰์ด ์•ฝ๊ฐ„ ๋†’์Šต๋‹ˆ๋‹ค. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ํ‘ธ์‹œํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์•„์ง ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

docker run --cap-add=SYS_PTRACE --rm -v $(pwd):/workspace gcr.io/kaniko-project/executor:latest --dockerfile=Dockerfile --context=/workspace --tarPath=/workspace/test.tar --destination=test  --single-snapshot

์ด ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉด Puppet on Redhat/CentOS ๊ธฐ๋ณธ ์ด๋ฏธ์ง€๋ฅผ ํ†ตํ•ด Docker ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฒŒ์‹œํ•œ ์ดํ›„๋กœ Kaniko ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธ RUN ๋ฐ˜๋ณต ์ €์žฅ ๋ฐ ์‹คํ–‰ ์ž‘์—…์ด ์—†์ง€๋งŒ alpine , ubuntu ๋ฐ ์ธ๊ธฐ ์žˆ๋Š” ๋ฒ ์ด์Šค๊ฐ€ ๋ฌด์—‡์ด๋“ ).

๋‚ด๊ฐ€์˜ @maneamarius์„ ๊ตฌ์ถ• ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค ๊ณณ์€ ์ƒํƒœ์—์„œ์˜ ์  ํˆฌ ์ด๋ฏธ์ง€์— Golang ๋‚˜์˜จ๋‹ค Dockerfile ์˜ Dockerfile ๋˜๋Š” ์ž๋ฅด๊ณ  ๊ทธ๊ฒƒ์„ ์–ด๋–ค ์‹ ์œผ๋กœ๋“  (EDIT @maneamarius๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ์ด ํ”„๋กœ์ ํŠธ / ๋ฐ๋ชจ๋ฅผ '๋‚˜๋Š” ์ดํ›„ํ–ˆ์Šต๋‹ˆ๋‹ค ์  ํˆฌ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€๋ฅผ ์ด ํฌ์ŠคํŠธ ๋‹น์‹œ latest ์˜€๋˜ ๋ฒ„์ „์œผ๋กœ ๊ณ ์ •ํ•˜๊ธฐ ์œ„ํ•ด Dockerfile ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์—ฌ์ „ํžˆ ์ˆ˜์ •๋˜์ง€ ์•Š์€ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ) :

https://github.com/nelsonjchen/kaniko-privileged-maneamarius-moby-1916

๋˜ํ•œ --cap-add=SYS_PTRACE ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Kaniko๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Dockerfile์„ ์ด๋ฏธ์ง€๋กœ ๋นŒ๋“œํ•˜๊ณ  Kaniko์˜ ์ถœ๋ ฅ tarball์„ ๋กœ๋“œํ•˜๊ณ  ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€์—์„œ go version ๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก Azure Pipelines๋ฅผ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€ํ™”ํ˜• "์ƒ๋ช… ์ฆ๋ช…"์ด ์žฌ๋ฏธ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์žˆ๋Š” ์ด์ „ ์˜๊ฒฌ ์ค‘ ์ผ๋ถ€๋Š” CI ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด์„œ๋„ ์šฐ๋ คํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๊ฐœ CI ์‹œ์Šคํ…œ๋„ ์ž‘๋™ํ•˜๋„๋ก ๊ตฌ์„ฑํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. BTW, Travis CI๊ฐ€ ๊ณ ๋ ค๋˜์—ˆ์ง€๋งŒ ๋นŒ๋“œ ์ถœ๋ ฅ์ด ๋„ˆ๋ฌด ๊ธธ์–ด ์ข…๋ฃŒ๋˜์—ˆ๊ณ  Azure๋Š” 166k ๋ผ์ธ์˜ ์ถœ๋ ฅ์— ์™„๋ฒฝํ•˜๊ฒŒ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค. Dockerfile์ด ์•ฝ 70,000์ค„์˜ ์ถœ๋ ฅ์œผ๋กœ ๋นŒ๋“œ๋˜์—ˆ๋‹ค๋ฉด Travis CI์—์„œ ์„ฑ๊ณตํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Azure Pipeline ๋นŒ๋“œ ์ถœ๋ ฅ์— ๋Œ€ํ•œ ๋งํฌ๋Š” README ์ƒ๋‹จ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋นŒ๋‹ค ๋ฃจํฌ ์‚ฌ์šฉ

์ด์ œ ์ด ๊ธฐ๋Šฅ์„ docker buildx build --allow security.insecure ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

https://github.com/docker/buildx/blob/master/README.md# --allowentitlement
https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md#run ---securityinsecuresandbox

@AkihiroSuda buildx ๋ฅผ) ์‹œ๋„ํ•˜๊ธฐ ์œ„ํ•ด ๋„์ปค๋ฅผ ๋ฒ„์ „ 19.03์œผ๋กœ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ธ๊ธ‰ ํ•œ ๋ช…๋ น์„ ์‹œ๋„ํ–ˆ์„ ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

$ docker buildx build --allow security.insecure -t sample-petclinic -f Dockerfile .
[+] Building 0.0s (0/0)                                                                                                                                                         
failed to solve: rpc error: code = Unknown desc = entitlement security.insecure is not allowed

Docker version :

Client: Docker Engine - Enterprise
 Version:           19.03.2
 API version:       1.40
 Go version:        go1.12.8
 Git commit:        c92ab06
 Built:             Tue Sep  3 15:57:09 2019
 OS/Arch:           linux/amd64
 Experimental:      true

Server: Docker Engine - Enterprise
 Engine:
  Version:          19.03.2
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.8
  Git commit:       c92ab06
  Built:            Tue Sep  3 15:55:37 2019
  OS/Arch:          linux/amd64
  Experimental:     true
 containerd:
  Version:          1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

buildx ๋ฌธ์„œ: For entitlements to be enabled, the buildkitd daemon also needs to allow them with --allow-insecure-entitlement

@AkihiroSuda ๊ฐ์‚ฌ

๋‹ค๋ฅธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด.
ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ibmdb2 ์ปจํ…Œ์ด๋„ˆ์˜ dockerfile ๋นŒ๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
IBM์€ ํ—ˆ๋ธŒ์—์„œ v10 ์ด๋ฏธ์ง€๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ v11 DB ์ด๋ฏธ์ง€๋Š” --privileged๋กœ๋งŒ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ Dockerfile์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ๋Š” ์ด์ œ db2๊ฐ€ ๊ถŒํ•œ ์—†์ด ์‹œ์ž‘๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. :(
docker run ๋ฐ docker commit์„ ์‚ฌ์šฉํ•˜๋Š” ๋ณต์žกํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ƒ์‚ฐ์ ์ธ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์ด๊ฒƒ์€ ๋งŽ์€ ์ถ”๊ฐ€ ๋ณต์žก์„ฑ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๋ฌผ์–ด ๋ด์•ผ https://github.com/maneamarius ์— https://github.com/moby/moby/issues/1916#issuecomment -361173550

์ด๊ฒƒ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ์™œ ๊ทธ๋ ‡๊ฒŒ ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ? ๋นŒ๋“œ๋Š” ํ›„๋“œ ์•„๋ž˜์—์„œ ์‹คํ–‰์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ๊ถŒํ•œ ์žˆ๋Š” ๋นŒ๋“œ ์˜ต์…˜์€ ์ผ์ข…์˜ "์ด์ „ ๋ฒ„์ „ ํ˜ธํ™˜์„ฑ"์„ ์ง€์›ํ•˜๋ฉฐ ์›น ์กฐ์‚ฌ ํ›„ ์ด ๋ฌธ์ œ๋ฅผ ๊ฒช์€ ์‚ฌ๋žŒ์ด ๋‚˜ ํ˜ผ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@uvwild ์ด๊ฒƒ์ด ๊ท€ํ•˜์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋„์›€์ด ๋˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ kaniko ๋กœ ๋นŒ๋“œ๋ฅผ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๋Š” ๋„์ปค ๋ฐ๋ชฌ ์—†์ด ๋นŒ๋“œ๋˜๋ฉฐ ์™„๋ฃŒ๋˜๊ณ  kaniko๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” --privileged ๋˜๋Š” --cap-add <capability which is needed> ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์ด ๊ธฐ๋Œ€ํ–ˆ๋˜ ์™„์ „ํ•œ ์†”๋ฃจ์…˜์ด ์•„๋‹ˆ๋ผ ๋‹น์‹ ์˜ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์— ๋งž์„ ์ˆ˜ ์žˆ๋Š” ๋” ์‰ฌ์šด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋ผ๋Š” ๊ฒƒ์„ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค.

ํŽธ์ง‘: @alexey-vostrikov๊ฐ€ ๋งํ–ˆ๋“ฏ์ด buildah ๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐ --privileged ๊ฐ€ ํ•„์š”ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋” ์ ํ•ฉํ•œ ์†”๋ฃจ์…˜์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰