Ubuntu 18.04 Docker 설치

Table of contents

  1. Docker 설치 방법
  2. docker.sock 권한 부여
    1. 방법1. docker.sock 권한 변경
    2. 방법2. Docker 그룹을 만들어서. 사용자 추가하기

Docker 설치 방법

apt 패키지 관리자를 이용하여 먼저 패키지 목록 업데이트를 한다.

$ sudo apt update -y

도커CE는 몇가지 패키지에 의존하므로, 아래 4가지 패키지를 설치한다.

$ sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

도커 패키지 저장소를 apt에 등록한다.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

도커CE를 설치한다

$ sudo apt install -y docker-ce

도커를 시작한다

$ sudo systemctl start docker

도커 상태 확인한다.

$ sudo systemctl status docker

도커 버전 확인한다.

$ docker version
Client: Docker Engine - Community
 Version:           24.0.2
 API version:       1.43
 Go version:        go1.20.4
 Git commit:        cb74dfc
 Built:             Thu May 25 21:52:13 2023
 OS/Arch:           linux/amd64
 Context:           default
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/version": dial unix /var/run/docker.sock: connect: permission denied

위와 같이 출력되면 도커가 정상적으로 출력된 것이다.

docker.sock 권한 부여

Jenkins Script를 통해 docker image를 만들고 배포하려고 할 때, Jenkins Agent를 구동하는 계정이 root가 아닌 일반 사용자계정이면 아래의 오류가 발생한다.

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/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&session=klv1s7gcvua6o8j7srtt572zk&target=&ulimits=null&version=1: dial unix /var/run/docker.sock: connect: permission denied

방법1. docker.sock 권한 변경

Chmod 666 /var/run/docker.sock

특이사항 : 권한을 변경한 경우, 일시적인 조치 입니다. docker 서비스를 재시작하면 권한이 660으로 돌아옵니다. 해당 방법은 권장하지 않습니다.

방법2. Docker 그룹을 만들어서. 사용자 추가하기

$ Sudo groupadd docker

$ sudo usermod -aG docker $USER

$ newgrp

해당 사용자 계정이 docker group 권한이 부여되었음을 확인하는 방법

$ id
[testhost@testhost ~]$ id
uid=1001(testhost) gid=1002(testhost) groups=1002(testhost),1003(docker)
$sudo chown root:docker /var/run/docker.sock
$ systemctl restart docker

만약 docker 재시작 이후에 권한설정이 돌아온다면?

파일생성 : /etc/docker/daemon.json

{
"group" : "docker"
}

위 작업이 완료된 이후에 systemctl reboot 실행이 필요하다.