이 질문은 이미 답변되었지만 추가 정보가 있습니다.
Archer 또는 Fedora 또는 Ubuntu와 같은 다른 배포판에 관계없이 Docker는 소켓 파일을 사용하여 통신합니다. docker
명령 을 실행할 때이 소켓을 사용하여 Docker 데몬과 통신합니다. 물론 데몬이 실행 중이어야하며 기본적으로 자주 비활성화되어 있지만 사용자가 소켓에 액세스 할 수 없으면 데몬과도 통신 할 수 없습니다.
먼저 배포 저장소에서 Docker를 설치합니다. 어떤 사람들은 설치 스크립트를 다운로드하여 쉘 ( curl ... | sh
)로 파이프 하지만 저장소에서 설치하여 쉽게 업데이트 할 수 있도록하는 것이 좋습니다.
아치:
# pacman -S docker
페도라 :
# dnf install docker
위에서 언급했듯이 데몬은 기본적으로 비활성화되어 있습니다. Docker를 사용하려면 데몬이 실행 중이어야합니다.
활성화 (부팅시 시작) :
# systemctl enable docker
지금 시작하십시오 (또는 재부팅).
# systemctl start docker
이제 기본적으로 (Docker 그룹이없는 경우) Docker 소켓은 root가 소유합니다.
# ls -la /var/run/docker.sock
srw-rw---- 1 root root 0 Apr 28 17:22 /var/run/docker.sock
이것이 일반 사용자가 도커 데몬과 대화 할 수없는 이유입니다. 일반 사용자에게는 소켓에 액세스 할 수있는 권한이 없습니다. 데몬에 도달 할 수 없으므로 실행 중이 아니라고 가정 하고이 오류를 표시합니다.Cannot connect to the Docker daemon. Is the docker daemon running on this host?
많은 사람들이 단순히 모든 Docker 명령을 루트로 시작하는 이유 sudo
입니다. 그러나 다른 답변에서 설명한 것처럼 Docker에는 자체 메커니즘이 있으므로 sudo를 사용할 필요가 없습니다.
이상적으로 docker
는 Docker를 설치할 때라는 그룹 이 생성됩니다. 그러나 데몬이 시작될 때 해당 그룹이 존재하지 않으면 소켓 파일은 루트가 소유합니다.
경우에 따라 해당 그룹 dockerroot
은 Fedora 와 같이 다른 이름을 사용했습니다 . grep docker /etc/group
시스템에 이러한 그룹이 있는지 확인 하십시오. 해당 그룹을 이미 사용하고 있다면 (사용자가 그룹에 있음) Docker가 그룹을 사용하도록 구성해야합니다.
에서가 /etc/sysconfig/docker
추가 -G dockerroot
(참고 :이 해결 방법이 아닌 최적의 솔루션이다) :
OPTIONS='--selinux-enabled -G dockerroot'
데몬을 다시 시작하면 사용자가 소켓에 액세스 할 수 있습니다.
# systemctl restart docker
# ls -la /var/run/docker.sock
srw-rw---- 1 root dockerroot 0 Apr 28 17:32 /var/run/docker.sock
그렇지 않으면 공식적인 방법은이라는 그룹을 사용하는 것 docker
입니다. Docker가 있으면 Docker가 자동으로 사용합니다. 즉, 소켓 그룹을 해당 그룹으로 설정합니다. 존재하지 않는 경우,이를 작성하고 디먼을 다시 시작하기 만하면됩니다.
# groupadd docker
# systemctl restart docker
소켓 파일은 해당 그룹이 소유합니다.
# srw-rw---- 1 root docker 0 Apr 28 17:42 /var/run/docker.sock
docker
소켓에 액세스하려면 사용자가 그룹에 있어야합니다.
# usermod -aG docker (user)
로그 아웃했다가 다시 로그인 (또는 su - (user)
) id
해야 할 수도 있습니다. 그룹에 있는지 확인하려면 실행 하십시오.
그런 다음 sudo / root없이 Docker를 사용할 수 있습니다.
$ docker version --format '{{.Server.Version}}'
1.9.1
마지막으로 경고의 말. 신뢰할 수있는 사용자 만 Docker 데몬을 제어 할 수 있어야합니다 . https://docs.docker.com/engine/security/security/를 참조 하십시오 .
(물론 sudo의 경우도 마찬가지입니다. 신뢰할 수있는 사용자 만 wheel
그룹에 있어야합니다 .)