programing

도커 컨테이너를 중지하거나 다시 시작할 수 없습니다.

lovejava 2023. 11. 5. 10:48

도커 컨테이너를 중지하거나 다시 시작할 수 없습니다.

도커 컨테이너를 중지하거나 재시작하려고 하면 다음 오류 메시지가 나타납니다.

$ docker restart 5ba0a86f36ea
Error response from daemon: Cannot restart container 5ba0a86f36ea: [2] Container does not exist: container destroyed
Error: failed to restart containers: [5ba0a86f36ea]

하지만 달리다 보면

$ docker logs -f 5ba0a86f36ea

로그를 볼 수 있으니 분명히 컨테이너가 존재합니다.무슨 생각 있어요?

편집:

미안해요, 제가 이 얘기를 하는 걸 깜빡했네요.

내가 뛸때docker ps -a컨테이너가 가동되고 있는 것으로 보입니다.하지만 그 안에 있는 애플리케이션이 작동하지 않아서 다시 시작하거나, 아니면 해당 애플리케이션의 새 버전을 온라인으로 받고 싶습니다.그러나 컨테이너를 중지하고 제거할 수 없을 때, 동일한 포트를 수신하는 새로운 응용프로그램을 실행할 수 없습니다.

찾을 수가 없었습니다.boot2docker내 기계 안에.그래서 제게 맞는 것을 생각해 냈습니다.

$ sudo systemctl restart docker.socket docker.service
$ docker rm -f <container id>

당신에게도 도움이 되는지 확인해 보세요.

모든 도커:start | restart | stop | rm --force | kill컨테이너가 고착된 경우 명령이 작동하지 않을 수 있습니다.도커 데몬을 언제든지 재시작할 수 있습니다.그러나 다른 컨테이너가 실행 중인 경우에는 해당 옵션이 아닐 수도 있습니다.할 수 있는 일은 다음과 같습니다.

ps aux | grep <<container id>> | awk '{print $1 $2}'

출력 내용은 다음과 같습니다.

<<user>><<process id>>

그런 다음 용기와 관련된 프로세스를 다음과 같이 죽입니다.

sudo kill -9 <<process id from above command>>

그러면 컨테이너가 소멸되고 올바른 이미지로 새 컨테이너를 시작할 수 있습니다.

도커 1.6 또는 1.7에서 볼 수 있는 도커/도커/이슈/12738처럼 보입니다.

일부 컨테이너가 제대로 중지되지 않고 다시 시작됩니다.

사용자 호스트에서 1.5.0에서 1.6.0으로 업그레이드할 때 이러한 문제가 자주 발생합니다.
업그레이드 후 일부 컨테이너를 중지할 수 없습니다(제공).500 Server Error: Internal Server Error ("Cannot stop container xxxxx: [2] Container does not exist: container destroyed"( ) 또는 강제 파괴(증여)500 Server Error: Internal Server Error ("Could not kill running container, cannot remove - [2] Container does not exist: container destroyed")). 호스트에서 프로세스가 계속 실행되고 있습니다.
때로는 도커 데몬을 다시 시작한 후에 작동하기도 합니다.

다음과 같은 해결 방법이 있습니다.

그 죽일 수 없는 컨테이너에 대한 모든 원격 API 호출을 시도해 보았는데 결과는 다음과 같습니다.

  • json,stats,changes,top,logs반환된 유효한 응답
  • stop,pause,wait,kill신고된 404(!)

리모트 API 완료 후 다시 확인하였습니다.docker ps(컨테이너는 여전히 그곳에 있었습니다) 하지만 도커킬을 다시 시도했는데 효과가 있었습니다!컨테이너가 죽어서 제거할 수 있었습니다.

또는:

작동한 것은 다시 시작하는 것이었습니다.boot2docker내 주인에게.그리고나서docker rm -f

$ boot2docker stop
$ boot2docker start
$ docker rm -f 1f061139ba04

알만한 가치:

ENTERPOINT 스크립트를 실행하는 경우...대본은 쉐뱅과 함께 작동할 것입니다.

#!/bin/bash -x

하지만 용기가 다음과 같이 멈추는 것을 막을 것입니다.

#!/bin/bash -xe

즐거운 시간 되세요.

sudo aa-remove-unknown

이것이 저에게 효과가 있었던 것입니다.

Mac에서 Docker Desktop이 설치된 모든 사용자에게 적합합니다.트레이 아이콘을 클릭해서 이렇게 말할 수 있었습니다.Restart Docker. 다시 시작하자 컨테이너를 삭제할 수 있었습니다.

"top" 명령을 사용하여 좀비 프로세스가 있는지 확인합니다.

docker ps | grep <<container name>> 

컨테이너 ID를 가져옵니다.

ps -ef | grep <<container id>>

ps -ef|grep defunct | grep java

그리고 부모 PID에 의해 컨테이너를 죽입니다.

Mac에서 Terminal: Usekillall Docker도커를 그만두는 겁니다

응용프로그램 폴더에서 또는 다음을 사용하여 다시 시작open /Applications/Docker.app.

그 다음에 실행할 수 있습니다.docker rm <id>해당 컨테이너에 대해

윈도우 호스트 머신에서도 같은 문제가 발생했는데 여기 있는 다른 옵션들은 하나도 제게 효과가 없었습니다.여기에 있는 물리적 컨테이너 폴더를 삭제해야 했습니다.

C:\ProgramData\Docker\containers\[container guid]

저는 안전을 위해 도커 서비스를 먼저 중단했고, 다시 시작해보니 고장난 컨테이너가 사라지고 새로운 컨테이너를 만들 수 있었습니다.리눅스 호스트 머신에서도 동일하게 작동할 것이라 생각하지만, 해당 OS에서 컨테이너 폴더가 어디에 보관되어 있는지 모르겠습니다.

Ubuntu 시스템 프로세스 ID를 사용하여 컨테이너를 중지합니다.다음을 사용하여 기본 프로세스 ID를 가져옵니다.

도커 검사 -f'{{.상태.Pid}' 컨테이너-id

ID를 '25430'으로 반환합니다.명령으로 이 일을 처치합니다.

sudo kill -925430

제 경우 노매드 작업으로 생성된 컨테이너를 삭제할 수 없습니다. 출력이 없습니다.docker logs <ContainerID>일반적으로 얼은 것처럼 보입니다.

지금까지 해결책은 다음과 같습니다.sudo service docker restart, 누가 더 좋은 것을 추천해 주시겠습니까?

저는 제가 컨테이너를 시스템 서비스로 시작하게 했다는 것을 잊었습니다.
만약 내가 그 컨테이너를 멈추거나 죽였다면, 서비스는 그것을 다시 가져올 겁니다.

systemctl을 사용하는 경우 실행 중인 모든 서비스를 다음과 같이 나열할 수 있습니다.systemctl | grep running서비스 이름을 찾습니다.

그럼 쓰시오sudo systemctl disable <your_service_name>그것을 멈추기 위해서 입니다.

Ubuntu를 사용하는 경우 도커 컴포지트가 스냅으로 설치되지 않았는지 확인합니다.이로 인해 위와 같은 모든 종류의 무작위 문제가 발생합니다.

스냅을 제거합니다.

sudo snap remove docker-compose

구성 저장소에서 수동으로 설치합니다.

도커구성설치지시

때때로 이는 도커 데몬의 문제로 인해 발생합니다.도커 서비스를 다시 시작해서 문제를 해결했습니다.리눅스의 경우:

systemctl restart docker

저 같은 경우에는.docker rm $(docker ps -aq)저한테는 통합니다.

언급URL : https://stackoverflow.com/questions/31365827/cannot-stop-or-restart-a-docker-container