주요 목적: 컨테이너의 기본 동작을 정의합니다.
형식:
쉘 형식: ENTRYPOINT command param
Exec 형식: ENTRYPOINT ["executable", "param1", "param2"]
특징:
컨테이너 실행 시 항상 실행됩니다.
docker run 명령에 추가한 인수는 ENTRYPOINT의 기본 인수로 전달됩니다.
고정적으로 실행해야 하는 애플리케이션에 적합합니다.
명령 대체가 어렵습니다. (덮어쓰려면 --entrypoint 옵션을 사용해야 함)
주요 목적: 컨테이너 실행 시의 기본 명령을 정의합니다.
형식:
쉘 형식: CMD command param
Exec 형식: CMD ["executable", "param1", "param2"]
특징:
기본 명령을 정의하지만, docker run 명령으로 대체 가능합니다.
ENTRYPOINT가 없을 때만 CMD가 단독 실행됩니다.
애플리케이션의 기본값을 지정하거나 필요에 따라 재정의 가능한 명령에 적합합니다.
dockerHub에서 openjdk 11jdkslim(가벼운 버전) 를 다운로드
DockerLAB/ex01/Dockerfile
를 작성한다
build/aws-v3 파일
은 메타코딩님 github에서 다운로드 받았다.
java-server
로 파일들을 빌드
java-server 이미지 구동
결과 출력 확인
로그 구동 테스트를 위해 파라미터 값을 넣어본다
로그 확인 : docker logs 컨테이너ID
number 파라미터의 값에 따라 로그가 출력된 것을 확인
CMD 부분 추가
기존 java-server 컨테이너를 지우고 다시 build하였다. 호스트 포트 9090, 내부 포트 9091 을 넣었다.
내부 포트 설정이 잘 되었음을 확인
이번엔 내부포트를 8081로 설정하였다
CMD 서버포트가 9091이므로 8081이 작동이 안됨을 확인
이번엔 server.port를 커맨드라인에 직접 추가하였다.
docker run -dit -p 9090:9092 java-server --server.port=9092
다르게 추가하였을 때 어느 쪽이 우선순위로 적용하는지 테스트하기 위해서이다.
-> 내부 포트는 9092로 적용된 것을 확인
내부 포트를 9091로 바꿔보았다
docker run -dit -p 9090:9091 java-server --server.port=9092
Dockerfile의 9091 보다 직접 추가한 9092가 우선적으로 적용된 것을 확인하였다