LXD 설치 및 사용법
LXD
lxd 는 안전하고 강력한 시스템 컨테이너 및 가상머신 관리자이다.
lxd 를 사용하여 컨테이너를 사용한 완전한 리눅스 시스템 및 가상머신을 동작 및 관리할 수 있다. lxd 는 공식 우분투 이미지 및 커뮤니티에서 제공하는 이미지들을 지원한다.
lxd 를 이용하여 쉽게 컨테이너 및 가상머신을 구성할 수 있다.
만약 효율적으로 가상머신이나 다른 리눅스 환경인 컨테이너를 구성하기 원한다면, lxd 사용을 한번 고려해 볼 수 있다.
LXD 설치
snap 패키지를 사용하여 lxd 쉽게 설치할 수 있다. 기본적으로 우분투 환경에서는 snap 을 사용해서 설치하는게 편하다.
1. snapd 설치 확인하기.
1-1. snap version
을 이용하여 snapd 가 설치되어 있는지 확인할 수 있다.
1-2. 만약 snap 이 설치되어 있지 않다면 다음 명령을 이용하여 최신 버전의 snap을 이용할 수 있다.
sudo apt install snapd
2. snap 을 이용하여 lxd 설치하기.
$ sudo snap install lxd
다음 명령을 사용하여 lxd와 lxc 버전이 출력이 되면 성공적으로 lxd 설치한 것이다.
$ sudo lxc --version
$ sudo lxd --version
3. 현재 사용자가 lxd group 에 속하는지 확인하기.
$ id
lxd 그룹에 속해 있으면 id 명령어 결과에 lxd가 존재하는 것을 확인할 수 있다.
만약 lxd 그룹에 속해 있지 않다면, usermod 명령어를 이용하여 현재 사용자를 lxd 그룹에 추가해주면 된다. 그룹에 추가해주면 sudo 권한 없이 lxc 를 이용할 수 있다.
$ sudo usermod -aG lxd [사용자 명]
예시
$ sudo usermod -aG lxd user1
4. lxd 초기화 하기.
$ lxd init
이 명령을 통해 컨테이너와 가상머신을 만들때 사용하는 default 프로필, storage 그리고 가상 네트워크를 만든다.
현재 생성된 프로필 목록이나 프로필 내용, storage 목록, 네트워크를 확인하기 위해서는 다음 명령어를 이용하면 된다.
프로필 목록 확인
$ lxc profile list
프로필 내용 확인
$ lxc profile show [프로필 이름]
storage 목록 확인
$ lxc storage list
새로 생성된 네트워크 확인
$ ip addr
LXD 사용법
이미지 서버를 통해 이미지를 로드하고 컨테이너나 가상머신을 구동할 수 있다.
다음 명령을 통해 이용할 수 있는 이미지 목록을 확인할 수 있다.
$ lxc images list [이미지 서버]
예시
$ lxc images list ubuntu:
$ lxc images list images:
$ lxc images list ubuntu-minimal:
1. c1 이름의 우분투 컨테이너 만들기.
$ lxc launch ubuntu:24.04 c1
2. vm1 이름의 우분투 가상머신 만들기.
$ lxc launch ubuntu:24.04 vm1 --vm
3. 생성된 컨테이너 및 가상머신 목록 확인하기.
$ lxc list
4. 컨테이너 실행하기.
shell 모드 실행하기
$ lxc exec [컨테이너 명] /bin/bash
컨테이너 또는 가상머신에서 특정 명령어 실행하기
$ lxc exec [컨테이너 명] -- pwd
5. 사용하지 않는 컨테이너 또는 가상머신 삭제하기.
$ lxc stop [컨테이너 또는 가상머신 이름]
$ lxc delete [컨테이너 또는 가상머신 이름]
강제로 삭제하기 또는 중지하기
$ lxc delete [컨테이너 또는 가상머신 이름] --force
$ lxc stop [컨테이너 또는 가상머신 이름] --force
인스턴스 옵션 설정
각 인스터스에 몇 가지 옵션을 추가해줄 수 있다.
cpu 및 메모리 사용량 제한 설정
새로운 컨테이너를 생성할 때 옵션을 추가하거나 기존에 존재하는 컨테이너에 새로운 설정을 추가해줄 수 있다.
1. 새로운 컨테이너를 생성할 때 설정 추가.
$ lxc launch ubuntu:24.04 c2 --config limits.cpu=1 --config limits.memory=192MiB
설정 확인
$ lxc config show c2
2. 기존에 존재하는 컨테이너에 새로운 옵션을 추가.
$ lxc config set c2 limits.memory=256MiB
host 폴더 마운트 즉 공유폴더 설정(host <> container)
host와 컨테이너가 서로 접근할 수 있는 접근폴더를 만들 수 있다. 이 공유 폴더를 통해 파일을 쉽게 옮길 수 있다.
1. 공유 폴더 추가하기
$ lxc config device add [container name] [config name] disk source=/path/to/host-folder path=/path/to/container-path
예시
$ lxc config device add c1 share-folder disk source=/path/to/host-folder path=/path/to/container-path
추가한 설정 확인하기
$ lxc config device show [container name]
2. 공유 폴더 소유자 설정하기.
공유폴더 소유자를 설정하기 전 컨테이너의 uid 범위를 확인한다.
컨테이너 안에서 확인
$ cat /proc/self/uid_map
사용자 uid 확인
$ id
uid_map
파일을 확인하여 root 가 0 이 아닌 1000000에서 시작하는 것을 확인할 수 있다. 즉 host에서 uid 1000000
사용자가 컨테이너에서는 root 사용자가 되는것이다. 그리고 container 내부에서 사용자 uid 를 확인할 수 있다. 즉 host 에서 uid 1000000+사용자uid
가 컨테이너 내에서 사용자 uid 가 된다.
이 점을 활용하여 폴더 소유권을 컨테이너의 사용자가 되도록 host 에서 변경해 줄 수 있다.
host 에서 container 와 공유중인 폴더의 소유권을 변경.
예시 : host uid 1001000 가 컨테이너에서 사용자라고 가정하자.
$ sudo chown 1001000:1001000 share_folder
확인하기.
$ ls -al /path/to/share_folder
$ lxc exec [컨테이너 명] -- ls -al /path/to/share_folder
컨테이너에서 공유폴더를 사용자가 소유하고 있다는 것을 확인할 수 있다.
$ lxc exec [컨테이너 명] -- ls -al /path/to/share_folder
기본 storage 용량 늘리기
lxd 초기화 할 때 설정한 용량이 부족할 때 늘려줄 수 있다. 생성한 컨테이너가 존재할 때 용량 늘리기만 가능하고 용량을 줄이려면 생성한 모든 컨테이너를 삭제해야한다.
1. storage 이름 알아내기
$ lxc storage list
2. 현재 설정된 용량 알아내기
$ lxc storage info [storage name]
3. 용량 늘리기
컨테이너가 존재하면 오직 늘리기만 가능하며, 컨테이너를 모두 삭제해야 용량을 줄일 수 있다.
vim 을 사용하는 것과 유사한 방식으로 용량을 수정해주면 된다.
$ lxc storage edit [storage name]
댓글남기기