TIL
TIL copied to clipboard
docker 설치 후 /var/run/docker.sock의 permission denied 발생하는 경우
docker 설치 후 /var/run/docker.sock의 permission denied 발생하는 경우
상황
- docker 설치 후 usermod로 사용자를 docker 그룹에 추가까지 완료 후 터미널 재접속까지 했으나 permission denied 발생 (설치 참고: https://blog.naver.com/occidere/221390946271)
DEV-[occiderepi301:/home/occidere] docker ps -a
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json?all=1: dial unix /var/run/docker.sock: connect: permission denied
해결
-
/var/run/docker.sock
파일의 권한을 666으로 변경하여 그룹 내 다른 사용자도 접근 가능하게 변경
sudo chmod 666 /var/run/docker.sock
- 또는
chown
으로 group ownership 변경
sudo chown root:docker /var/run/docker.sock
참고
감사합니다
저도 감사합니다.
저도 감사합니다.
sudo /usr/sbin/groupadd -f docker
sudo /usr/sbin/usermod -aG docker `user`
sudo chown root:docker /var/run/docker.sock
이렇게 하시는 게 ...
@wiany11 님 우선 내용 추가 감사드립니다 👍🏼
다만, groupadd
와 usermod
는 본문에 첨부된 블로그 내용에 포함되어 있으므로, 아래 chown
부분만 본문 내용에 추가하겠습니다~
다시한번 감사드립니다 :)
usermod로 그룹에 추가해주고 나면 터미널을 로그아웃하고 다시 로그인해야 해당 설정이 적용됩니다. 소유자 변경을 진행하지 마시고, 터미널 로그아웃 후 재로그인해보세요 👍
@jwkcp 님 내용 추가 감사드립니다!
대부분의 경우 바로 적용되거나, 말씀주신대로 터미널 재시작 후 적용되는데요, 일부 환경에서는 터미널 재시작 후에도 적용이 어려운 경우가 있었습니다 (특히 참고 링크와 같이 본인이 아닌 jenkins 등 써드파티에서 도커를 사용하는 경우)
이런 케이스를 고려하여 권한 변경 방법을 정리했었는데, 대부분의 경우에 대한 리마인드를 위해 말씀주신 내용도 본문에 반영하겠습니다
감사합니다 👍🏼
Thank you!!
감사합니다 💡🧂👍🏻
감사합니다!!
감사합니다~!
감사합니다 ~! 딱 여기서 막혔었는데 해결했습니다. ~!!
감사합니다!! 잘 해결했습니다.
해결 방법 공유 감사합니다. 그런데 컨테이너 내부에서 owner를 컨테이너 내부의 docker 그룹으로 바꾸었더니 호스트의 /var/run/docker.sock 파일의 소유 그룹이 엉뚱하게 되는 문제가 있었습니다. 아래와 같은 방법으로 호스트와 컨테이너 간 docker 그룹의 id를 맞춰주는 방법이 더 낫지 않을까요? 666권한을 주는 것은 보안 문제가 있을 수 있을 것 같고요.
https://blog.dasomoli.org/docker-docker-in-docker%ec%9d%98-permission-denied-%eb%ac%b8%ec%a0%9c/
@justin-themedium 안녕하세요 justin 님! 좋은 내용 공유주셔서 감사합니다
다만 제가 기록했던 당시 상황은 physical machine 에 docker 를 설치하는 케이스였고, Container 내에서 도커를 구축해 사용하는 경우는 고려하지 않았었습니다. 따라서 이런 상황에선 말씀주신 내용들이 발생할 가능성이 높지 않으나 추가적으로 알아두면 좋은 내용인 것 같아 참고 링크에 추가하겠습니다!
다시 한번 좋은 내용 공유주셔서 감사합니다!
엇! 제가 문제 자체를 잘못 이해했군요. 그냥 알 수 없는 이유로 해당 파일의 권한 문제가 발생했을 때로군요.
제가 도커 컨테이너 안에서의 문제를 겪어서 그랬었나 봅니다. 부끄럽네요..
@justin-themedium 아닙니다 ㅎㅎ 요즘은 nested 형태로도 쓰는 경우가 종종 있는데 덕분에 좋은 내용 추가할 수 있었던 것 같습니다~
sudo groupadd docker
sudo usermod -aG docker $USER
sudo newgrp docker
docker.sock을 666으로 하면 실제 서비스할때 보안에 취약해져요
@OneDriveDelete 네 조언 감사합니다. 관련하여 group ownership 변경하는 방법도 본문에 추가되어 있습니다. 상황에 맞춰 방법을 선택하여 사용하면 될 듯 싶습니다. 감사합니다.
해결 방법 공유 감사합니다. 그런데 컨테이너 내부에서 owner를 컨테이너 내부의 docker 그룹으로 바꾸었더니 호스트의 /var/run/docker.sock 파일의 소유 그룹이 엉뚱하게 되는 문제가 있었습니다. 아래와 같은 방법으로 호스트와 컨테이너 간 docker 그룹의 id를 맞춰주는 방법이 더 낫지 않을까요? 666 권한을 주는 것은 보안 문제가 있을 수 있을 것 같고요.
https://blog.dasomoli.org/docker-docker-in-docker%ec%9d%98-permission-denied-%eb%ac%b8%ec%a0%9c/
해당 이슈는 fid에 따른 파일이 고유한데 그걸 docker, host 네트워크 각각 다른 유저 namspace에서 다뤄 생기는 일입니다. 해당 이슈를 정확히 해결하기 위해서는 커맨드를 내부적으로 실행할 컨테이너를 만드실 때 /etc/group 유저 네임스페이스까지 같이 동일하게 바인딩 해주시는게 좋습니다.
감사합니다
도움이 되었습니다 감사합니다.
감사합니다!
sudo groupadd docker
sudo usermod -aG docker $USER
sudo newgrp docker
docker.sock을 666으로 하면 실제 서비스할때 보안에 취약해져요
After doing this, I had to reboot PC. After that it worked well. Thanks!