본문 바로가기
기술스택을 쌓아보자/linux 리눅스

Ubuntu에 Docker 설치하기 + docker 권한 부여 및 gcp vm 디버깅

by 소리331 2024. 3. 1.
반응형

실행환경 

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.6 LTS
Release:        20.04  # 우분투 버전 
Codename:       focal  # 배포판 이름 => 도커 설치 시 codename이 사용된다!

$ lsb_release -cs  # Codename만 추출
focal

우분투 apt-get update

sudo apt-get update

관련 패키지 설치

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
  • apt-transport-https ca-certificates curl : https 통신과 관련됨
  • gnupg-agent: 암호화 및 디지털 서명을 위한 도구
  • software-properties-common : 소프트웨어 저장소관리, 제3자 저장소를 apt 소스 리스트에 추가할 때 사용됩니다.

3. Docker의 공식 GPG키를 추가

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • gpg key: 암호화 키 

4. Docker의 공식 apt 저장소를 추가

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

5. 패키지 업데이트

sudo apt-get update

6. Docker 설치

sudo apt-get install docker-ce docker-ce-cli containerd.io
  • docker ce: 도커 커뮤니티 에디션! 

7. 설치 확인 

7-1 도커 실행상태 확인

sudo systemctl status docker

$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-03-01 05:20:37 UTC; 3s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 3833 (dockerd)
      Tasks: 22
     Memory: 31.1M
     CGroup: /system.slice/docker.service
             └─3833 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Mar 01 05:20:37 ksgpli001 systemd[1]: Starting Docker Application Container Engine...
Mar 01 05:20:37 ksgpli001 dockerd[3833]: time="2024-03-01T05:20:37.040175345Z" level=info msg="Starting up"
Mar 01 05:20:37 ksgpli001 dockerd[3833]: time="2024-03-01T05:20:37.040831794Z" level=info msg="detected 127.0.>
Mar 01 05:20:37 ksgpli001 dockerd[3833]: time="2024-03-01T05:20:37.619138426Z" level=info msg="Loading contain>
Mar 01 05:20:37 ksgpli001 dockerd[3833]: time="2024-03-01T05:20:37.736553986Z" level=info msg="Loading contain>
Mar 01 05:20:37 ksgpli001 dockerd[3833]: time="2024-03-01T05:20:37.746601735Z" level=info msg="Docker daemon" >
Mar 01 05:20:37 ksgpli001 dockerd[3833]: time="2024-03-01T05:20:37.746692729Z" level=info msg="Daemon has comp>
Mar 01 05:20:37 ksgpli001 dockerd[3833]: time="2024-03-01T05:20:37.773744482Z" level=info msg="API listen on />
Mar 01 05:20:37 ksgpli001 systemd[1]: Started Docker Application Container Engine.

7-2 도커 커맨드 확인 

 sudo docker ps 

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

 

=> 여기 까지 하면 sudo 사용자가 docker 권한을 사용할 수 있다. 

그런데 나는,,, 다른 사용자도 docker 를 사용할 수 있도록 설정할 것이므로 아래 설정을 추가로 해준다. 

8. docker group 수정으로 다른 유저 권한 제공

docker ps 
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/containers/json": dial unix /var/run/docker.sock: connect: permission denied

docker를 최초로 설치하면 sudo 권한을 가져야만 docker를 쓸 수 있다. 

sudo usermod -aG docker $USER

때문에 docker 그룹에 user를 추가해준다. 

~$ cat /etc/group | grep docker
docker:x:998:hoseung

이후 터미널을 재시작하면 docker 가 정상적으로 작동동그라미

$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

 

GCP 환경에서 설치하면서 디버깅

 - 나는 GCP 에서 VM 인스턴스를 n2-standard-16으로 설치하여 진행하고 있었는데, 처음에 이런 오류가 나왔었다. 

Err:10 https://download.docker.com/linux/ubuntu bookworm Release 
    404 Not Found [IP: 108.138.7.18 443] Reading package lists... Done 
E: The repository 'https://download.docker.com/linux/ubuntu bookworm Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default. 
N: See apt-secure(8) manpage for repository creation and user configuration details.

이러한 이유는 lsb_release - cs 의 결과값인 bookworm 에 해당하는 도커 배포판이 없어서 그런 것이다. 알고보니 gcp 에서 vm을 생성할 때의 default 값이 우분투가 아닌 debian으로 생성 되는 것이었다. 운영체제를 변경 후 다시 생성해보자! vm 생성시 운영체제는 [ 부팅디스크 ] - [ 운영체제 ]를 변경해주면 된다. 

반응형

댓글