Compose: "docker-compose up"์—์„œ --user ์˜ต์…˜ ์ง€์›

์— ๋งŒ๋“  2015๋…„ 06์›” 09์ผ  ยท  53์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: docker/compose

๋‚ด ์ž์‹ ์˜ UID๋กœ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด --user ์˜ต์…˜์„ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ฃผ๋กœ ํƒ‘์žฌ๋œ ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ ๋•Œ๋ฌธ์ด๋ฉฐ dockerized ์•ฑ์ด ๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ ๋‚ด๊ฐ€ ์†Œ์œ ํ•œ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

docker-compose up ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ ์–ด๋„ ์ง์ ‘์ ์œผ๋กœ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋ฏธ์นœ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

NAME=`compose run -d --user="$UID" someservicename`
docker rename $NAME ${NAME/_run/}

๋ถ€๋“œ๋Ÿฌ์›€์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ•˜์œ„ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

areconfig

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

๊ฑฐ์˜ 1๋…„ ์ „์— ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ด ์ฃผ์ œ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ ๋‹น์‹œ์—๋Š” ์–ด๋–ค ์†”๋ฃจ์…˜๋„ ์ œ๊ณต๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— docker-compose๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ž˜ํ•‘ bash ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŽ์ด ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

1๋…„์ด ์ง€๋‚œ ์ง€๊ธˆ์€ ๋ชจ๋‘ ๋˜‘๊ฐ™์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ๊ณต๊ธ‰์ž๊ฐ€ ์•„๋‹ˆ๋ผ ๋ž˜ํผ์ธ docker-compose์™€ ๊ฐ™์€ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ์ด๋Ÿฌํ•œ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

$UID๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Linux์—์„œ ๋‚ด๋ณด๋‚ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฒ”์šฉ docker-compose๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์†Œํ”„ํŠธ์›จ์–ด๋Š” ํ”„๋ก ํŠธ ์—”๋“œ ์†”๋ฃจ์…˜์œผ๋กœ ๊ฐ„์ฃผ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์ž์ฒด๋กœ ์ด์ƒํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ฃ ?

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

services:
  web:
     ...
     host_command: export UID

๋ป”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

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

docker-compose run --user ๋Š” ์˜ต์…˜์ด๊ณ  docker-compose.yml ๋Š” user ํ‚ค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค(http://docs.docker.com/compose/yml/ #working95dir-entrypoint-user-hostname-domainname-mem95limit-privileged-restart-stdin95open-tty-cpu95shares).

user ํ•„๋“œ์—์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํ™•์ธ์„ ์ง€์›ํ•ด์•ผ $UID ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งž๋‚˜์š”? #1377

์•ˆ๋…•. ์˜ˆ, $UID ํ™•์žฅ์€ ์ด ๊ฒฝ์šฐ ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ docker-compose up --user ์˜ต์…˜( docker-compose run ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ)์€ ์ „์ฒด ํ”„๋กœ์ ํŠธ๋ฅผ ํŠน์ • ์‚ฌ์šฉ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์š”์ ์€ yml์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŠน์ • ์‚ฌ์šฉ์ž๋กœ ์ „์ฒด ํ”„๋กœ์ ํŠธ ์‹œ์ž‘

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

์ƒ๊ด€์—†์–ด์š”, ์Šคํฌ๋กค์„ ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด Linux์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๊นŒ? boot2docker๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํ•ฉ๋ฆฌ์ ์ธ ๊ถŒํ•œ์ด ์žˆ๋Š” ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

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

์˜ˆ, Linux์—์„œ.

ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ์„ ํƒ‘์žฌํ•˜์—ฌ CI์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ, ์••๋‹ˆ๋‹ค). ์ด ์˜ต์…˜์ด ์—†์œผ๋ฉด ์ผ๋ถ€ ํŒŒ์ผ์€ "์ž˜๋ชป๋œ" ์†Œ์œ ๊ถŒ(์˜ˆ : root:root )์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ „์šฉ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ด ์ปจํ…Œ์ด๋„ˆ์—์„œ ํŒŒ์ผ์„ ๊ฒ€์‚ฌ/๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ์ด ํ›จ์”ฌ ๋” ํŽธ๋ฆฌํ•˜๊ณ  ์Šคํฌ๋ฆฝํŒ…์ด ๋œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

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

@mrzechonek ํ™˜๊ฒฝ ๋•Œ๋ฌธ์— ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ์Šต๊ด€์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@josephpage ๋„ค, ๊ทธ๋Ÿด ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. $UID ํ™•์žฅ์€ ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์€ ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ๊ถŒํ•œ๋ฟ์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ํ”„๋กœ์„ธ์Šค๋ฅผ $UID๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ ์™ธ์— ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค...

@aanand ๊ฐ€ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์‹ค์ œ๋กœ ์ด ๊ธฐ๋Šฅ์ด Damon ์ž์ฒด์— ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ๊ทธ๋Ÿฌํ•œ ๋ชจ๋“œ์—์„œ ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•˜๋Š” ์˜ต์…˜(์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์•„๋‹๊นŒ?).

@mrzechonek , ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”. ์ง€๊ธˆ ์šฐ๋ฆฌ๋Š” docker-compose run --user ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  compose ๊ฐ€ up ๋ช…๋ น์— ์˜ํ•ด ์‹œ์ž‘๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋„๋ก ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ๋ ˆ์ด๋ธ”์„ ๋‹ค์‹œ ์ง€์ •ํ•˜์—ฌ stop ๋ฐ ps ๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

1377์€ ๋งˆ์Šคํ„ฐ์— ์žˆ๊ณ  1.5.0 ๋ฆด๋ฆฌ์Šค์— ์žˆ์œผ๋ฏ€๋กœ docker-compose.yml user: $UID ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. master๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํŽธํ•˜๋‹ค๋ฉด ์ง€๊ธˆ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด RC ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋‹ค์Œ ๋ช‡ ์ฃผ ์•ˆ์— ํ•จ๊ป˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ ์ž์ฒด๊ฐ€ #1377์˜ ์ผ๋ถ€๋กœ ๊ตฌํ˜„๋˜์—ˆ์œผ๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ compose๊ฐ€ up ๋ช…๋ น์œผ๋กœ ์‹œ์ž‘๋œ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•˜๋„๋ก ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ๋ ˆ์ด๋ธ”์„ ๋‹ค์‹œ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ์ด๊ฒƒ์˜ ํ•„์š”์„ฑ์— ๋Œ€ํ•ด ์ฒ˜์Œ ๋“ค์€ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค(๋น„๋ก ์ด ๊ฒฝ์šฐ์—๋Š” ์ผ์‹œ์ ์ธ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค). #2042์— ์ˆ˜์ • ์ œ์•ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. #1377์ด ์ด ๋ฌธ์ œ๋ฅผ ์ž˜ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

@mrzechonek ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๋˜‘๊ฐ™์€ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค: "๋„์ปคํ™”๋œ ์•ฑ์ด ๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ ๋‚ด๊ฐ€ ์†Œ์œ ํ•œ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค."

user: $UID ๋ฅผ web ์ปจํ…Œ์ด๋„ˆ์— ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๋Š”๋ฐ docker-compose run web touch foo ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋‹ค์Œ์„ ์–ป์Šต๋‹ˆ๋‹ค.

WARNING: The UID variable is not set. Defaulting to a blank string.

foo ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์—ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ root ์†Œ์œ ์ž…๋‹ˆ๋‹ค.

user: $USER ์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ $UID ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •์ด ๋ˆ„๋ฝ๋œ ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๋Š” ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@michaelmior์™€ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€์‹  $USER ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด System error: Unable to find user Max ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์‚ฌ์šฉ์ž์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

docker-compose ์‹คํ–‰ ์ค‘์— $UID๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์›์ธ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š”, ์—ฌ๊ธฐ์— ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์ €๋Š” Fedora 23์„ ์‚ฌ์šฉ ์ค‘์ด๋ฉฐ ํ˜ธ์ŠคํŠธ์—์„œ env ๋ช…๋ น์„ ํ˜ธ์ถœํ•  ๋•Œ UID ๋ณ€์ˆ˜๊ฐ€ ์ „ํŒŒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:
๋จผ์ € ํ˜ธ์ŠคํŠธ์—์„œ export UID ๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ docker-compose ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

docker-compose๊ฐ€ ๋‚ด๋ณด๋‚ผ ํ•„์š” ์—†์ด $UID ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒ์šฉ๊ตฌ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค.

UID ์„ ๋‚ด๋ณด๋‚ด์ง€ ์•Š์œผ๋ฉด ์ž‘์„ฑ์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์œผ๋ฏ€๋กœ ์š”์ฒญํ•˜์‹  ๋‚ด์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ์ค‘์ธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ์ค‘์ธ ์‚ฌ์šฉ์ž๋ฅผ ์œ ์ถ”ํ•  ๋ฐฉ๋ฒ•์ด ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋ฌผ๋ก  $USER ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์ง€๋งŒ Compose ํŒŒ์ผ์—์„œ๋„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ๋ณ€์ˆ˜๋ฅผ ๋‚ด๋ณด๋‚ด์ง€ ์•Š์œผ๋ฉด ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ •๋ง ์‰ฌ์šด ์†”๋ฃจ์…˜์€ ๊ทธ๋ƒฅ ๋‚ด๋ณด๋‚ด๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

UID๊ฐ€ ์„ ์–ธ๋˜์ง€ ์•Š์œผ๋ฉด ์‹คํ–‰ ํŒŒ์ผ์ด ์‹คํ–‰ํ•œ ์‚ฌ๋žŒ์˜ uid๋ฅผ ๋ณด๊ณ  ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์ƒ์šฉ๊ตฌ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ณ  ๋‹จ๊ณ„๋ฅผ ๊ฐ„๊ณผํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ docker-compose up ๋‹จ๊ณ„๋งŒ ์žˆ๋Š” ์„ค์ •์„ ์›ํ•ฉ๋‹ˆ๋‹ค. 99%์˜ ์‚ฌ๋žŒ๋“ค์ด ์ •ํ™•ํžˆ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” ์ž‘์€ ๋ณ€์ˆ˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Mac๊ณผ Linux ํ˜ธ์ŠคํŠธ ๊ฐ„์— ์œ ์‚ฌํ•œ ๋ฌธ์ œ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ์œ ์šฉํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ Linux์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ•์ œํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋ฃจํŠธ๋กœ ์‹คํ–‰ํ•˜๋”๋ผ๋„ ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ์˜ ์ƒˆ ํŒŒ์ผ์— ์œ ์šฉํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š” Mac์˜ ๋™์ž‘์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‹ค์ œ๋กœ ๋‚ด Mac ๋™์ž‘์ด Linux ๋™์ž‘๋ณด๋‹ค ๋‚˜์€ ์ด์œ ์— ๋Œ€ํ•ด ํ˜ผ๋ž€์Šค๋Ÿฌ์› ๊ณ  ์ด ๋ฌธ์ œ์™€ ์—„๋ฐ€ํžˆ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. Linux์—์„œ ์ข‹์€ ๊ฒฝํ—˜์„ ์œ„ํ•œ ์†”๋ฃจ์…˜์„ ์ฐพ๊ธฐ ์œ„ํ•ด Dinghy์—์„œ ๋ฌธ์ œ๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค .

@mrzechonek ํ˜ธ์ŠคํŠธ ๋ฐ ์ปจํ…Œ์ด๋„ˆ์—์„œ ํŒŒ์ผ ๊ถŒํ•œ์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด user: ์ง€์‹œ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

.yml ํŒŒ์ผ์— user: $UID ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. Linux, Gentoo ๋ฐ Ubuntu 12.04์— ์žˆ์Šต๋‹ˆ๋‹ค.

@mrzechonek ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋Ÿฐํƒ€์ž„ ๋งˆ๋ฒ•์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ํ•œ user: ๋Š” Dockerfile ๋ช…๋ น์„ ๋ฏธ๋Ÿฌ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ๋‹จ์ˆœํžˆ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ๋ช…๋ น์ด user: $UID ๋กœ ์‹คํ–‰๋จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ณผ๋ฅจ ๊ถŒํ•œ =/์— ์–ด๋–ป๊ฒŒ ๋„์›€์ด๋˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@mrzechonek : ์ด๊ฒƒ์€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ปจํ…Œ์ด๋„ˆ ์ž์ฒด๊ฐ€ ๋ˆ„๊ตฌ๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€์— ์ƒ๊ด€์—†์ด ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ ์™ธ๋ถ€์—์„œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๊ธฐ๋Šฅ์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค: _" ์ปจํ…Œ์ด๋„ˆ์˜ root ๊ฐ€ ํ˜ธ์ŠคํŠธ์˜ myuser ์‚ฌ์šฉ์ž๋กœ ์”๋‹ˆ๋‹ค."_.

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

๊ทธ๋Ÿฌ๋‚˜ ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉ์ž๋ฅผ ํ˜ธ์ŠคํŠธ ์‚ฌ์šฉ์ž์— "๋™์ ์œผ๋กœ" ๋งคํ•‘ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ๊ตฌํ˜„๋˜์ง€ ์•Š์€ ๊ธฐ๋Šฅ์ธ docker ๋ฐ๋ชฌ ์ž์ฒด์—์„œ LXC ์‚ฌ์šฉ์ž ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์•„์ง? ์•Œ๊ณ ์žˆ๋‹ค?).

docker-compose ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋†“์นœ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://integratedcode.us/2015/10/13/user-namespaces-have-arrived-in-docker/

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ ์–ด๋„ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋„์ปค๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@mrzechonek ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ถ๊ทน์ ์œผ๋กœ ์ €๋Š” @gkop ์ด ํ•˜๋ ค๊ณ  ํ•˜๋Š” ์ž‘์—…์„ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ์Šคํƒ€ํ„ฐ๊ฐ€ ์†Œ์œ ํ•œ ํ˜ธ์ŠคํŠธ ํƒ‘์žฌ ๋ณผ๋ฅจ์˜ ์ปจํ…Œ์ด๋„ˆ์—์„œ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ตœ์‹  Docker 1.12 ๋ฒ ํƒ€๊ฐ€ ์„ค์น˜๋œ OS X์—์„œ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ด๋ฉฐ(์–ด๋–ป๊ฒŒ?) Linux์—์„œ๋„ ์ด๊ฒƒ์ด ๋ณด๊ณ  ์‹ถ์€ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

@mrzechonek - ์ผ๋ถ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ํŠน์ • ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ ์ค‘์ธ ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ์˜ ์‹ค์ œ ์‚ฌ์šฉ์ž์— ๋งคํ•‘๋˜๋„๋ก ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ๋ฃจํŠธ๋กœ ๋‘๊ณ  ์ปจํ…Œ์ด๋„ˆ ํ—ค๋“œ์— ๋งคํ•‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

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

@dmitrym0 OSX์—์„œ๋Š” ๊ธฐ๋ณธ OSX ๊ฐ€์ƒํ™”(https://github.com/mist64/xhyve/) ๋‚ด์—์„œ boot2docker ๋ฅผ ์‹คํ–‰ํ•œ ๋‹ค์Œ ํ•ด๋‹น VM ๋‚ด์—์„œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋„์ปค ๋ฐ๋ชฌ์ด ์•„๋‹ˆ๋ผ ์‹ค์ œ๋กœ ๋ชจ๋“  ์‚ฌ์šฉ์ž ๋งคํ•‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” VM์ด๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์˜ root ๋Š” ์—ฌ์ „ํžˆ ํ˜ธ์ŠคํŠธ์˜ root ์ž…๋‹ˆ๋‹ค.

$UID๋Š” Ubuntu 16.04 ํ˜ธ์ŠคํŠธ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. docker-compose๊ฐ€ ๊ทธ๊ฒƒ์„ ์‹คํ–‰ํ•˜๊ณ  ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ทธ๊ฒƒ์„ ์ฃผ์ž…ํ•˜๋Š” ์‚ฌ์šฉ์ž ID๋ฅผ ํš๋“ํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์†Œํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ์•ฑ ๊ฐœ๋ฐœ ์ž‘์„ฑ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์„ค์ •๋œ ์ƒ์šฉ๊ตฌ ์ฝ”๋“œ์™€ ํ™˜๊ฒฝ์ด ํ›จ์”ฌ ์ ์Šต๋‹ˆ๋‹ค. ์ž‘์„ฑ์€ ๋ชจ๋‘ ๋„์ปค UX์— ๊ด€ํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

docker-compose up --user ๋˜๋Š” ์‹คํ–‰ ์ค‘์ธ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ +1 ....

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์ด๋‚˜ ๋‰ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”. ์ €๋Š” ๊ฝค ์˜ค๋ž˜์ „์— ๋„์ปค ์—”์ง„์— ๋Œ€ํ•ด ์ด ๊ธฐ๋Šฅ์„ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค: https://github.com/docker/docker/issues/22415

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

์ด๊ฒƒ์ด ๋‹น์‹ ์ด ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฒƒ์ด๋ผ๋ฉด, ๋‚ด๊ฐ€ ๋งํฌํ•œ ํ‹ฐ์ผ“์„ ๊ณต์œ ํ•˜๊ณ  ์ฐฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค: user: "1000:1000"

@jovanialferez ์ฐธ๊ณ ๋กœ, ๊ทธ๋ ‡๊ฒŒ ํ•˜๋“œ์ฝ”๋”ฉํ•˜๋ฉด UID์™€ GID๊ฐ€ 1000์œผ๋กœ ์„ค์ •๋˜์ง€ ์•Š์€ ํ”„๋กœ์ ํŠธ์— ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ฐธ์—ฌํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์— OSX๋Š” 500์—์„œ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ๋ฒˆํ˜ธ๋ฅผ ๋งค๊ธฐ๊ธฐ ์‹œ์ž‘ํ•˜๊ณ  ๋ชจ๋“  Linux ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž์™€ ํ•จ๊ป˜ ์„ค์น˜ํ•˜๋ฉด UID๊ฐ€ 1000๋ณด๋‹ค ์ปค์ง‘๋‹ˆ๋‹ค.

@jovanialferez ๋Š” Linux์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์œ ๋ช…ํ•œ. ๊ฐ์‚ฌ ํ•ฉ๋‹ˆ๋‹ค @nfm @luispabon

๋‚˜๋Š” ์ตœ๊ทผ์— Mac์—์„œ Linux๋กœ ์˜ฎ๊ฒผ๊ณ  ๋ฐฉ๊ธˆ ์ด๊ฒƒ์— ๋ถ€๋”ช์ณค์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์•„์ง ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๋ฐฉ๋ฒ•์„ ์ •๋ง๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์–ธ๊ธ‰: https://github.com/moby/moby/issues/22415

์šฐ๋ฆฌ๋Š” ๋„์ปค ํ”„๋กœ์„ธ์Šค๋ฅผ ํŠน์ • ์‚ฌ์šฉ์ž์—๊ฒŒ ์™ธ๋ถ€์  ์œผ๋กœ ๋งคํ•‘ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ •๋ง๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์™ธ์  ์œผ๋กœ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์—์„œ ํ”„๋กœ์„ธ์Šค์˜ UID/GID๋ฅผ ์„ ํƒํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ์ปจํ…Œ์ด๋„ˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ์™ธ๋ถ€์—์„œ ๋กœ์ปฌ UID/GID๋กœ ๋งคํ•‘ ํ•ฉ๋‹ˆ๋‹ค.

๋„ค ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์‚ฌ์šฉ์ž์˜ uid/gid๋ฅผ ์ปจํ…Œ์ด๋„ˆ์— ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์€ Linux์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋„์ปค ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” Windows์—์„œ ์ข€ ๋” ๋‚œํ•ดํ•œ ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ˜ธ์ŠคํŠธ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ํŒŒ์ผ์„ ์“ฐ๋Š” OrientDB ๋กœ์ปฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ Windows์—์„œ๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•„... ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ์ด ๋ธ”๋ก ๋ณผ๋ฅจ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ผ๊นŒ์š”?

๊ฑฐ์˜ 1๋…„ ์ „์— ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ด ์ฃผ์ œ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ ๋‹น์‹œ์—๋Š” ์–ด๋–ค ์†”๋ฃจ์…˜๋„ ์ œ๊ณต๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— docker-compose๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ž˜ํ•‘ bash ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŽ์ด ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

1๋…„์ด ์ง€๋‚œ ์ง€๊ธˆ์€ ๋ชจ๋‘ ๋˜‘๊ฐ™์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ๊ณต๊ธ‰์ž๊ฐ€ ์•„๋‹ˆ๋ผ ๋ž˜ํผ์ธ docker-compose์™€ ๊ฐ™์€ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ์ด๋Ÿฌํ•œ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

$UID๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Linux์—์„œ ๋‚ด๋ณด๋‚ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฒ”์šฉ docker-compose๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์†Œํ”„ํŠธ์›จ์–ด๋Š” ํ”„๋ก ํŠธ ์—”๋“œ ์†”๋ฃจ์…˜์œผ๋กœ ๊ฐ„์ฃผ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์ž์ฒด๋กœ ์ด์ƒํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ฃ ?

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

services:
  web:
     ...
     host_command: export UID

๋ป”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

+1

์ด ๋ฌธ์ œ๋Š” ์ข‹์•„์š”์™€ +1์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ €๋ฅผ ํฌํ•จํ•˜์—ฌ ๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ„๊ณผํ–ˆ์ง€๋งŒ ํ•„์š” ํ•˜๊ณ  ์š”์ฒญํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์— ๋งž์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์˜ +1์„ ์ฃผ๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์— ์žˆ๋‹ค. ํ˜„์žฌ ๋‚ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฃจํŠธ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„์ง๊นŒ์ง€๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์“ธ ์ˆ˜ ์žˆ๋Š” ํ˜ธ์ŠคํŠธ์˜ ๋ณผ๋ฅจ์„ ๊ณต์œ ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ user: 1000:1000 ๋Œ€์‹  ํ™•์žฅ์ด ๊ฐ€์žฅ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ฐฉ๋ฒ• ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•ž์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์˜ ์‚ฌ์šฉ์ž์™€ ์ถฉ๋Œ์„ ์ผ์œผํ‚ฌ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. $UID๋Š” ๋‚ด๋ณด๋‚ด์ง€ ์•Š๋”๋ผ๋„ docker-expose ๊ธฐ๋ฐ˜๋ณด๋‹ค ํ™˜๊ฒฝ ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์ž„์ด ์ž…์ฆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ๋‚ด 2 ์„ผํŠธ. ๊ทธ๋ž˜์„œ, ์–ด์จŒ๋“  ์ด๊ฒƒ์„ ํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์€ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@darkguy2008 - ์ด๊ฒƒ์„ ๊ณผ๋Œ€ ๊ด‘๊ณ ํ•˜์‹ญ์‹œ์˜ค: https://github.com/moby/moby/issues/22415

compose๊ฐ€ ๊ทธ ์œ„์— ๋นŒ๋“œ๋˜๊ธฐ ์ „์— docker ์ž์ฒด ๋‚ด์— ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

docker-compose run --user ๋Š” ์˜ต์…˜์ด๊ณ  docker-compose.yml ๋Š” user ํ‚ค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค(http://docs.docker.com/compose/yml/ #working95dir-entrypoint-user-hostname-domainname-mem95limit-privileged-restart-stdin95open-tty-cpu95shares).

user ํ•„๋“œ์—์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํ™•์ธ์„ ์ง€์›ํ•ด์•ผ $UID ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งž๋‚˜์š”? #1377

๋งํฌ๊ฐ€ ๊นจ์กŒ์Šต๋‹ˆ๋‹ค.

ํ•„์ˆ˜ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

version: "3"
services:
  testapp:
    image: ubuntu:20.04
    entrypoint: /bin/bash -c "cd $PWD && touch tmp"
    user: ${CURRENT_UID:?"Please run as follows 'CURRENT_UID=$(id -u):$(id -g) docker-compose up'"}
    volumes:
      - $PWD:$PWD

๋ณด์—ฌ์ค„ ๊ฒƒ:

ERROR: Missing mandatory value for "user" option in service "testapp": "Please run as follows 'CURRENT_UID=$(id -u):$(id -g) docker-compose up'"

ํŒŒ์ผ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰๋˜์–ด์•ผ ํ•จ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

CURRENT_UID=$(id -u):$(id -g) docker-compose up

ํ•„์ˆ˜ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

version: "3"
services:
  testapp:
    image: ubuntu:20.04
    entrypoint: /bin/bash -c "cd $PWD && touch tmp"
    user: ${CURRENT_UID:?"Please run as follows 'CURRENT_UID=$(id -u):$(id -g) docker-compose up'"}
    volumes:
      - $PWD:$PWD

๋ณด์—ฌ์ค„ ๊ฒƒ:

ERROR: Missing mandatory value for "user" option in service "testapp": "Please run as follows 'CURRENT_UID=$(id -u):$(id -g) docker-compose up'"

ํŒŒ์ผ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰๋˜์–ด์•ผ ํ•จ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

CURRENT_UID=$(id -u):$(id -g) docker-compose up

๋ฌธ์ œ๋Š” ๋‚ด ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด root ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ:

app-php-fpm  | [14-Jun-2020 00:15:12] NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root
app-php-fpm  | [14-Jun-2020 00:15:12] NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root
app-redis    | 1:M 14 Jun 2020 00:15:12.710 * Ready to accept connections
app-php-fpm  | [14-Jun-2020 00:15:12] ERROR: Unable to create the PID file (/run/php-fpm.pid).: Permission denied (13)
app-php-fpm  | [14-Jun-2020 00:15:12] ERROR: FPM initialization failed
app-webserver exited with code 1
app-mysql exited with code 1
app-php-fpm exited with code 78
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰