멀티패스 VM 매니저 참고서: Ubuntu, Windows 및 macOS 가이드
다중 패스 설치, 설정 및 필수 명령어
Multipass은 Linux, Windows, macOS에서 Ubuntu 클라우드 인스턴스를 쉽게 생성하고 관리할 수 있는 가벼운 가상 머신 관리자입니다.
개발자가 고립된 환경을 필요로 하거나, DevOps 엔지니어가 구성 테스트를 수행하거나, Linux를 배우고 있는 사람이라면, Multipass는 Ubuntu 가상 머신을 빠르게 생성할 수 있는 간단한 명령줄 인터페이스를 제공합니다.
Multipass란 무엇인가요?
Multipass는 Canonical의 공식 도구로, Ubuntu 가상 머신을 생성하고 관리하는 데 사용됩니다. 간단하고 빠르며, 여러 플랫폼을 지원하는 특징으로, 다양한 운영체제에서 일관된 Ubuntu 환경이 필요한 개발자에게 이상적인 선택입니다.
주요 기능
- 크로스 플랫폼: Linux, Windows, macOS에서 작동
- 가볍고 효율적: 전통적인 가상 머신보다 자원 사용이 적음
- cloud-init 지원: cloud-init 메타데이터로 VM 구성 가능
- 스냅샷 지원: VM 스냅샷 생성 및 복구 가능
- 네트워크 통합: 호스트와 VM 간의 네트워킹이 간단함
- SSH 액세스: 내장 SSH 키 관리 기능
가장 유용한 명령어
# 빠른 참조
multipass launch --name dev --cpus 2 --memory 4G --disk 20G
multipass shell dev
multipass mount ./project dev:/home/ubuntu/project
multipass snapshot dev before-changes
multipass restore dev before-changes
multipass delete dev
multipass purge
설치 방법
Ubuntu/Linux
# snap을 통한 설치 (추천)
sudo snap install multipass
# apt을 통한 설치
sudo apt update
sudo apt install multipass
Windows
- multipass.run에서 Windows 설치 파일을 다운로드합니다.
- 관리자 권한으로 설치 프로그램을 실행합니다.
- Multipass는 기본적으로 Hyper-V를 사용합니다(Windows 10 Pro/Enterprise) 또는 VirtualBox로 대체됩니다.
macOS
# Homebrew을 통한 설치
brew install --cask multipass
# multipass.run에서 다운로드
기본 사용법
첫 번째 VM 생성
# 기본 설정으로 VM 생성
multipass launch
# 특정 이름으로 VM 생성
multipass launch --name my-vm
# 특정 Ubuntu 버전으로 VM 생성
multipass launch 22.04 --name ubuntu-22
# 커스텀 리소스로 VM 생성
multipass launch --name dev-vm --cpus 2 --memory 4G --disk 20G
VM 관리
# 모든 VM 목록 보기
multipass list
# VM 시작
multipass start my-vm
# VM 중지
multipass stop my-vm
# VM 삭제
multipass delete my-vm
multipass purge # 모든 삭제된 VM 제거
VM 액세스
# VM 내에서 쉘 열기
multipass shell my-vm
# VM 내에서 명령 실행
multipass exec my-vm -- ls -la
# 파일을 VM으로/VM에서 복사
multipass transfer file.txt my-vm:/home/ubuntu/
multipass transfer my-vm:/home/ubuntu/file.txt ./
Multipass VM 내부에 들어가면 전체 Ubuntu 쉘 환경에 접근할 수 있습니다. 효율적인 명령줄 작업을 위해 필수 명령어와 단축키에 대한 정보는 Bash Cheat Sheet을 참조하세요.
Multipass 간편 가이드
VM 관리 명령어
# 생성 및 실행
multipass launch # 기본 VM 생성
multipass launch --name vm1 # 이름 지정 VM 생성
multipass launch 20.04 --name old # 특정 Ubuntu 버전 사용
# 리소스 할당
multipass launch --cpus 2 --memory 4G --disk 20G --name dev
# VM 제어
multipass start vm1 # VM 시작
multipass stop vm1 # VM 중지
multipass restart vm1 # VM 재시작
multipass suspend vm1 # VM 일시 중지
# 정보 확인
multipass list # 모든 VM 목록 보기
multipass info vm1 # VM 세부 정보
multipass get local.privileged-mounts # 마운트 설정 확인
파일 작업
# 파일 전송
multipass transfer file.txt vm1:/home/ubuntu/
multipass transfer vm1:/home/ubuntu/file.txt ./
multipass transfer --recursive ./folder vm1:/home/ubuntu/
# 호스트 디렉토리 마운트
multipass mount /host/path vm1:/vm/path
multipass umount vm1:/vm/path
네트워크 설정
# 네트워크 정보 확인
multipass info vm1 | grep IPv4
# 포트 전달 (Windows/macOS)
multipass set local.port-forwarding=true
multipass restart vm1
스냅샷 및 백업
# 스냅샷 생성
multipass snapshot vm1 snapshot1
# 스냅샷 복구
multipass restore vm1 snapshot1
# 스냅샷 목록 보기
multipass list --all
고급 설정
cloud-init 통합
cloud-config.yaml
파일을 생성합니다:
#cloud-config
package_update: true
package_upgrade: true
packages:
- docker.io
- git
- curl
users:
- name: developer
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC...
runcmd:
- systemctl enable docker
- systemctl start docker
cloud-init과 함께 VM 생성:
multipass launch --cloud-init cloud-config.yaml --name configured-vm
커스텀 이미지
# 사용 가능한 이미지 목록 보기
multipass find
# 특정 이미지 사용
multipass launch daily:22.04 --name daily-vm
개발 도구와의 통합
Docker 통합 Multipass는 Docker와 잘 호환되어 컨테이너 기반 개발에 사용할 수 있습니다. Docker를 Multipass VM 내부에서 실행하거나, Docker 개발을 위한 고립된 환경을 생성하는 데 사용할 수 있습니다.
개발 환경 Python 개발을 위해 Python 가상 환경과 유사한 고립된 환경을 설정할 수 있습니다. VS Code 사용자는 Multipass VM을 원격 개발 환경으로 사용할 수 있으며, VS Code Dev Containers와 함께 전체 OS 고립이 필요한 시나리오에 사용할 수 있습니다.
자체 호스팅 애플리케이션 Multipass는 Gitea나 Ollama와 같은 자체 호스팅 애플리케이션을 고립된 환경에서 테스트하는 데 이상적입니다. 컨테이너 오케스트레이션을 위해 Multipass VM 내부에 Kubernetes 클러스터를 실행할 수 있으며, Kubernetes Cheat Sheet을 사용하여 컨테이너 워크로드를 관리할 수 있습니다.
문제 해결
일반적인 문제
# Multipass 상태 확인
multipass get local.driver
# Multipass 재설정
multipass purge
sudo snap restart multipass
# VM 로그 확인
multipass logs vm1
성능 최적화
# 더 나은 성능을 위해 특권 마운트 활성화
multipass set local.privileged-mounts=true
# 메모리 제한 설정
multipass set local.memory=8G
대안과의 비교
Multipass vs Docker
- Multipass: 전체 VM, OS 수준 테스트에 더 적합, 자원 사용량이 더 많음
- Docker: 컨테이너, 더 효율적, 애플리케이션 배포에 더 적합
Multipass vs VirtualBox/VMware
- Multipass: 명령줄 중심, cloud-init 지원, 자동화가 더 쉬움
- VirtualBox/VMware: GUI 기반, 더 많은 설정 옵션, 데스크탑 사용에 더 적합
Multipass vs Proxmox
- Multipass: 가볍고, 단일 VM에 초점, 개발 환경에 적합
- Proxmox: 전체 가상화 스택, 생산 환경에 더 적합, 클러스터링 및 고가용성과 같은 고급 기능 제공
Multipass vs Vagrant
- Multipass: Ubuntu 중심, 간단한 설정, 단일 VM 시나리오에 더 적합
- Vagrant: 다중 제공자 지원, 복잡한 프로비저닝, 다중 VM 설정에 더 적합
최선의 실천 방법
- 리소스 관리: 작업 부하에 따라 적절한 CPU 및 메모리 할당
- 스냅샷 전략: 주요 변경 전 스냅샷 생성
- 네트워크 보안: 노출된 서비스에 적절한 방화벽 규칙 사용
- 백업 전략: 중요한 VM 데이터를 정기적으로 백업
- 정리: 사용하지 않는 VM 제거하여 디스크 공간 확보
Multipass 사용 시기
Multipass를 선택할 때:
- 개발에 전체 Ubuntu VM이 필요할 때
- 간단한 명령줄 VM 관리가 필요할 때
- 다양한 운영체제에서 작업할 때
- cloud-init 구성 지원이 필요할 때
- 고립된 환경에서 자체 호스팅 애플리케이션 테스트가 필요할 때
대안을 고려할 때:
- 최대 성능이 필요할 때 (Docker 컨테이너 사용)
- 복잡한 다중 VM 설정이 필요할 때 (Vagrant 사용)
- GUI 기반 관리가 필요할 때 (VirtualBox/VMware 사용)
Multipass는 플랫폼을 관계없이 간단하고 일관된 Ubuntu 개발 환경을 제공하여, 전통적인 가상화 도구의 복잡성을 피하면서도 신뢰할 수 있는 VM 관리가 필요한 개발자에게 이상적인 선택입니다.