다음은 Docker 컨테이너가 정상적으로 종료되고 Dockerfile을 편집 할 수있는 솔루션입니다.
일반적으로 Docker 컨테이너가 실행되면 명령을 실행하여 애플리케이션이 제공됩니다. 로부터 Dockerfile 참조 ,
CMD 및 ENTRYPOINT 명령어는 모두 컨테이너를 실행할 때 실행되는 명령을 정의합니다. ... Dockerfile은 CMD 또는 ENTRYPOINT 명령 중 하나 이상을 지정해야합니다.
이미지를 빌드하고 CMD 또는 ENTRYPOINT로 명령을 지정하지 않으면 기본 이미지의 CMD 또는 ENTRYPOINT 명령이 실행됩니다.
예를 들어 공식 Ubuntu Dockerfile에는 CMD ["/bin/bash"]
( https://hub.docker.com/_/ubuntu )가 있습니다. 이제 bin/bash/
명령은 입력을 수락하고docker run -it IMAGE_ID
STDIN을 컨테이너에 연결합니다. 그 결과 대화 형 터미널이 생기고 컨테이너가 계속 실행됩니다.
CMD 또는 ENTRYPOINT가있는 명령이 Dockerfile에 지정되면 컨테이너를 실행할 때이 명령이 실행됩니다. 이제이 명령이 입력없이 완료 될 수 있으면 완료되고 컨테이너가 종료됩니다. docker run -it IMAGE_ID
의지 NOT 이 경우 대화 형 터미널을 제공합니다. 예는 아래의 Dockerfile에서 빌드 된 도커 이미지입니다.
FROM ubuntu
ENTRYPOINT echo hello
이 이미지의 터미널로 이동해야하는 경우 진입 점 명령을 수정하여 컨테이너를 계속 실행해야합니다.
FROM ubuntu
ENTRYPOINT echo hello && sleep infinity
를 사용하여 컨테이너를 정상적으로 실행 한 후 docker run IMAGE_ID
다른 터미널로 이동하여을 사용 docker exec -it CONTAINER_ID bash
하여 컨테이너의 터미널을 가져올 수 있습니다.