유저그룹
유저그룹은 무엇인가?
docker를 우분투에 설치해 보았다. 그런데, docker run 을 해보니 아래와 같은 에러가 발생하였다. permission error가 발생했다. 왜일까?
$ 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.38/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
/var/run 폴더로 이동해 보자. docker가 연결하고 싶은 socket은 root:docker권한 이다. 즉 user권한은 root이지만, group권한은 docker이다. 그러면, root권한이므로 root사용자만 읽을수 있는건가? 결론부터 말하자면 NO이다.
/var/run$ ls -al docker.sock
srw-rw---- 1 root docker 0 9월 18 11:04 docker.sock
USER GROUP은 뭔가?
그룹은 조직을 논리적으로 표현한 것으로, 공통된 목적으로 사용자를 하나로 묶습니다. 그룹 내의 사용자는 해당 그룹이 소유 한 파일을 읽거나 쓰거나 실행할 수 있습니다. 각 사용자 및 그룹에는 사용자 ID (UID) 및 사용자 그룹 (GID)이라는 고유 한 숫자 식별 번호가 있습니다 파일을 만드는 사용자는 해당 파일의 소유자이자 그룹 소유자이기도합니다. 파일에는 소유자, 그룹 및 다른 모든 사용자에 대해 별도의 읽기, 쓰기 및 실행 권한이 할당됩니다. 파일 소유자는 ROOT USER만 변경할 수있을뿐 아니라 엑세스권한은 ROOT 사용자와 파일 소유자가 변경할수 있다.
즉 유저그룹이 동일하면, 그파일을 만들지 않더라도 해당파일을 읽거나 쓰거나 실행할수 있다. 그럼 docker 유저그룹에 내 계정을 추가해 보자.
sudo usermod -a -G docker $USER
usermode명령어를 사용하면 유저그룹에 추가가 가능하다. 그리고, 반영이 될려면 logout하고 다시 login을 해야 한다. 그럼 다시 docker를 실행해 보자. 성공한다. /var/run/docker.sock파일을 읽을수 있다.
$ docker run hello-world
hello-world success