윈도우 WSL로 우분투와 docker desktop을 설치해서 사용하고 있었는데,
어느날부터 갑자기 충돌하는 오류가 발생해서 사용하지 못하는 오류가 발생하여
이번 기회에 계속 뒤로 미뤘던 미니PC로 개발 서버 구축하기 작업을 하기로 했다.
Docker Engine vs Docker Desktop
Docker Engine = 메인 컨테이너 기술
Docker Desktop = (윈도우 WSL +Hyper-V 가상화 위에서 ) Docker Engine + (주로 윈도우, 맥, 리눅스) 로컬 GUI
따라서 서버환경/프로덕션환경에서는 Docker Engine, 앱 개발환경에서는 Docker Desktop이 권장되는데 나의 경우 개발용 서버를 하나 만들고, 원격으로 Docker를 관리하고자 하기에 'Portainer'를 사용하기로 했다.
Docker Engine + Portainer의 장점 (vs Docker Desktop)
1. 윈도우 PC에 요구되는 리소스 분산, 가상화계층 사용에 의한 오버헤드 X
2. 브라우저 기반 GUI
3. 중앙화된 Docker Engine, 개발자 간 공유와 테스트 가능
Docker Engine 설치
Ubuntu
Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.
docs.docker.com
설치 전 세팅
apt 업데이트
sudo apt-get update
sudo apt-get upgrade
Docker GPG Key 추가
GPG란 GNU Privacy Guard, 암호화해주는 프로그램으로 교환되는 메시지나 파일을 암호화 하거나 서명을 추가하여 작성자를 확인하고 다운로드한 패키지들이 신뢰할 수 있는 출처에서 제공되었고, 변조되지 않았다는 것을 검증하는 역할을 한다. > 공식 레포지토리 패키지를 보장하기 위해서
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/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/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
설치한 GPG key로 신뢰할 수 있는 패키지를 검증해서 올바른 현재 아키텍처(32비트, 64비트)/우분투 버전에 stable 한 Docker 버전을 공식 레포지토리 URL에서 설치
deb: 이 부분은 APT 패키지 관리자에게 이 리포지토리가 Debian 형식의 패키지를 제공한다고 알려줍니다. (Ubuntu는 Debian 기반이므로 deb 형식 사용)
[arch=$(dpkg --print-architecture)]: 시스템의 아키텍처를 자동으로 감지하여 패키지를 다운로드할 때 사용할 아키텍처를 지정합니다. (amd64, arm64 등)dpkg --print-architecture: 현재 시스템의 아키텍처를 출력하는 명령어입니다.
signed-by=/usr/share/keyrings/docker-archive-keyring.gpg: 앞서 추가한 Docker의 GPG 키를 사용하여 이 리포지토리에서 제공하는 패키지들이 신뢰할 수 있는지 검증하도록 지정합니다. /usr/share/keyrings/docker-archive-keyring.gpg는 이전에 GPG 키를 저장한 위치입니다.
https://download.docker.com/linux/ubuntu: Docker 패키지를 다운로드할 공식 리포지토리의 URL입니다.
$(lsb_release -cs): 현재 시스템의 Ubuntu 배포판의 코드네임(예: focal, bionic)을 자동으로 감지합니다. 이 코드네임을 사용하여 해당 배포판에 맞는 패키지를 다운로드합니다.lsb_release -cs는 현재 Ubuntu 배포판의 코드네임을 출력하는 명령어입니다.
stable: 이 리포지토리에서 안정적인(stable) 버전의 패키지들을 사용하겠다는 의미입니다.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world
Post-installation steps
Find the recommended Docker Engine post-installation steps for Linux users, including how to run Docker as a non-root user and more.
docs.docker.com
유저 docker 권한 부여
docker 데몬(dockerd)에 유닉스 소켓으로 통신할 수 있는 권한은 root와 docker 그룹으로 기본으로 설정되어 있다.
(/var/run/docker.sock의 소켓 파일 권한/파일 그룹소유자 = docker)
sudo groupadd docker
// docker 그룹 추가
sudo usermod -aG docker $USER
// a: 기존그룹을 유지하고 사용자를 기존그룹에 추가(a가 없으면 그룹가입 삭제)
// G: 기본 그룹 외에 지정한 보조그룹에 추가
newgrp docker
// 재로그인/재부팅하지 않고 현재 세션에서 그룹 변경을 적용
부팅 시 도커 자동시작
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
로깅 드라이버 설정
로그 용량 관리/ 다른 드라이버 사용하기 / 원격 서버에서 관리하게 설정하기
이거는 추후에 필요하게 되면 그때 하기로
'개발공부' 카테고리의 다른 글
| 미니PC로 개발 서버 구축하기 - 5. nginx + certbot으로 SSL과 리버스프록시 적용 (0) | 2024.10.08 |
|---|---|
| 미니 PC로 개발 서버 구축하기 - 4. 포기하고 docker desktop으로 해결 (0) | 2024.09.18 |
| 미니 PC로 개발 서버 구축하기 - 3. kubernetis 설치하기(실패) (0) | 2024.09.17 |
| 미니PC로 개발 서버 구축하기 - 2. portainer 설치 (0) | 2024.09.15 |
| Creative-tim 오픈소스 템플릿 에러 핸들링 (0) | 2024.09.08 |