맨페이지에서:
docker container rm
하나 이상의 컨테이너가 호스트 노드에서 제거됩니다. 컨테이너 이름이나 ID를 사용할 수 있습니다. 이미지는 삭제되지 않습니다.
docker container kill
: 지정된 각 컨테이너 내의 기본 프로세스는 SIGKILL 또는 --signal 옵션으로 지정된 신호를 보냅니다.
컨테이너는 실행 중인 이미지 인스턴스인가요? 그렇다면 컨테이너가 더 이상 존재하지 않는다는 동일한 목표를 docker container rm
효과적으로 달성하는 것이 가능할까요 ?docker container kill
그들 사이의 차이점은 무엇입니까?
"컨테이너 내부의 주요 프로세스"란 무엇입니까?
컨테이너가 호스트 시스템의 프로세스와 정확히 동일하게 실행됩니까?
감사해요.
답변1
컨테이너를 운영한다면...
예를 들어
docker run alpine echo hello
그러고 나면 깨끗해 보이는데..
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
하지만 그렇지 않고 여전히 존재합니다.
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3a4772c0f165 alpine "echo hello" 22 seconds ago Exited (0) 20 seconds ago relaxed_ramanujan
rm
이는 다음 명령으로 정리할 수 있습니다.
% docker container rm 3a4772c0f165
3a4772c0f165
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
그래서:
docker kill
컨테이너를 죽일 것입니다.docker rm
종료된 컨테이너는 청소됩니다.
그것들은 서로 다릅니다.
참고: 컨테이너를 자동으로 청소하도록 지시할 수 있습니다.
% docker run --rm alpine echo hello
hello
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
그러면 수동으로 할 필요가 없습니다 rm
.
답변2
컨테이너는 (적어도):
- 실행 중인 프로세스
- 파일 시스템의 최상위 임시 계층입니다.
- 볼륨 및 네트워크 매핑.
Kill은 첫 번째 것만 처리합니다.
옵션을 사용하여 실행하는 경우 --rm
. 그런 다음 컨테이너를 중지하거나 종료하면 컨테이너도 삭제됩니다.
SIGTERM을 전송하기 위해 (필요하지 않은 한) kill을 사용해서는 안 됩니다 docker stop
. (SIGKILL을 프로세스에 보내야 하는 경우 이 동작은 좋지 않으므로 수정해야 합니다.)