[docker] docker run : –rm을 사용하는 이유 (docker newbie)

나는 처음으로 도커를 시도하고 있으며 아직 “정신적 모델”이 없습니다. 총 초보자.

내가보고있는 모든 예제에는 --rm실행할 플래그 가 포함되어 있습니다.

docker run -it --rm ...
docker container run -it --rm ...

질문:

이러한 명령에 --rm플래그가 포함 된 이유는 무엇 입니까? 좋은 내용이 들어있는 컨테이너를 설정하거나 다운로드하는 문제를 겪게된다면 왜 제거해야할까요? 다시 사용하기 위해 보관하고 싶습니다.

그래서 나는 도커에 대한 잘못된 생각을 알고 있습니다.



답변

컨테이너는 실행하는 데 사용하는 이미지의 인스턴스 일뿐입니다. 컨테이너화 된 앱을 만들 때 마음의 상태는 예를 들어 신선하고 깨끗한 우분투 컨테이너를 가져 와서 원하는 앱과 구성을 다운로드 한 다음 실행하는 것이 아닙니다.

컨테이너를 애플리케이션의 인스턴스로 취급해야하지만 애플리케이션은 이미지에 포함됩니다. 적절한 사용법은 모든 파일, 구성, 환경 변수 등을 이미지에 포함하는 사용자 지정 이미지를 만드는 것입니다. Dockerfile에 대해 자세히 알아보고 여기에서 수행 방법

일단 그렇게하면 모든 것을 포함하는 이미지가 있고 애플리케이션을 사용하려면 적절한 포트 설정이나 기타 동적 변수를 사용하여 이미지를 실행하기 만하면됩니다. docker run <your-image>

--rm플래그를 사용하여 컨테이너를 실행 하는 것은 매우 짧은 시간 동안 사용하는 컨테이너에 유용합니다. 예를 들어 컨테이너 내부에서 애플리케이션을 컴파일하거나 작동하는 것을 테스트하고 나면 그 컨테이너가 수명이 짧다는 것을 알고 있습니다. Docker 데몬에게 실행이 완료되면 관련된 모든 것을 지우고 디스크 공간을 절약하십시오.


답변

--rm작업이 완료된 후 컨테이너를 삭제해야 할 때 플래그 가 사용됩니다.

이것은 소규모 테스트 또는 POC 목적에 적합하며 집안일의 골칫거리를 줄여줍니다.


답변

에서 https://docs.docker.com/engine/reference/run/#clean-up—rm

기본적으로 컨테이너의 파일 시스템은 컨테이너가 종료 된 후에도 유지됩니다. 이렇게하면 디버깅이 훨씬 쉬워지고 (최종 상태를 검사 할 수 있기 때문에) 기본적으로 모든 데이터를 유지합니다. 그러나 단기 포 그라운드 프로세스를 실행하는 경우 이러한 컨테이너 파일 시스템이 실제로 쌓일 수 있습니다. 대신 Docker가 컨테이너를 자동으로 정리하고 컨테이너가 종료 될 때 파일 시스템을 제거하도록하려면 –rm 플래그를 추가 할 수 있습니다.

간단히 말해서, 중지되거나 사용되지 않는 컨테이너로부터 호스트를 깨끗하게 유지하는 것이 유용합니다.


답변

--rm실행중인 컨테이너에 연결할 때 데이터베이스 백업 또는 파일 복사와 같은 일부 작업을 수행 할 때 사용 합니다. 다음은 예입니다.

docker run -v $(pwd):/mnt --link app_postgres_1:pg --rm postgres:9.5 pg_dump -U postgres -h pg -f /mnt/docker_pg.dump1 app_db

위의 방법은 ‘app_postgres_1’이라는 실행중인 컨테이너를 연결하고 백업을 생성합니다. 백업 명령이 완료되면 컨테이너가 완전히 삭제됩니다.


답변