Raspberry Pi OS(라즈비안)에 Docker & Docker Compose 설치 (ft. transmission)

2024. 6. 4. 17:28코딩/Linux & Cloud

라즈베리파이3에 transmission을 쓰려고 했는데 
계속 permission 문제에 설정 문제에.. 번거롭기도 하고 불편하기도 해서 
그냥 docker compose로 이미지를 설치해서 쓰고 있습니다.

근데 생각 외로 docker compose를 편하게 설치하는 방법에 대한 글이 잘 없어서, 하나 작성해둡니다.
(글 자체는 있긴 한데 pip때문에 venv도 써야하고 해서.. 그것도 좀 번거롭더라구요)

라즈베리파이 OS(라즈비안) 뿐 아니라 다른 리눅스여도 문제 없이 동작할듯? 합니다.
일단 저는 라즈베리파이 OS(라즈비안)에서 아래처럼 해서 정상 동작을 확인했습니다.

 

0. 준비

sudo apt-get update
sudo apt-get upgrade

 

1. Docker 설치

1) Docker 설치

curl로 docker 설치 shell 파일을 받아옵니다.

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

 

해당 shell 파일을 실행하여 docker를 설치합니다.

sudo sh get-docker.sh

 

2) 권한 부여

docker 사용을 위해 권한을 부여합니다.

(현재 접속한 user의 권한이 아닌 다른 사용자의 권한을 넣고싶다면, ${USER}를 다른 리눅스 사용자 명으로 변경하세요)

sudo usermod -aG docker ${USER}

 

3) 권한 부여 후, 권한 그룹에 docker가 추가되었는지 확인

(참고로 그룹 추가가 실제 리눅스에 적용되려면, 재부팅이 필요함)

groups ${user}

 

4) 도커 설치 확인

docker version

 

2. Docker Compose 설치

1) Docker compose 설치

Docker와 마찬가지로 curl을 이용하여 Docker compose를 설치합니다

.docker 하위에 플러그인 폴더를 만들고, 해당 플러그인 폴더에 docker compose를 받아와야 합니다.

mkdir -p ~/.docker/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.27.1/docker-compose-linux-aarch64 -o ~/.docker/cli-plugins/docker-compose

chmod +x ~/.docker/cli-plugins/docker-compose

 

아래의 curl 명령어에서 버전을 /v2.27.1/ -> /최신버전/ 으로 변경해서 사용하시면 됩니다.
최신버전은 아래 github release 링크에서 확인하시면 됩니다.

https://github.com/docker/compose/releases

혹시나 라즈베리파이가 아닌 다른 장치에서 하고 있다면

뒤의 docker-compose-linux-aarch64 부분도 해당 장치 CPU에 맞게 변경해주세요.

사실 인터넷에 검색해보면 pip를 이용하여 docker compose를 설치하는 방법이 많이 나오는데 
pip로 docker compose를 설치하는 방법은 현재 deprecated 되었으므로

pip가 아닌 위의 curl을 사용하는 방법으로 설치하시기를 권장합니다.

 

2) Docker compose 설치 확인

docker compose verison

 

3. Docker Compose 동작을 위한 yaml 작성

저는 transmission을 사용하기 위해 docker compose를 설치했으므로

이 글에도 transmission을 위한 세팅을 작성해둡니다.

다른 서비스가 필요하신 경우 구글에 docker compose (서비스명) 으로 검색하시면 하는 방법이 나올거에요

 

1) yaml 파일과 config 저장을 위한 경로 추가

cd ~
mkdir transmission-docker
cd transmission-docker

mkdir config
nano docker-compose.yaml

 

2) docker-compose.yaml 파일 작성

nano 편집기로 docker-compose.yaml이라는 파일을 작성합니다.

nano docker-compose.yaml

 

yaml 내용은 아래와 같이 작성하면 됩니다.

---
services:
  transmission:
    image: lscr.io/linuxserver/transmission:latest
    container_name: transmission
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - USER=원하는사용자이름
      - PASS=원하는패스워드
    volumes:
      - /home/사용자pi명/transmission-docker/config:/config
      - /파일/저장하려는/경로:/downloads
      - /path/to/watch/folder:/watch
    ports:
      - 9091:9091
      - 51413:51413
      - 51413:51413/udp

 

3) docker compose로 실행

위 yaml이 있는 경로에서 아래 명령어를 실행하면 됩니다.

docker compose up -d

 

그러면 아래와 같이 Running이 나오고, 최초 실행이므로 docker 이미지 pull을 받고 Run을 하게 됩니다.

(최초 실행 & 종료 이후에 다시 docker compose up -d 로 docker 이미지를 실행하면, 그때는 Running이 1/1만 나올거에요)

 ✔ transmission Pulled                                                                         45.8s
...
[+] Running 2/2
 ✔ Network transmission-docker_default  Created                                                 1.6s
 ✔ Container transmission               Started                                                30.1s

 

완료되면 아래 transmission 링크로 접속하셔서, 확인하시면 됩니다.
ID/PW는 아까 위에 yaml에 쓴 USER / PASS 입니다.

http://라즈베리파이IP:9091/transmission/web/

 

4) docker compose 컨테이너 stop

동일하게 위 yaml이 있는 경로에서, 아래 명령어를 실행하면 됩니다.

docker compose stop



4. 관련 참고한 글

1) 도커 설치
https://ban2aru.tistory.com/70

2) 도커 컴포즈 설치
https://www.reddit.com/r/docker/comments/symkwr/installing_docker_compose_v2_on_raspberry_pi_4/

3) 도커 컴포즈 동작을 위한 yaml 작성
https://hub.docker.com/r/linuxserver/transmission