programing

"dial unix /var/run/docker"를 수정하는 방법.sock: connect: permission denied" 그룹 권한이 올바른 것처럼 보일 때?

javamemo 2023. 8. 13. 09:02
반응형

"dial unix /var/run/docker"를 수정하는 방법.sock: connect: permission denied" 그룹 권한이 올바른 것처럼 보일 때?

Ubuntu 18.04 업데이트 후 갑자기 문제가 생겼습니다. 이전에는 시스템에서 문제 없이 도커를 사용했지만 갑자기 사용할 수 없습니다.제가 알기로는 권한이 올바른 것 같습니다.

$ docker run hello-world
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
$ ls -last /var/run/docker.sock 
0 srw-rw---- 1 root docker 0 Jul 14 09:10 /var/run/docker.sock
$ whoami
brandon
$ cat /etc/group | grep docker
docker:x:995:brandon
nvidia-docker:x:994:

편집:

그룹 정보:

$ groups
brandon
$ groups brandon
brandon : brandon adm cdrom sudo dip plugdev games lpadmin sambashare docker
$ whoami
brandon

갱신하다

제가 시스템을 17.04에서 18.04로 업그레이드한 원래 게시물 이후로, 16.04에서 18.04로 두 번 업그레이드를 했는데, 이후의 두 시스템 모두 문제가 없었습니다.따라서 17.04에서 18.04로의 업그레이드 프로세스와 관련이 있을 수 있습니다.18.04를 새로 설치하지 않았습니다.

sudo setfacl --modify user:<user name or ID>:rw /var/run/docker.sock

다시 시작할 필요가 없으며 사용자 모드 또는 삭제보다 안전합니다.

@mirekphd가 지적했듯이 사용자 이름이 컨테이너 내부에만 있고 호스트에는 없는 경우 사용자 ID가 필요합니다.

사용자를 도커 그룹에 추가합니다.

sudo usermod -aG docker $USER
sudo reboot

도킹자에게 올바른 권한을 부여하십시오.양말 파일 작성 기준:

sudo chmod 666 /var/run/docker.sock

이 문제를 해결하는 방법은 다음과 같습니다.

sudo addgroup --system docker
sudo adduser $USER docker
newgrp docker

그것은 나에게 효과가 있습니다 :)

우분투 18:04

sudo setfacl --modify user:$USER:rw /var/run/docker.sock

권한 문제처럼 보입니다.

sudo addgroup --system docker
sudo adduser $USER docker
newgrp docker
sudo setfacl -m "g:docker:rw" /var/run/docker.sock

또는 아래 명령을 사용하면 이 문제를 해결할 수 있습니다.

sudo chmod -x /var/run/docker.sock

어쩌다 보니 도커에 올바른 권한이 없을 때 이 페이지를 찾았습니다.내 도커 설치 후 양말.따라서 동일한 문제가 있는 경우 다음을 읽을 수 있습니다.

sudo adduser $USER 도커는 그룹이 "도커"가 아니라 "루트"이기 때문에 작동하지 않습니다.

ls -l /var/run/computer.sock srw-rw---- 1 루트 루트 0 Jul 110 09:48 /var/run/docker.양말을 신어서 $ sudo adduser $USER root가 되어야 합니다.

스냅이 설치되지 않은 시스템에서 그룹이 "클러스터"임

ls -l /var/run/computer.양말 srw-rw---- 1 루트 도커 0 Jul 30 4:18 /var/run/docker.양말 올바른 방법은 도커에 따르면 그렇습니다.sudo snap 설치 도커를 실행하기 전에 다음을 실행해야 합니다.

sudo add group --시스템 도커 $ sudo adduser $USER 도커 $ newgrp 도커 그러면 그룹이 "도커"가 됩니다.

ls -l /var/run/computer.양말 srw-rw---- 1 루트 도커 0 Jul 11 10:59 /var/run/docker.양말

출처: https://github.com/docker-archive/docker-snap/issues/1 (네, 첫 번째 호:D)

이 문제를 해결하는 가장 쉬운 방법은 다음을 실행하는 것입니다.

$ sudo setfacl -m "g:docker:rw" /var/run/docker.sock

그런 다음 이미 언급했듯이 사용자를 위해 다음 명령을 실행합니다.

$sudo addgroup --system docker
$sudo adduser $USER docker
$newgrp docker

이상입니다 :) 재미있게 놀아요!

저는 빠른 수정을 했고 그것은 즉시 작동했습니다.

sudo chmod 777 /var/run/docker.sock

Ubuntu와 관련하여 GUI 로그인의 일부로 사용자로부터 보조 그룹을 제거하는 lightdm 관련 알려진 문제가 있습니다.https://bugs.launchpad.net/lightdm/+bug/1781418 에서 해당 문제를 확인할 수 있습니다.

lightdm을 끄거나 버그 보고서에 언급된 해결 방법을 적용할 수 있습니다.

[/etc/pam.d/lightdm에서 아래 줄에 주석 달기:]

auth optional pam_kwallet.so
auth optional pam_kwallet5.so

임시 옵션에는 ssh 또는 같은 것으로 시스템에 로그인하는 것이 포함됩니다.su -lnewgrp docker 작업을 미치며 각 새 .이러한 작업은 현재 셸에만 영향을 미치며 각 새 터미널에서 다시 수행해야 합니다.


이 문제를 제외하고, 사용자에게 도커 소켓에 대한 직접 액세스(따라서 호스트에 대한 루트 액세스)를 제공하는 일반적인 명령은 다음과 같습니다.

sudo usermod -aG docker $(id -un) # you can often use $USER in place of the id command
newgrp docker # affects the current shell, logging out should affect all shells

아래 명령을 사용하여 리눅스 머신에서 이 문제를 해결할 수 있었습니다.

> sudo setfacl --modify user:$USER:rw /var/run/docker.sock

참고: sudo 접근 권한이 있는지 확인하십시오.그렇지 않으면 이 명령은 실패합니다.

sudo 접근을 어떻게 확인합니까?

$ whoami
> rahul
$ groups
> useracc
$ groups useracc
> Here you can see sudo and other access details.

다음 명령을 사용하여 이 문제를 해결했습니다.

sudo chmod -x /var/run/docker.sock

Ubuntu 20.04의 경우

1단계 : Ubuntu 사용자 확인

echo $USER

2단계: 도커에 대한 권한 부여

sudo setfacl --modify user:<user_name>:rw /var/run/docker.sock

오류 가져오기

enter image description here

해결책

enter image description here

enter image description here

참고: 그룹 이름뿐만 아니라 그룹의 gid도 중요합니다.그래서 호스트 시스템의 도커 그룹이 995의 Gid를 가지고 있다면,

cat /etc/group | grep docker  
docker:x:995:brandon

도커 그룹의 gid를 확인해야 합니다. 시작 스크립트의 일부로 이 작업을 수행하거나 exec을 사용하여 수동으로 수행하면 됩니다.

groupmod -g 995 docker

여기 오신 분들께 도움이 되길 바랍니다. 이 답변을 찾는 데 시간이 좀 걸렸습니다.

이 문제는 아래 프로세스를 수행하여 해결됩니다.

  1. "도커" 그룹이 생성되었는지 확인합니다.

    cmd:cat /etc/group | grep docker

    출력:docker:x:995

  2. "/var/run/docker.sock" 파일의 사용 권한을 확인합니다.

    cmd: ls -l /var/run/docker.sock

    출력: rw-rw---- 1 root root 0 Jul 14 09:10 /var/run/docker.sock

  3. "/var/run/docker.docker" 파일에 도커 그룹 추가

cmd: sudo setfacl -m "g:docker:rw" /var/run/docker.sock

출력: rw-rw---- 1 root docker 0 Jul 14 09:10 /var/run/docker.sock

  1. 가능하면 도커 서비스를 다시 시작합니다.

  2. 도커 서비스를 다시 시작하려면 다음과 같이 하십시오.

    cmd: sudo systemctl restart docker

ubuntu 20.x +

sudo usermod -aG docker $USER

현재 터미널을 종료하고 다른 터미널을 열고 도커, 도커 합성 사용을 시작합니다.

언급URL : https://stackoverflow.com/questions/51342810/how-to-fix-dial-unix-var-run-docker-sock-connect-permission-denied-when-gro

반응형