[Ubuntu] 18.04 docker 명령을 sudo 없이 실행하기, systemctl restart Develop Tip

정리를 제대로 안해 놓았더니 계속해서 찾게 됩니다. 
전부터 Ubunut 우분투 에서 docker를 돌리면 docker 명령을 돌릴 때
sudo 로 root 권한 상승을 해야만 실행이 됩니다.


$ docker run hello-world
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get
 ...: connect: permission denied

그러면 위와 같은 경우, sudo 없이 실행할 수 있는 방법입니다.

$ sudo groupadd docker
$ sudo gpasswd -a $USER docker
$ newgrp docker

필요에 따라서 위와 같이 한 상태에서 docker 서비스를 다시 기동시켜야 합니다.

그런데 설치된 것에 따라 docker 서비스 이름이 다릅니다.
또한 예전 리눅스에는 주로

$ sudo /etc/init.d/docker restart

와 같은 식으로 주로 서비스 동작을 시키다가,
18.04에서는 (아마도 14, 16 이후 인 것 같은데..) 주로 systemctl 을 이용합니다.
(Photon OS 에서도 systemctl 을 그대로 이용합니다)

우선은 서비스로 동작되는 것을 모두 확인하려면,


$ systemctl list-units --all --type=service --no-pager
  UNIT                                  LOAD      ACTIVE   SUB     DESCRIPTION
  accounts-daemon.service               loaded    active   running Accounts Service
  acpid.service                         loaded    inactive dead    ACPI event daemon
  apparmor.service                      loaded    active   exited  AppArmor initialization
  apport-autoreport.service             loaded    inactive dead    Process error reports when automatic reporting i
  apport.service                        loaded    active   exited  LSB: automatic crash report generation
  apt-daily-upgrade.service             loaded    inactive dead    Daily apt upgrade and clean activities
  apt-daily.service                     loaded    inactive dead    Daily apt download activities
  atd.service                           loaded    active   running Deferred execution scheduler
● auditd.service                        not-found inactive dead    auditd.service
...

위에처럼 보이는데, docker 서비스를 찾으려고

$ systemctl list-units --all --type=service --no-pager | grep -i docker
  snap.docker.dockerd.service           loaded    active   running Service for snap application docker.dockerd      

위에 서비스 이름을 찾았습니다. (snap로 설치가 되었네요. 이제는 우분투 apt 외에 snap로 서비스 설치가 공존하나 봅니다)

$ sudo systemctl restart snap.docker.dockerd.service
위와 같이 docker 서비스를 재 기동하고 나니,

$ docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 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.

To try something more ambitious, you can run an Ubuntu container with:
 $ 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/

위와 같이 sudo 없이 docker 명령을 잘 동작하게 됩니다.


어느 분께는 도움이 되셨기를 ..

핑백

덧글

댓글 입력 영역

구글애드텍스트