Docker를 Snap으로 설치 한 후 실행하면 권한이 거부되었습니다. while trying to connect to the Docker

소프트웨어 저장소를 통해 Docker를 설치했는데 Snap 패키지임을 나타냅니다. 내 생각에는 좋지만, 불행히도 내가 시도한 모든 Docker 명령이 작동하지 않습니다.

$ docker info
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.30/info: dial unix /var/run/docker.sock: connect: permission denied

이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

편집 : Docker의 자체 저장소 에서 Docker 를 설치 하여이 문제를 해결했으며 앞으로이 질문을 탐색하는 사람들에게도 유용 할 수 있습니다. 그래도 Snap에서 질문을 실행하려는 사람들에게 질문을 열어두고 있습니다.



답변

이것은 GitHub 페이지에서 가져온 것입니다. 정확한 단계를 시도 했습니까?

If you are using Ubuntu Core 16,

Connect the docker:home plug as it's not auto-connected by default:

$ sudo snap connect docker:home

If you are using an alternative snap-compatible Linux distribution ("classic" in snap lingo), and would like to run docker as a normal user:

Create and join the docker group.

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

You will also need to disable and re-enable the docker snap if you added the group while it was running.

$ sudo snap disable docker
$ sudo snap enable docker

에서 부두 노동자 스냅 GitHub의


답변

오류 메시지는 엔진과 통신하기 위해 유닉스 소켓에 액세스 할 수있는 권한이 없기 때문에 현재 사용자가 도커 엔진에 액세스 할 수 없음을 나타냅니다.

임시 솔루션

sudo매번 높은 권한으로 명령을 실행 하려면이 명령을 사용하십시오 .

영구 (권장) 솔루션

현재 사용자를 docker그룹에 추가하십시오 . 이것은 입력하여 얻을 수 있습니다

sudo usermod -a -G docker $USER

그룹 멤버십을 적용하려면 로그 아웃했다가 다시 로그인해야합니다.

출처 : techoverflow.net


답변

귀하의 사용자 이름이 이미 도커 그룹에 있다고 가정합니다. 이를 확인하려면 아래 명령을 실행하십시오.

id -nG

그렇지 않은 경우 아래 명령으로 사용자를 docker 그룹에 추가해야합니다.

sudo groupadd docker
sudo usermod -aG docker $USER

명령을 실행하면 sudo systemctl start docker도커 프로세스가 생성됩니다. 해당 도커 프로세스에는 dockerd데몬 스레드 가 포함되어 있습니다 . 이 명령은 또한 기본 docker.sock유닉스 소켓을 만듭니다 . docker.sock소켓은 지속적으로 경청한다 dockerd데몬 스레드. 이를 통해 docker.pid프로세스로 커널 레벨 IPC를 수행 할 수 있습니다 . 이 도커 소켓을 사용하려면 프로세스 수준 ( docker.pid) 및 파일 수준 ( docker.sock)의 적절한 권한이 있어야합니다 . 따라서 아래 두 명령을 실행하면 문제가 해결됩니다.

sudo chmod a+rwx /var/run/docker.sock # You can provide just execute permission
sudo chmod a+rwx /var/run/docker.pid


답변

sudo setfacl -m user:your_user_name:rw /var/run/docker.sock

다시 시작할 필요가없고 더 안전합니다


답변

Docker 그룹에 사용자를 추가해야합니다 ( 공식 문서 참조 ).

sudo명령 앞에 추가 하거나 다음 명령 docker을 사용하여 그룹에 사용자를 추가 할 수 있습니다 .

sudo usermod -aG docker <USER>

그룹 멤버쉽이 다시 평가되도록 로그 아웃했다가 다시 로그인하십시오.