새로운 CMD 및 EXPOSE 지침으로 컨테이너 변경 사항 커밋
이 마지막 단계에서는 컨테이너 변경 사항을 커밋하고 새 이미지에 대한 기본 명령 (CMD) 및 노출된 포트 (EXPOSE) 를 설정하는 방법을 배우겠습니다.
CMD 지침은 명령을 지정하지 않고 이미지를 기반으로 컨테이너가 시작될 때 실행될 기본 명령을 설정합니다. EXPOSE 지침은 Docker 에 런타임 시 지정된 네트워크 포트에서 컨테이너가 수신 대기함을 알립니다.
my-ubuntu 컨테이너를 다시 커밋하고 이번에는 /hello.txt의 내용을 인쇄하고 포트 80 을 노출하는 기본 명령을 설정합니다.
먼저, my-ubuntu 컨테이너가 중지되었는지 확인합니다.
docker stop my-ubuntu
이제 CMD 및 EXPOSE 지침을 사용하여 컨테이너를 커밋합니다. CMD 지침은 문자열의 JSON 배열로 제공됩니다.
docker commit -c 'CMD ["cat", "/hello.txt"]' -c 'EXPOSE 80' my-ubuntu my-ubuntu-final
새로 생성된 이미지의 ID 를 출력으로 볼 수 있습니다.
docker inspect를 사용하여 새 이미지 my-ubuntu-final의 CMD 및 EXPOSE 구성을 확인해 보겠습니다.
docker inspect --format '{{.Config.Cmd}}' my-ubuntu-final
이것은 [cat /hello.txt]를 출력하여 기본 명령이 설정되었음을 확인해야 합니다.
이제 노출된 포트를 확인해 보겠습니다.
docker inspect --format '{{.Config.ExposedPorts}}' my-ubuntu-final
map[80/tcp:{}]과 유사한 출력을 볼 수 있으며, 이는 포트 80 이 노출되었음을 나타냅니다.
마지막으로, 기본 CMD가 작동하는지 확인하기 위해 명령을 지정하지 않고 이 새 이미지에서 컨테이너를 실행해 보겠습니다.
docker run --rm my-ubuntu-final
--rm 플래그는 종료 시 컨테이너를 자동으로 제거합니다. 기본 명령이 cat /hello.txt이므로 컨테이너가 실행되고 "Hello from inside the container!"를 인쇄한 다음 종료되어야 합니다.
터미널에 "Hello from inside the container!"가 인쇄되는 것을 볼 수 있습니다.
이것은 컨테이너 변경 사항을 커밋하고 결과 이미지의 기본 동작 및 네트워크 구성을 정의하는 방법을 보여줍니다.