Moby: ๋นŒ๋” RUN์„ / bin / sh ๋Œ€์‹  / bin / bash ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

์— ๋งŒ๋“  2014๋…„ 07์›” 28์ผ  ยท  11์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: moby/moby

Dockerfile ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ์œผ๋ฉฐ bash ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. RUN์€ ๊ธฐ๋ณธ์ ์œผ๋กœ / bin / sh๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. RUN์— / bin / bash๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋„๋ก ์ง€์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

arebuilder kinquestion

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

@ORESoftware ์œ„์˜ ๋…ผ์˜๋ฅผ ์ฐธ์กฐํ•˜๊ณ  SHELL Dockerfile ๋ช…๋ น (Docker 1.12 ์ด์ƒ)์„ ์ถ”๊ฐ€ ํ•œ https://github.com/moby/moby/pull/22489๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  • ๋‹จ์ผ RUN ๋Œ€ํ•ด ๋‹ค๋ฅธ ์…ธ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์œ„์—์„œ ์„ค๋ช…ํ•œ๋Œ€๋กœ Exec ํ˜•์‹ (JSON) ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    RUN ["/bin/bash", "-c", "echo I am now using bash!"]
    
  • ์ด๋ฏธ์ง€์˜ ๊ธฐ๋ณธ ์…ธ์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด (๊ทธ๋ฆฌ๊ณ  ๋นŒ๋“œ ์ค‘์—) https://github.com/moby/moby/pull/22489 ์— ๊ตฌํ˜„ ๋œ SHELL Dockerfile ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    SHELL ["/bin/bash", "-c"]
    RUN echo I am now using bash!
    
  • ๋˜๋Š” ์œ„์˜ ์กฐํ•ฉ

    FROM ubuntu
    RUN echo I am using the default (/bin/sh)
    RUN ["/bin/bash", "-c", "echo I am using bash"]
    SHELL ["/bin/bash", "-c"]
    RUN echo I am using bash, which is now the default
    RUN ["/bin/sh", "-c", "echo I am using /bin/sh"]
    RUN ["echo", "I don't use a shell at all"]
    

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

์•„๋‹ˆ์š”, "/ bin / sh -c"๋กœ ํ•˜๋“œ ์ฝ”๋”ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋ฌผ๋ก  ์ด์ „ ๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ / bin / bash๋ฅผ / bin / sh์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ Dockerfile ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๊ณ  bash์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ๋ฆฌ๋””๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

@dwatrous ์‹œ๋„ ํ–ˆ์Šต๋‹ˆ๊นŒ RUN ["echo", "hello"] ์€ (๋Š”) /bin/sh IIRC์— ์˜ํ•ด ๋ž˜ํ•‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ ˆ๋Œ€์ ์œผ๋กœ bash๋ฅผ ์›ํ•˜๋ฉด RUN ["/bin/bash", "-c", "echo hello all in one string"] ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

bash๋Š” RUN ์ง€์นจ์—์„œ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

bash๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์˜๋„ ๋‚˜ ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค.

๋ฌธ์„œํ™”๋ฅผ ์›ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฌธ์„œ ๋ฌธ์ œ๋กœ ํ‘œ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ์งˆ๋ฌธ์ด ๋‚˜์˜จ ๊ฒƒ์€ ์„ธ ๋ฒˆ์งธ ๋˜๋Š” ๋„ค ๋ฒˆ์งธ์ž…๋‹ˆ๋‹ค.

https://github.com/docker/docker/pull/7489 ๋กœ ์ธํ•ด ์ง€๊ธˆ ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด๊ฒƒ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@ORESoftware ์œ„์˜ ๋…ผ์˜๋ฅผ ์ฐธ์กฐํ•˜๊ณ  SHELL Dockerfile ๋ช…๋ น (Docker 1.12 ์ด์ƒ)์„ ์ถ”๊ฐ€ ํ•œ https://github.com/moby/moby/pull/22489๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  • ๋‹จ์ผ RUN ๋Œ€ํ•ด ๋‹ค๋ฅธ ์…ธ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์œ„์—์„œ ์„ค๋ช…ํ•œ๋Œ€๋กœ Exec ํ˜•์‹ (JSON) ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    RUN ["/bin/bash", "-c", "echo I am now using bash!"]
    
  • ์ด๋ฏธ์ง€์˜ ๊ธฐ๋ณธ ์…ธ์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด (๊ทธ๋ฆฌ๊ณ  ๋นŒ๋“œ ์ค‘์—) https://github.com/moby/moby/pull/22489 ์— ๊ตฌํ˜„ ๋œ SHELL Dockerfile ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    SHELL ["/bin/bash", "-c"]
    RUN echo I am now using bash!
    
  • ๋˜๋Š” ์œ„์˜ ์กฐํ•ฉ

    FROM ubuntu
    RUN echo I am using the default (/bin/sh)
    RUN ["/bin/bash", "-c", "echo I am using bash"]
    SHELL ["/bin/bash", "-c"]
    RUN echo I am using bash, which is now the default
    RUN ["/bin/sh", "-c", "echo I am using /bin/sh"]
    RUN ["echo", "I don't use a shell at all"]
    

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

SDK๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์ถ”์ถœํ•œ ํ›„ Docker ํŒŒ์ผ์—์„œ ๋‹ค์Œ ๋‘ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

cp / bin / bash / bin / sh ์‹คํ–‰
RUN echo "source ~ / google-cloud-sdk / path.bash.inc">> ~ / .bashrc
์‹คํ–‰ ์†Œ์Šค ~ / .bashrc

๊ทธ ํ›„์—๋Š” ๋นŒ๋“œ ๋ฐ ๋Ÿฐํƒ€์ž„์— gcloud ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—„๊ฒฉํ•œ OCI ์žฌํ˜„์„ฑ์— ๊ด€์‹ฌ์ด์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด Dockerfile ํ˜ธ์ถœ SHELL ๋Š” podman 1.4์— ๋”ฐ๋ผ OCIv1 ์‚ฌ์–‘์—์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

2 ๋‹จ๊ณ„ : ์‰˜ [ "/ bin / bash", "-c"]
ERRO [0000] SHELL์€ OCI ์ด๋ฏธ์ง€ ํ˜•์‹์— ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. [/ bin / bash -c]๋Š” ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. docker ํ˜•์‹์„ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ : thaJeztah๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. buildah์—์„œ์ด ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋…ผ์˜ : https://github.com/containers/buildah/issues/507

์—…๋ฐ์ดํŠธ BUILDAH_FORMAT=docker : ๊ตฌ์ถœ

@qhaas ๋Š” ๊ทธ๊ฒƒ์ด OCI ์‚ฌ์–‘๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ง€ buildah ๊ตฌํ˜„๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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