`dockerContainerrm`과 `dockercontainerkill`은 실제로 동일한 효과를 얻나요?

`dockerContainerrm`과 `dockercontainerkill`은 실제로 동일한 효과를 얻나요?

맨페이지에서:

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을 프로세스에 보내야 하는 경우 이 동작은 좋지 않으므로 수정해야 합니다.)

관련 정보