os

Management Ubuntu VMs on Multipass

C/H 2020. 8. 24. 08:30

Multipass

Multipass는 Linux 인스턴스를 시작, 관리 및 조작 할 수있는 명령 줄 인터페이스를 제공합니다.
기존 이미지를 다운로드하는 데 몇 초 밖에 걸리지 않으며 몇 분 안에 VM을 가동하고 실행할 수 있습니다.

Install

iOS brew

brew cask install multipass

Linux

lsb_release -d
sudo snap install multipass --classic --beta

VM

인스턴스 시작 (기본으로 현재 Ubuntu LTS를 얻음)

multipass launch --name ubuntu-lts

해당 인스턴스에서 명령을 실행하고 bash를 실행한다. (종료하려면 로그 아웃 또는 ctrl-d)

multipass exec ubuntu-lts -- lsb_release -a

인스턴스 목록

multipass list
multipass ls

빠른 인스턴스 시작 및 셀 로그인

$ multipass launch
One quick question before we launch … Would you like to help
the Multipass developers, by sending anonymous usage data?
This includes your operating system, which images you use,
the number of instances, their properties and how long you use them.
We’d also like to measure Multipass’s speed.

Send usage data (yes/no/Later)? y
Thank you!
Launched: vaulting-peafowl

$ multipass shell vaulting-peafowl

인스턴스 시작 및 종료, 정리

multipass start ubuntu-lts
multipass stop ubuntu-lts ubuntu-lts-custom

multipass delete ubuntu-lts-custom
multipass purge

Launch help

By passing a filename to --cloud-init, you can provide “user data” to cloud-init to customize the instance on first boot. See their documentation for examples.
--cloud-init에 파일 이름을 전달하면 "사용자 데이터"를 cloud-init에 제공하여 처음 부팅 할 때 인스턴스를 사용자 지정할 수 있습니다. 예제는 설명서를 참조하십시오.

$ multipass help launch
Usage: multipass launch [options] [[<remote:>]<image> | <url>]
Create and start a new instance.

Options:
  -h, --help           Display this help
  -v, --verbose        Increase logging verbosity. Repeat the 'v' in the short
                       option for more detail. Maximum verbosity is obtained
                       with 4 (or more) v's, i.e. -vvvv.
                       로깅 상세도를 높입니다. 
                       자세한 내용을 보려면 짧은 옵션에서 'v'를 반복하십시오. 
                       최대 상세도는 4 (또는 그 이상) v, 즉 -vvvv로 얻을 수 있습니다.
  -c, --cpus <cpus>    Number of CPUs to allocate.
                       Minimum: 1, default: 1.
                       할당 할 CPU 수.
                       최소 : 1, 기본값 : 1.
  -d, --disk <disk>    Disk space to allocate. Positive integers, in bytes, or
                       with K, M, G suffix.
                       Minimum: 512M, default: 5G.
                       할당 할 디스크 공간.
                       양의 정수 (바이트) 또는 K, M, G 접미사로.
                       최소 : 512M, 기본값 : 5G.
  -m, --mem <mem>      Amount of memory to allocate. Positive integers, in
                       bytes, or with K, M, G suffix.
                       Minimum: 128M, default: 1G.
                       할당 할 메모리 양. 양의 정수, 바이트 또는 K, M, G 접미사.
                       최소 : 128M, 기본값 : 1G.
  -n, --name <name>    Name for the instance. If it is 'primary' (the
                       configured primary instance name), the user's home
                       directory is mounted inside the newly launched instance,
                       in 'Home'.
                       인스턴스의 이름입니다. 
                       'primary'(구성된 기본 인스턴스 이름) 인 경우 사용자의 홈 디렉토리는 
                       'Home'의 새로 시작된 인스턴스 내에 마운트됩니다.
                       * primary 는 호스트 컴퓨터의 사용자 Path 가 생성된 인스턴스의 /home/ubuntu/Home 에 마운트 된다.
  --cloud-init <file>  Path to a user-data cloud-init configuration, or '-' for
                       stdin
                       사용자 데이터 cloud-init 구성에 대한 경로 또는 stdin의 경우 '-'

Arguments:
  image                Optional image to launch. If omitted, then the default
                       Ubuntu LTS will be used.
                       <remote> can be either ‘release’ or ‘daily‘. If <remote>
                       is omitted, ‘release’ will be used.
                       <image> can be a partial image hash or an Ubuntu release
                       version, codename or alias.
                       <url> is a custom image URL that is in http://, https://,
                       or file:// format.
                       실행할 선택적 이미지입니다. 
                       생략하면 기본 Ubuntu LTS가 사용됩니다.
                       <remote>는‘release’또는‘daily‘일 수 있습니다. 
                       <remote>를 생략하면 'release'가 사용됩니다.
                       <image>는 부분 이미지 해시 또는 Ubuntu 릴리스 버전, 코드 이름 또는 별칭 일 수 있습니다.
                       <url>은 http : //, https : // 또는 file : // 형식의 사용자 지정 이미지 URL입니다.

사용자 정의 인스턴스 시작

multipass launch -c 2 -m 2048G -d 10G -n product

인스턴스 정보

$ multipass info primary
Name:           primary
State:          Running
IPv4:           192.168.64.3
Release:        Ubuntu 20.04.1 LTS
Image hash:     896d13fcadd1 (Ubuntu 20.04 LTS)
Load:           0.00 0.00 0.00
Disk usage:     1.2G out of 4.7G
Memory usage:   138.0M out of 981.4M
Mounts:         /Users/username => Home   # MacOS
                    UID map: 501:default
                    GID map: 20:default

인스턴스 사용자 데이터 마운트

$ multipass mount $HOME instance_name
$ multipass info instance_name
...
Mounts:         /home/username => /home/ubuntu

$ multipass mount $HOME instance_name:/some/path
$ multipass info instance_name
...
Mounts:         /home/username => /some/path

$ multipass mount /home/username/some/path instance_name:/some/path
$ multipass info instance_name
...
Mounts:         /home/username/some/path => /some/path

인스턴스 명령어 실행

multipass exec primary mkdir test test2
multipass exec primary -- ls -l

파일 복사

$ multipass transfer -h
Usage: multipass transfer [options] <source> [<source> ...] <destination>
Copy files between the host and instances.

Options:
  -h, --help     Display this help
  -v, --verbose  Increase logging verbosity. Repeat the 'v' in the short option
                 for more detail. Maximum verbosity is obtained with 4 (or more)
                 v's, i.e. -vvvv.

Arguments:
  source         One or more paths to transfer, prefixed with <name:> for paths
                 inside the instance, or '-' for stdin
                 전송할 하나 이상의 경로, 인스턴스 내부 경로의 경우 <name :> 접두사, stdin의 경우 '-'
  destination    The destination path, prefixed with <name:> for a path inside
                 the instance, or '-' for stdout
                 인스턴스 내부 경로의 경우 <name :> 접두사가 붙은 대상 경로, stdout의 경우 '-'

인스턴스 파일을 호스트로 복사

multipass transfer primary:/home/ubuntu/.profile ./.profile.back
multipass transfer primary:.profile ./.profile.back

호스트 파일을 인스턴스로 복사

multipass transfer README.md primary:test2/README.md

-소스, 대상 모드 인스턴스 지정 불가능-

$ multipass transfer primary:test2/README.md primary:test/README.md
Cannot specify an instance name for both source and destination
소스와 대상 모두에 인스턴스 이름을 지정할 수 없습니다.
반응형

'os' 카테고리의 다른 글

FZF: Command-line Fuzzy Find  (0) 2021.02.24
FTP, SFTP Mount  (0) 2019.03.22
dmg파일 어디에 쓰는물건인고?  (0) 2010.12.13