【Ubuntu】도커를 sudo 명령 없이 실행하기 위한 설정과 주의점

2019/10/3

우분투에서 docker를 사용할 때 sudo없이 docker를 실행할 수있게하는 방법에 대한 메모.

계기

docker를 설치한 후 그대로sudo명령없이 동작을 확인하면 오류가 발생했습니다.

# Ubuntu 터미널에서 실행 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.39/containers/create: dial unix /var/run/docker.sock: connect: permission denied. See 'docker run –help'.

docker 데몬에 대한 액세스가 거부 된 것 같습니다. sudo docker run hello-world를 입력하면 작동했습니다.

에러의 원인은 이하의 이유라고 합니다.

Docker는 root 권한으로 움직이고 있는 데몬(dockerd)과 unix 소켓 또는 tcp/ip로 통신하고 있습니다만, dockerd에 액세스하려면 docker 그룹에 속하거나 root 권한이 필요합니다.

Docker에서 사용자를 docker 그룹에 추가하는 위험을 이해하십시오.

sudo 명령을 추가하면 루트 권한이 없으면 실행할 수 없는 명령(예: 데몬에 대한 연결)을 일반 사용자가 실행할 수 있습니다.그러나 매번 sudo를 추가하는 것은 번거롭습니다.

대응책과 주의점

sudo 없이 실행하려면 사용자를 dokcer 그룹에 소속시키는 것도 하나의 손이지만 (구그하면 그 예가 많다), 보안상의 문제도 있는 것 같습니다.

참조 : docker 그룹에서 루트와 유사한 권한을 부여했을 때의 위험 (공식 문서)

sudo없이 docker를 사용하고 싶다면, newgrp 에서 일시적으로 그룹에 소속시킬까 유저 네임스페이스(user namespaces)가 좋다고 하는 것.

sudo groupadd docker # $USER에는 사용자 이름이 포함됩니다. sudo usermod -aG docker $USER newgrp docker docker run hello-world 

도커에서 안녕하세요!
이 메시지는 설치가 올바르게 작동하고 있음을 나타냅니다.

이 메시지를 생성하기 위해 Docker는 다음 단계를 수행했습니다.

1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the “hello-world" image from the Docker Hub.
(AMD64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

좀 더 야심찬 작업을 시도하려면 다음을 사용하여 Ubuntu 컨테이너를 실행할 수 있습니다.
$docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/