알아가기/Docker

[Docker] Raspberry Pi 3B+ 도커 설치

XEV 2023. 8. 26. 18:18

지난번 라즈베리 파이에 도커를 설치하였으나 이번에 재설치하는 과정에서 헤매게 되었다.

그래서 이런저런 설치 상태 및 문제 발생을 기록해 둔다.

 

일단, 결론부터 적자면, 글 작성 기준 23년 8월 26일, Ubuntu 22.04 (32bit/64bit)에서만 정상 설치 되었다.

설치 시도: Rasbian, Ubuntu 20.04 (32bit)

 

 

 

 

 

Ubuntu 이미지 올리기 (Rasberry Pi Imager)

라즈베리 파이에 이미지를 올리는데 정말 편한 Raspberry Pi Imager를 이용한다.

 

 

 

Ubuntu Server 22.04 LTS 를 선택한다.

 

 

 

정말 정말 시간을 단축시키는 설정이다.

모니터, 키보드, 마우스가 필요 없게 만드는.. 이게 Imager의 꽃.

SSH를 체크하고 username과 password를 설정한다. 그 아래 WIFI를 지정하고 비밀번호까지 입력한다.

 

 

 

이제 microSD에 기록 시작.

 

 

 

선택한 이미지와 초기 설정으로 메모리에 기록 완료.

 

 

 

 

 

Docker 설치

일단 micro SD에 Ubuntu가 정상 복사 되었으면, Raspberry Pi에 SD card를 넣고 5핀 전원만 넣어주면 물리적 설정은 끝난다. 화면이 없어 확인할 수는 없지만 부팅이 진행되고 지정해 두었던 wifi로 접속이 되고 있을 것이다. 몇 분 후 ssh를 이용하여 접속을 시도하면 Raspberry Pi에서 정상적인 응답이 온다. 

 

 

 

초기 지정한 비밀번호를 입력하면 Ubuntu에 접속되고 명령 준비가 된다.

 

 

 

준비되었으면 공식 문서에 나온 대로 진행하면 된다.

https://docs.docker.com/engine/install/ubuntu/

 

 

 

1. 시간 설정

하지만, 여기서 먼저 해줘야 할 것이 있다. 꼭 날짜 및 시간이 정상 세팅되어 있는지 확인한다.

라즈베리 파이는 전원이 나가면 날짜 및 시간이 저장되지 않기 때문에 항상 시각이 틀어져 있다.

 

date

현재 라즈베리 파이에 지정된 시각을 확인하고

 

sudo date -s "YY-MM-DD HH:MM:SS"

올바른 시각을 지정한다.

 

부팅 시 NTP를 통해 자동으로 시각을 가져오는 것은 일단 나중으로 미룬다.

(NTP 설정: https://xcevor.tistory.com/465)

 

 

그럼 이제 공식 문서에 나온 명령어를 하나하나 입력한다.

 

 

 

2. 패키지 업데이트

sudo apt-get update

패키지 관리 시스템을 업데이트하여 최신 패키지 목록을 가져온다.

 

 

 

3. 보조 프로그램 설치

sudo apt-get install ca-certificates curl gnupg

필요한 보조 프로그램과 라이브러리인 ca-certificates, curl 및 gnupg를 설치한다.

인증서, 파일 다운로드 및 암호화 관련 작업에 사용된다.

지금 설치한 최신 Ubuntu의 경우 업그레이드나 인스톨이 모두 0으로 표시되어 이미 설치되어 있었다.

 

 

 

4. keyrings 디렉터리 생성

sudo install -m 0755 -d /etc/apt/keyrings

`/etc/apt/keyrings` 디렉터리를 생성한다. 이 디렉터리는 APT의 저장소 키링 파일을 저장하는 곳이다.

 

 

 

5. GPG 공개 키

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Docker의 GPG 공개 키를 다운로드하고, 다운로드한 GPG 키를 `/etc/apt/keyrings/docker.gpg` 파일에 디코딩하여 저장한다. 이렇게 함으로써 APT가 Docker의 공식 저장소에서 제공되는 패키지를 검증할 수 있다.

 

 

 

6. 권한 변경

sudo chmod a+r /etc/apt/keyrings/docker.gpg

`docker.gpg` 파일의 권한을 변경하여 모든 사용자가 읽을 수 있도록 한다.

 

 

 

7. APT 저장소 설정

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Docker의 APT 저장소를 설정하는 부분이다.

`echo` 명령을 사용하여 Docker의 저장소 정보를 `/etc/apt/sources.list.d/docker.list` 파일에 추가한다. 이 저장소는 Raspberry 운영체제에서 Docker 패키지를 가져올 수 있도록 한다.

 

 

 

8. 패키지 업데이트

sudo apt-get update

다시 한번 update 명령.

 

 

 

모든 명령이 성공적으로 적용되었음을 캡처

 

 

 

9. Docker 관련 도구

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Docker 및 관련 도구들을 설치한다.

    docker-ce: Docker Commynity Edition을 의미

    docker-ce-cli: Docker의 커맨드 라인 인터페이스 도구

    container.io: 컨테이너 런타임을 관리하는 라이브러리

    docker-buildx-plugin: Docker 관련 빌드 플러그인

    docker-compose-plugin: Docker 구성을 위한 플러그인

 

 

 

Docker 관련 도구를 설치 진행하는 캡처

 

 

 

10. 설치 확인

정상적으로 Docker가 설치되어 version 확인과 hello-world 이미지를 실행해 본다.

여기까지 확인을 한 후, 이제부터 필요한 이미지를 올려본다.

 

 

 

11. Raspberry Pi 용 ARM 이미지

Raspberry Pi는 ARM 기반이기 때문에 Docker 이미지 생성 시 buildx로 각각의 OS에 적용되는 이미지를 만들어야 한다.

Raspberry Pi 3B+ 는 32bit OS 경우 linux/arm/v7, 64bit OS 경우 linux/arm64로 지정하여 docker image 빌드를 한다.

 

 

 

 

 

다른 버전에서 문제 발생

1. Rasbian Lite 32bit에서 나타난 문제

캡처 기록이 없다. 

Imager를 이용하여 Rasbian을 올린 후, 엄연히 분리해 놓은 공식 도커설치 문서인 `https://docs.docker.com/engine/install/raspberry-pi-os/` 를 통해 명령을 하나씩 진행하였지만 실패하였다.

 

 

 

2. Ubuntu 20.04에서 나타난 문제

Imager를 이용하여 Ubuntu를 세팅하고 공식 문서 그대로 따라 했으나 위의 명령어에서 문제가 발생하여 진행되지 못했다.

다양한 시스템에서 우분투 버전을 다르게 사용하기 위해 라즈베리 파이는 Ubuntu 20.04 32bit으로 결정하고 시도하였으나 Imager에서 지정한 32bit, 64bit 모두 실패하였다.

 

 

 

위의 실패 과정은 나의 개인적인 문제일지도 모른다. 하지만 정상 설치되는 Ubuntu 22.04를 기준으로 삼고 이제는 시간낭비를 최소화하고자 한다.

 

 

 

 

 

References

Install Raspberry Pi OS using Raspberry Pi Imager

https://www.raspberrypi.com/software/

 

Raspberry Pi OS – Raspberry Pi

From industries large and small, to the kitchen table tinkerer, to the classroom coder, we make computing accessible and affordable for everybody.

www.raspberrypi.com

 

 

 

Install Docker Engine on Ubuntu

https://docs.docker.com/engine/install/ubuntu/

 

Install Docker Engine on Ubuntu

Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install.

docs.docker.com