집에서 가지고 놀고 있는 라즈베리파이(3b)에 새로운 환경의 프로그램 올릴 때마다 환경 설정하는 것이 귀찮아서 docker를 설치하기로 했습니다. 전에도 리눅스에 docker를 여러 번 설치해 봤는데 매번 매끄럽게 진행되지는 않아서 이 번에도 뭔가 난항이 있겠구나 생각했습니다. 하지만, 놀랍도록 간단하게 끝나 버렸습니다. docker 공식 문서만 따라 하면 되지만 기록 차원에서 간단히 정리해 둡니다.
라즈베리파이에 docker를 설치하는 가이드는 다음과 같습니다.
- 32 비트: https://docs.docker.com/engine/install/raspberry-pi-os/
- 64 비트: https://docs.docker.com/engine/install/debian/
저는 64비트 환경이어서 64비트 가이드를 따라 했습니다. 64비트는 데비안 가이드와 동일합니다.
1. apt 리파지토리 설정
# docker 공식 GPG 키 추가
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# 리파지토리 추가
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
2. 최신 버전 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
3. 테스트
sudo docker run hello-world
끝입니다. 진행 중에 어떤 오류도 발생하지 않고 매끄럽게 끝났습니다.
업스테이지 Solar API 테스트용으로 만들었던 프로그램을 Docker 이미지로 만들어서 올려 봤습니다.
docker registry 서버를 거치지 않고 docker 이미지 파일을 옮길 때는 다음과 같이 합니다.
0. 대상 이미지 확인
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
lunar latest a374d2874d03 30 minutes ago 193MB
1. docker 이미지를 tar 파일로 저장
docker save lunar -o lunar.tar
2. docker 이미지 tar 파일을 대상 서버(여기에서는 라즈베리파이)로 전송
3. 대상 서버에서 docker 이미지 적재
sudo docker load -i lunar.tar
4. 확인
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
lunar latest a374d2874d03 6 minutes ago 193MB
5. 실행
sudo docker run -p 5050:5000 --name lunar lunar
문제 없이 성공적으로 잘 진행 됐습니다. :-)
sudo 없이 docker 명령어 사용하기
sudo를 사용하여 매번 root 권한으로 docker 명령어를 실행하면 불편합니다. sudo 없이 일반 사용자 권한으로 docker 명령어를 실행하기 위해서는 다음의 두 가지 방법이 있습니다.
- 일반 사용자에게 group 권한 부여하기
- docker daemon을 root가 아닌 일반 사용자 권한으로 설치하기
두 번째 방법은 설치부터 새롭게 해야 하는데 여기서는 다루지 않겠습니다. 관심 있으신 분들은 https://docs.docker.com/engine/security/rootless/ 를 참고하시면 됩니다.
첫 번째 방법은 다음과 같이 하면 됩니다.
1. 먼저 docker라는 그룹이 등록돼 있는지 확인합니다. 위의 방법대로 docker를 설치하면 자동으로 등록돼 있을겁니다.
getent group docker
만약 아무 것도 출력되지 않는 경우에는 다음과 같이 docker 라는 그룹을 등록해 줍니다.
sudo groupadd docker
2. 현재 사용자를 docker 그룹에 추가합니다.
sudo usermod -aG docker $USER
3. 로그아웃했다가 다시 로그인 하거나 다음의 명령어로 그룹을 활성화 할 수 있습니다.
newgrp docker
이 이후로는 sudo 없이 바로 docker 명령어를 사용할 수 있습니다.
이렇게 사용자를 docker 그룹에 추가했을 뿐인데 sudo 사용이 가능한 이유는 Docker 데몬이 시작할 때 docker 그룹에 있는 사용자들이 접근 가능하게 Unix 소켓을 생성하기 때문입니다.
참고
'생활코딩' 카테고리의 다른 글
라즈베리파이 카메라 모듈 - 모니터링 웹앱 만들기 (7) | 2024.11.01 |
---|---|
라즈베리파이 - 홈서버 구성 (1) | 2024.10.31 |
GoAccess - nginx 접속 로그 분석 (0) | 2024.10.26 |
라즈베리파이 온습도 센서 사용하기 (0) | 2024.10.25 |
라즈베리파이 먼지센서 사용하기 (0) | 2024.10.24 |