Shell and Exec forms
RUN
,CMD
andENTRYPOINT
명령어는 shell form과 exec form으로 특정될 수 있다.
shell form
<instruction> <command>
shell form의 <instuction>
은 /bin/sh -c <command>
의 형태로 command를 호출한다. (shell processing)
Examples:
RUN apt-get install python3
CMD echo "Hello World!"
ENTRYPOINT ehco "Hello World!"
Dockerfile
FROM busybox
ENV name iamjjanga
ENTRYPOINT echo "Hello, $name"
를 빌드히여 이미지로 실행해보면 다음과 같은 output을 얻을 수 있다.
$ docker build -t echo .
$ docker run -it echo
Hello, iamjjanga
exec form
CMD
와ENTRYPOINT
에서 많이 선호되는 form 형식
<instruction> ["executable", "param1", "param2"...]
exec form으로 실행시 직접적으로 바로 실행한다. 즉, shell exec에서 했던 /bin/sh -c
의 shell processing은 일어나지 않는다.
Examples:
RUN ["apt-get", "install", "python3"]
CMD ["/bin/echo", "Hello World!"]
ENTRYPOINT ["/bin/echo", "Hello WOrld!"]
Dockerfile
FROM busybox
ENV name iamjjanga
ENTRYPOINT ["/bin/echo", "Hello, $name"]
빌드하고 실행해보면
Hello, iamjjanga
How to run bash?
- 기본적으로 shell processing은
sh
로 실행된다.
bash
로 실행하기 위해서는 exec form을 통해 instruction을 /bin/bash
로 지정해주면 된다.
ENV name iamjjanga
ENTRYPOINT ["/bin/bash", "-c", "echo Hello, World!"]
Ref
'DevOps > Docker' 카테고리의 다른 글
[Docker] Docker Image Stored Path / Docker.raw? (0) | 2021.03.17 |
---|---|
[Docker] Container vs Process (0) | 2021.03.17 |
[Docker] set up secure credential storage for Docker (0) | 2021.03.02 |
[Docker] docker-machine 사용해보기 with aws (0) | 2021.02.28 |
[Docker] 특정 Docker Version 설치하기 in Ubuntu 18.04 (0) | 2021.02.26 |