본문 바로가기
MLOps/Docker

[Docker] cannot stop container: permission denied 오류 해결

by Toritol 2025. 3. 5.
728x90

 

이번 글에서는 docker stop 시 자주 발생하는 오류에 대한 해결 방법을 살펴보겠습니다. 현재 업무는 AWS EKS 상에서 진행되고 있고, 코드 수정사항이 있을 때 다음과 같은 과정을 거칩니다.

 

1. Gitlab에서 코드 수정

2. Jenkins에서 Docker Image 빌드 테스트 후, AWS ECR로 Image 푸쉬

3. ArgoCD에서 해당 Pod 재생성

 

최근 Gitlab과 Jenkins 서버를 이관한 이후, Jenkins에서 Docker Image 빌드 테스트를 진행할 때 계속해서 다음과 같은 오류가 발생하였습니다. 기존 Image가 있을 경우 해당 Image를 삭제하는 코드가 있는데 해당 코드에서 발생하는 오류였습니다.

Error response from daemon: cannot remove container "/test": could not kill: permission denied

 

Jenkins 서버에서도 docker stop을 통해 해당 container를 멈추려고 하니 유사하게 permission denied 오류가 발생하였습니다.

$ docker stop {container ID}
Error response from daemon: cannot stop container: {container ID}: permission denied

 

서버에 접속한 ID에 대한 권한 설정으로 인해 발생하는 오류일 수도 있지만, 일단 서버 담당자에 의존하지 않고 해결하고 싶었습니다. 관련해서 오류 해결 방법에 대해 찾아보니 해당 링크에서 가장 간단하게 설명해주고 있고, 오류도 해결되어 기록용으로 남기고자 합니다.

 

우선 아래 코드를 통해 containerd-shim process id를 알아냅니다. 해당 코드 작성 후 sudo 비밀번호를 입력하면 id가 출력됩니다.

$ sudo ps awx | grep containerd-shim | grep {container ID} | awk '{print $1}'

 

해당 process id를 kill해주면 docker ps를 했을 때 container도 없어진 것을 볼 수 있습니다.

$ sudo kill -9 {prcess id}

 

이제 다시 Jenkins로 돌아가 빌드 테스트를 진행하면 오류없이 잘 진행되는 것도 확인할 수 있습니다.

 

 

<참고>

https://velog.io/@yoonene/Docker-container%EA%B0%80-%EC%95%88-%EA%BA%BC%EC%A7%88-%EB%95%8C

 

[Docker] container가 안 꺼질 때

킬 프로세스

velog.io

 

 

 

728x90

댓글