티스토리 뷰
이번 글에서는 도커 컨테이너의 엔터리포인트와 커맨드에 대해 알아보고자 한다. 엔트리포인트와 커맨드의 개념이 Dockerfile 과 도커 명령어에서 사용될 수 있다.
엔트리포인트 (Entrypoint)
도커 컨테이너가 실행될 때 하나의 프로세스로서 실행되게 된다.
이때 고정적으로 실행되는 스크립트 혹은 명령어를 말한다.
이는 생략할 수 있으며, 생략할 경우 커맨드에 지정된 명령어로 수행된다.
엔트리포인트를 지정할 경우, 다음과 같은 형식으로 엔트리포인트가 prefix 처럼 실행되고, 그 뒤에 커맨드가 실행된다.
[Entrypoint] [Command]
커맨드 (Command)
도커 컨테이너가 실행할 때 수행할 명령어 혹은 엔트리포인트에 지정된 명령어에 대한 인자 값으로 사용된다.
엔트리포인트와 커맨드는 Dockerfile 내에서 구문을 통해 사용되는데, 다음과 같이 구문을 작성할 수 있다.
# 실제 커맨드를 실행하기 전에 docker-entrypoint.sh 를 먼저 실행한다.
ENTRYPOINT ["docker-entrypoint.sh"]
# 엔트리포인트가 실행된 후 node 라는 명령어가 실행된다.
# 커맨드는 배열 형태로 작성할 수 있고,
# 배열 안에 여러 문자열을 배치할 경우 실제로는 배열의 요소 사이에 공백이 들어가 실행되게 된다.
CMD ["node"]
# 위 구문을 실행할 경우, 다음 명령이 최종적으로 실행된다.
$ doker-entrypoint.sh
$ node
또한 도커 명령어를 통해 엔트리포인트와 커맨드를 전달할 수 있는데, 이미지에 지정된 엔트리포인트와 커맨드를 오버라이드하는 형태로 진행할 수 있다.
# entrypoint를 sh로 변경하여 sh shell 을 실행하도록 변경할 수 있다.
docker run --entrypoint sh ubuntu:focal
# entrypoint 를 echo 로 변경하여 echo 명령을 실행하도록 변경할 수 있다.
docker run --entrypoint echo ubuntu:focal hello world
실습
실제 도커 컨테이너를 생성하여 실습해 보자. 먼저, 다음 명령어를 입력하여 새로운 컨테이너를 실행해 보자.
docker run ubuntu:focal
컨테이너 전체 목록을 살펴보면,
docker ps -a
이미지가 생성되고 자동으로 종료된 것을 확인할 수 있다.
이 상태에서 다음 명령어를 통해 컨테이너의 설정 값을 보면,
docker inspect [NAME]
Cmd (Command) 가 "bash" 이고 Entrypoint 가 null 인 것을 확인할 수 있다.
만약 엔트리포인트로 sh 를 다음과 같이 설정하면,
docker run --entrypoint sh ubuntu:focal
실행하고 전체 컨테이너 목록을 조회했을 때,
docker ps -a
COMMAND 에 적힌 바와 같이 "sh" 로 설정된 것을 확인할 수 있다.
실제 shell 이 정상 동작하는지 확인하기 위해 -i 와 -t 옵션을 주어 작동시키면,
docker run --entrypoint sh -i -t ubuntu:focal
다음과 같이 컨테이너의 shell 로 자동 접속되는 것을 확인할 수 있다.
이번에는 sh 대신 echo 명령어를 전달해 본다. 다음과 같이 문자열이 출력되는 것을 확인할 수 있다.
이 상태에서 해당 컨테이너를 inspect 로 들여다 보면,
docker inspect [NAME]
Cmd와 EntryPoint가 적용된 것을 볼 수 있다.
이렇게 Entrypoint 와 Command 에 대해 알아보았다. 도커 컨테이너 실행 시에 엔트리포인트와 커맨드 모두 변경 가능하다. 이미지를 커스터마이징하여 사용할 때 두 값이 어떻게 설정되어 있는지 확인하는 것이 좋다.
'인프라 > Docker' 카테고리의 다른 글
도커 컨테이너 명령어 실행 (exec) (0) | 2022.02.08 |
---|---|
도커 컨테이너 환경변수 (0) | 2022.02.07 |
도커 컨테이너 라이프사이클과 자주 쓰이는 명령어 모아보기 (0) | 2022.02.05 |
Docker 이미지와 컨테이너 톺아보기 (0) | 2022.02.04 |
AWS EC2 인스턴스에 Docker 환경 구성하기 [2022 ver] (0) | 2022.02.03 |
- Total
- Today
- Yesterday
- 자격증명
- cmd
- 스타트업
- ecr
- Android
- HCL
- 자바
- Container
- env
- Terraform
- AWS
- docker
- uiux
- main
- 메터리얼
- 컨테이너
- 자료형
- entrypoint
- Material
- Operator
- 안드로이드
- dockerfile
- EC2
- 도커
- Java
- 테라폼
- DESIGN
- 머티리얼
- dockerhub
- 디자인
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |