반응형
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 헬스체크 후 웹이 안정적으로 기동됩니다.
'십대를 위한 코딩 > 십대를 위한 파이썬' 카테고리의 다른 글
[도커] sudo apt install docker.io (1) | 2025.08.23 |
---|---|
Python의 내장 모듈(Built-in Modules) 목록 (2) | 2025.08.05 |
파이썬 설치 (3) | 2025.08.04 |
VPC(Virtual Private Cloud) 기본 통신 제어 (1) | 2025.06.25 |
사설 네트워크(Private Network) (0) | 2025.06.24 |