YOGYUI

Raspberry Pi - Docker 설치하기 본문

Hardware/Raspberry Pi

Raspberry Pi - Docker 설치하기

요겨 2022. 2. 18. 09:47
반응형

Install Docker on Raspberry Pi (Raspbian OS)

 

컨테이너(Container) 솔루션 중 가장 널리 사용되는 Docker는 Raspbian에 번들로 포함되어 있지 않아 사용자가 수동으로 설치해줘야 한다

 

DevOps 플랫폼 중 하나인 JFrog 공식 사이트에 설치 방법이 자세히 소개되어 있어 한번 따라해봤다

https://jfrog.com/connect/post/install-docker-compose-on-raspberry-pi/

 

Install Docker-Compose on Raspberry Pi - JFrog Connect (formerly Upswift)

Docker containers are light-weight, requires minimal resources and makes it possible to deliver your software quicker, which makes them extremely useful for SBC's such as Raspberry Pi. How do we define and run multi-container docker applications? Docker-Co

jfrog.com

※ Raspberry Pi 4 Model B Rev 1.2 - 4GB RAM, Raspbian GNU/Linux 10 (buster) 환경에서 진행

1. Update & Upgrade System

(뭔가를 새로 설치할 때는 언제나 그렇듯이) 터미널(LXTerminal 등)에서 다음 두 명령어 실행

sudo apt-get update
sudo apt-get upgrade

평소에 틈틈이 안해뒀으면 시간이 상당히 많이 소요된다

2. 도커 설치 스크립트 다운로드 (CURL)

curl 명령어로 get.docker.com URL의 스크립트(도커 설치 쉘 스크립트)를 get-docker.sh 파일로 다운로드받는다

curl -fsSL https://get.docker.com -o get-docker.sh

다운로드받은 쉘스크립트를 실행해준다

sudo sh get-docker.sh

정상적이라면 다음과 같은 메시지와 함께 설치가 완료된다 (2022년 2월 18일 기준)

pi@raspberrypi:~ $ sudo sh get-docker.sh
# Executing docker install script, commit: 93d2499759296ac1f9c510605fef85052a2c32be
+ sh -c apt-get update -qq >/dev/null
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
+ sh -c curl -fsSL "https://download.docker.com/linux/raspbian/gpg" | gpg --dearmor --yes -o /usr/share/keyrings/docker-archive-keyring.gpg
+ sh -c echo "deb [arch=armhf signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/raspbian buster stable" > /etc/apt/sources.list.d/docker.list
+ sh -c apt-get update -qq >/dev/null
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq --no-install-recommends  docker-ce-cli docker-ce >/dev/null
+ version_gte 20.10
+ [ -z  ]
+ return 0
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker-ce-rootless-extras >/dev/null
+ sh -c docker version
Client: Docker Engine - Community
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.16.12
 Git commit:        e91ed57
 Built:             Mon Dec 13 11:45:14 2021
 OS/Arch:           linux/arm
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.12
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.12
  Git commit:       459d0df
  Built:            Mon Dec 13 11:43:32 2021
  OS/Arch:          linux/arm
  Experimental:     false
 containerd:
  Version:          1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

================================================================================

To run Docker as a non-privileged user, consider setting up the
Docker daemon in rootless mode for your user:

    dockerd-rootless-setuptool.sh install

Visit https://docs.docker.com/go/rootless/ to learn about rootless mode.


To run the Docker daemon as a fully privileged service, but granting non-root
users access, refer to https://docs.docker.com/go/daemon-access/

WARNING: Access to the remote API on a privileged Docker daemon is equivalent
         to root access on the host. Refer to the 'Docker daemon attack surface'
         documentation for details: https://docs.docker.com/go/attack-surface/

================================================================================

3. 비루트 계정 권한 설정 (Add a none-root user to the docker group)

비루트(일반) 계정에서도 sudo 명령어 없이 도커 이미지(컨테이너)를 실행할 수 있게 하기 위해 docker 그룹에 사용자를 추가해주자 (usermod 명령어 사용)

sudo usermod -aG docker ${USER}

여기서 ${USER}는 라즈베리파이 로그인시 사용한 계정명으로, 별다른 설정을 하지 않았으면 'pi'가 된다

pi 계정으로 로그인되어있다면 위 명령어는

sudo usermod -aG docker pi

와 같이 입력하면 되며, 다른 계정명으로 로그인했을 경우 ${USER}를 계정명으로 바꿔서 입력하면 된다

 

그룹이 제대로 할당되었는지 확인하려면 다음 명령어 실행

groups ${USER}

※ 로그아웃 혹은 시스템 재시작 후 적용된다

4. 설치 확인

제대로 설치되었는지 확인해보자

(만약 3. 항목의 비루트 계정 권한 설정을 하지 않았다면 모든 명령어 앞에 sudo를 붙여줘야 한다)

4.1. 버전 확인

터미널에서 다음 명령어를 입력

docker version

2022년 2월 18일 기준 20.10.12 버전이 최신 버전이다

4.2. 정보 확인

터미널에서 다음 명령어 입력

docker info

컨테이너 개수(Running/Paused/Stopped 상태), 이미지 개수, 커널 버전, OS 버전, CPU 아키텍처, 메모리 등 시스템 전반에 대한 다양한 정보를 확인할 수 있다

4.3. Hello World 컨테이너 실행

컨테이터가 제대로 동작하는 확인하기 위해 "hello-world" 이미지를 다운로드받은 뒤 실행해보자 

다음 명령어를 실행하면 자동으로 다운로드받고 실행된다

docker run hello-world

Hello from Docker!

This message shows that your installation appears to be working correctly. 

메시지를 확인할 수 있다

5. 부팅 시 실행 설정

도커 시스템이 라즈베리파이 실행 시 자동으로 실행될 수 있도록 systemctl 명령어를 사용해서 기능을 활성화해준다

sudo systemctl enable docker

컨테이너의 자동 시작 명령까지 지정하면 (restart policy 설정 방법: 링크) 특정 컨테이터를 라즈베리파이 보드 재시작 후에도 자동으로 실행할 수 있도록 할 수 있다

6. Docker-Compose 설치 (옵션)

만일 다중 컨테이너 서비스를 구축하고자 한다면 Docker Compose를 설치해줘야 한다 (Python 패키지로 설치)

Raspbian OS는 Python3가 번들로 설치되기 때문에 다음 명령어만 실행해주면 된다

sudo pip3 install docker-compose

설치가 완료된 뒤 docker-compose를 바로 실행할 수 있다

 

<설치 제거 방법>
sudo apt-get purge docker-ce​

컨테이터, 이미지 등 잔존 데이터를 모두 삭제하고자 할 경우

sudo rm -rf /var/lib/docker

 

[참고]

https://phoenixnap.com/kb/docker-on-raspberry-pi

https://dev.to/elalemanyo/how-to-install-docker-and-docker-compose-on-raspberry-pi-1mo

반응형