๋ด ์์ ์ UID๋ก ์ค์ผ์คํธ๋ ์ด์
๋ ์ปจํ
์ด๋๋ฅผ ์คํํ๋ ค๋ฉด --user
์ต์
์ ์ ๋ฌํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ์ฃผ๋ก ํ์ฌ๋ ํธ์คํธ ๋ณผ๋ฅจ ๋๋ฌธ์ด๋ฉฐ dockerized ์ฑ์ด ๋ฃจํธ๊ฐ ์๋ ๋ด๊ฐ ์์ ํ ํ์ผ์ ์์ฑํ๊ธฐ๋ฅผ ์ํฉ๋๋ค.
docker-compose up
๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ด๋ ์ง์ ์ ์ผ๋ก๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ง๊ธ์ ๋ฏธ์น ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
NAME=`compose run -d --user="$UID" someservicename`
docker rename $NAME ${NAME/_run/}
๋ถ๋๋ฌ์์ ๋ํ๋ด๋ ํ์ ์ต์ ์ ๋๋ค.
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
๊ฐ ์๋ํฉ๋๋ค.
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
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ฑฐ์ 1๋ ์ ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๊ณ ํ ๋ ์ด ์ฃผ์ ๋ฅผ ์ฐพ์์ต๋๋ค. ๊ทธ ๋น์์๋ ์ด๋ค ์๋ฃจ์ ๋ ์ ๊ณต๋์ง ์์๊ธฐ ๋๋ฌธ์ docker-compose๋ฅผ ์คํํ๊ธฐ ์ํด ๋ํ bash ์คํฌ๋ฆฝํธ๋ฅผ ๋ง์ด ๋ง๋ค์์ต๋๋ค.
1๋ ์ด ์ง๋ ์ง๊ธ์ ๋ชจ๋ ๋๊ฐ์ต๋๋ค. ์ค์ ๊ณต๊ธ์๊ฐ ์๋๋ผ ๋ํผ์ธ docker-compose์ ๊ฐ์ ์ํํธ์จ์ด์์ ์ด๋ฌํ ๊ฐ๋จํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ผ๋ง๋ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋์ง ๊ถ๊ธํฉ๋๋ค.
$UID๋ ๊ธฐ๋ณธ์ ์ผ๋ก Linux์์ ๋ด๋ณด๋ด์ง์ง ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ฒ์ฉ docker-compose๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ด ์ํํธ์จ์ด๋ ํ๋ก ํธ ์๋ ์๋ฃจ์ ์ผ๋ก ๊ฐ์ฃผ๋๊ธฐ ๋๋ฌธ์ ๊ทธ ์์ฒด๋ก ์ด์ํ ์ผ์ ๋๋ค. ๊ทธ๋ ์ฃ ?
์ฌ๋ฌ๋ถ์ด ์ฌ์ํ ์ผ์ ์๊ฐ์ ๋ญ๋นํ๋ ๊ฒ์ ์ข์ํ์ง ์๋๋ค๋ฉด - ๊ทธ๋ฆฌ๊ณ ๋๋ ๊ทธ๊ฒ์ ์ดํดํฉ๋๋ค - ์๋น์ค๋ฅผ ์คํํ๊ธฐ ์ ์ ์ฐ๋ฆฌ ๊ฐ ์์ ์ ํธ์คํธ ๋ช ๋ น์ ์คํํ๊ฒ ํ๋ ๊ฒ์ด ์ด๋ป์ต๋๊น? ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
๋ปํ์ง ์์ต๋๊น?