십대를 위한 코딩/십대를 위한 파이썬

VMware Ubuntu에서 docker.io + docker-compose v2로 컨테이너 환경 구축

forSilver 2025. 8. 24. 14:47
반응형

VMware Ubuntu에서 docker.io + docker-compose v2로 컨테이너 환경 구축 

1) Docker 엔진 설치

sudo apt update
sudo apt install -y docker.io
docker --version
  • docker --version이 “명령을 찾을 수 없음”이라면 docker.io 설치로 해결합니다.
  • 설치 후 Docker 데몬은 서비스로 등록됩니다.

2) Compose v2 설치

sudo apt install -y docker-compose-v2
docker compose version
  • 항상 docker compose(공백) 를 사용하십니다.
  • 구버전 docker-compose(하이픈, v1)는 최신 이미지 메타와 충돌을 일으켜 KeyError: 'ContainerConfig' 같은 오류를 냅니다.

3) 현재 사용자에 Docker 권한 부여

id                                     # 현재 그룹 확인
sudo usermod -aG docker $USER          # docker 그룹 추가
newgrp docker                          # 재로그인 없이 즉시 반영
id                                     # groups에 docker가 보이면 정상
  • 이후부터 sudo 없이 docker ps가 동작합니다.

4) Compose 프로젝트 기동

프로젝트 루트(예: ~/django-mysql-labs/)에서:

docker compose up -d --build
docker compose ps
  • 첫 실행 시 이미지 빌드 → 네트워크/볼륨 생성 → 컨테이너 기동 순으로 진행됩니다.
  • 스크린샷처럼 db가 Healthy, web이 Started 상태면 성공입니다.
  • 로그 확인:
docker compose logs -f web

5) 최소 점검 체크리스트

  • 포트 매핑: ports: ["호스트:컨테이너"]. 윈도우 브라우저에서 접속할 때는 VM IP 기준입니다.
  • hostname -I # 우분투 VM IP 확인 # 예) http://<VM-IP>:8000
  • 권한 오류: Got permission denied while trying to connect to the Docker daemon socket → 3) 단계 재확인.
  • Compose 버전 혼용 금지: docker-compose(v1) 제거 권장.
  • sudo apt remove -y docker-compose docker compose version
  • 이미지 재빌드:
  • docker compose build --no-cache
  • 중지/정리:
  • docker compose down # 볼륨 보존 docker compose down -v # 볼륨까지 삭제(데이터 주의)

6) 참조용 예시 docker-compose.yml(Django + MySQL, 요약)

실제 파일은 프로젝트에 맞게 조정하십시오.

services:
  db:
    image: mysql:8.4
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: simadang
      MYSQL_USER: simadang
      MYSQL_PASSWORD: simadangpass
    volumes:
      - dbdata:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-prootpass"]
      interval: 5s
      timeout: 3s
      retries: 20

  web:
    build: ./app
    env_file: .env
    depends_on:
      db:
        condition: service_healthy
    ports:
      - "8000:8000"

volumes:
  dbdata:

7) 핵심 요약

  • Ubuntu 게스트에서 Docker Desktop 없이도 충분히 개발 환경을 구축할 수 있습니다.
  • 성공의 포인트는 Compose v2 채택과 docker 그룹 권한입니다.
  • docker compose up -d --build 한 줄로, 스크린샷처럼 DB 헬스체크 후 웹이 안정적으로 기동됩니다.