[docker] Docker를 수정하는 방법 : 권한 거부 문제가 발생했습니다

우분투 OS가있는 컴퓨터에 Docker를 설치했습니다. 도커를 설치 한 후 실행하면

sudo docker run hello-world

괜찮습니다.하지만 sudo명령을 더 짧게하기 위해 단어 를 숨기고 싶습니다 .

단어없이 명령을 쓰면 sudo

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'.

내가 만들려고 할 때도 같은 일이 일어났다

docker-compose up

이 문제를 어떻게 해결할 수 있습니까?



답변

root가 아닌 사용자로 docker를 실행하려면 docker 그룹에 docker를 추가해야합니다.

  1. 도커 그룹이 없으면 작성하십시오.
$ sudo groupadd docker
  1. docker 그룹에 사용자를 추가하십시오.
$ sudo usermod -aG docker $USER
  1. 다음 명령 또는 로그 아웃을 실행하고 다시 로그인 한 후 실행하십시오 (작동하지 않는 경우 먼저 시스템을 재부팅해야 할 수도 있음)
$ newgrp docker
  1. 도 커가 루트없이 실행될 수 있는지 확인하십시오.
$ docker run hello-world

docker 공식 문서에서 가져옵니다 :
manage-docker-as-a-root-user


답변

업그레이드 후 권한이 거부되었습니다. 사용자가 이미 ‘docker’그룹에 있었기 때문에 ‘mkb’ 설치 후 단계를 수행해 도 아무런 변화가 없습니다. 나는 성공없이 어떤 식 으로든 두 번 재 시도합니다.

검색 시간 후에 다음 솔루션이 성공적으로 작동했습니다.

sudo chmod 666 /var/run/docker.sock

해결책은 Olshansk 에서 나왔습니다 .

업그레이드가 ‘docker’그룹에 대한 충분한 권한없이 소켓을 다시 만든 것처럼 보입니다.

문제

이 하드 chmod는 보안 허점을 열고 재부팅 할 때마다이 오류가 반복해서 시작되므로 매번 위의 명령을 다시 실행해야합니다. 나는 한 번에 해결책을 원한다. 이를 위해 두 가지 문제가 있습니다.

  • 1) 문제점SystemD : 소켓은 소유자 ‘root’와 그룹 ‘root’로만 작성됩니다.

    이 명령으로 첫 번째 문제를 확인할 수 있습니다.

    ls -l /lib/systemd/system/docker.socket
    

    이 모든 것이 좋으면 ‘ root/docker‘not ‘ root/root‘ 가 표시되어야합니다 .

  • 2) 그래픽 로그인 문제 : /superuser/1348196/why-my-linux-account-only-belongs-to-one-group

    이 명령으로 두 번째 문제를 확인할 수 있습니다.

    groups
    

    모든 것이 정확하면 목록에 docker 그룹이 표시됩니다. 명령을 시도하지 않으면

    sudo su $USER  -c groups
    

    도커 그룹 이 보이면 버그 때문입니다.

솔루션

그래픽 로그인에 대한 해결 방법을 얻으려면 다음 작업을 수행해야합니다.

sudo chgrp docker /lib/systemd/system/docker.socket
sudo chmod g+w /lib/systemd/system/docker.socket

그러나이 버그를 관리 할 수 ​​없다면 그렇게 나쁘지 않은 해결책은 다음과 같습니다.

sudo chgrp $USER /lib/systemd/system/docker.socket
sudo chmod g+w /lib/systemd/system/docker.socket

이것은 그래픽 환경에 있고 컴퓨터의 유일한 사용자 일 수 있기 때문에 작동합니다. 두 경우 모두 재부팅해야합니다 (또는 sudo chmod 666 /var/run/docker.sock)


답변

  1. 도커 그룹 추가
$ sudo groupadd docker
  1. 도커 그룹에 현재 사용자 추가
$ sudo usermod -aG docker $USER
  1. 도커 그룹으로 세션 전환
$ newgrp - docker
  1. 테스트를 위해 예제를 실행하십시오
$ docker run hello-world


답변

  1. docker그룹에 현재 사용자 추가
sudo usermod -aG docker $USER
  1. docker 데몬에 연결할 수 있도록 docker socket의 권한을 변경하십시오. /var/run/docker.sock
sudo chmod 666 /var/run/docker.sock


답변

이 명령 으로이 오류를 해결합니다.

$ sudo chmod 666 /var/run/docker.sock


답변

https://docs.docker.com/install/linux/linux-postinstall/docsManage Docker as a non-root user 에서 언제든지 단락을 시도 할 수 있습니다 .

문제가 지속되는 경우에도이 작업을 수행 한 후 다음 명령을 실행하여 문제를 해결할 수 있습니다.

sudo chmod 666 /var/run/docker.sock


답변

unix : ///var/run/docker.sock에서 Docker 데몬 소켓에 연결하는 동안 권한이 거부 되었습니다 . /var/run/docker.sock : 연결 : 권한 거부

sudo chmod 666 /var/run/docker.sock

이것은 내 문제를 해결합니다.