Rocky/AlmaLinux 8|9에 LXD 설치 및 사용
LXD는 매우 강력한 REST를 기반으로 구축된 차세대 시스템 컨테이너 관리자이며, Linux 컨테이너를 사용하면서도 가상 머신과 유사한 사용자 경험을 제공합니다. LXD는 다양한 Linux 배포판에서 사용할 수 있는 미리 만들어진 Linux 이미지를 사용합니다.
이 가이드에서는 Rocky/AlmaLinux 서버나 데스크탑에서 LXD를 설치하고 사용하는 간단한 단계를 보여드리겠습니다. 설치 과정에서는 Snap을 사용할 것이며, 이는 'Rocky/AlmaLinux에서 Snapd 및 Snap 애플리케이션 설치' 가이드에서 다룬 바 있습니다.
LXD의 특징
공식 LXD 웹사이트에서 LXD의 가장 큰 특징으로 언급된 것은 다음과 같습니다:
- 설계 단계에서 보안 확보(권한 없는 컨테이너, 자원 제한 등 다양한 요소 포함)
- 확장 가능 (수천, 수만 개의 컴퓨트 노드에서 컨테이너 사용 가능)
- 직관적 (간단하고 명확한 API와 깔끔한 명령어 경험)
- 이미지 기반(매일 다양한 리눅스 배포판 발행)
- 크로스 호스트 컨테이너 및 이미지 전송 지원(CRIU를 통한 라이브 마이그레이션 포함)
- 고급 리소스 제어(CPU, 메모리, 네트워크 I/O, 블록 I/O, 디스크 사용량 및 커널 리소스)
- 장치 전달(USB, GPU, Unix 문자 및 블록 장치, NIC, 디스크 및 경로)
- 네트워크 관리(브리지 생성 및 설정, 호스트 간 터널 등)
- 스토리지 관리(다중 스토리지 백엔드, 스토리지 풀, 스토리지 볼륨 지원)
Rocky/AlmaLinux에서 LXD 컨테이너 실행하기
이제 아래 단계를 따라 Rocky/AlmaLinux에 LXD 설치를 시작해 보겠습니다
1단계: snapd 설치
LXD 패키지를 설치하는 데 사용되는 snap 명령줄 도구를 제공하는 snapd를 설치해야 합니다. 다음 가이드를 따라 snapd를 설치하세요:
- Rocky/AlmaLinux에 Snapd 및 Snap 애플리케이션 설치하기
snapd를 설치했으면, 2단계로 이동하세요
2단계: 커널 매개변수 구성
LXD를 사용하려면 일부 커널 옵션이 시스템에서 활성화되어 있어야 합니다. 터미널에서 다음 명령어를 실행하여 설정하세요. 이 명령어는 루트 사용자로 실행해야 합니다.
grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
grubby --args="namespace.unpriv_enable=1" --update-kernel="$(grubby --default-kernel)"
echo "user.max_user_namespaces=3883" > /etc/sysctl.d/99-userns.conf변경을 적용한 후에는 시스템을 재부팅해야 합니다.
sudo reboot3단계: Rocky/AlmaLinux에 lxd 스냅 설치
마지막으로, 스냅 스토어에서 LXD 스냅을 설치하세요
$ sudo snap install lxd
lxd (5.21/stable) 5.21.1-d46c406 from Canonical✓ installed인터넷 연결이 원활하다면 설치는 짧은 시간 안에 완료될 것입니다. 다음을 사용하여 패키지 설치를 확인할 수 있습니다:
$ sudo snap list
Name Version Rev Tracking Publisher Notes
core20 20240416 2318 latest/stable canonical✓ base
core22 20240408 1380 latest/stable canonical✓ base
lxd 5.21.1-d46c406 28460 5.21/stable canonical✓ -
powershell 7.4.3 269 latest/stable microsoft-powershell✓ classic
snapd 2.63 21759 latest/stable canonical✓ snapd
$ sudo snap services
Service Startup Current Notes
lxd.activate enabled inactive -
lxd.daemon enabled inactive socket-activated
lxd.user-daemon enabled inactive socket-activated4단계: 테스트 LXD 컨테이너 실행
확실히 하다
echo 'export PATH="$PATH:/snap/bin/"'|tee -a ~/.bashrc
source ~/.bashrc권한 오류 없이 LXD 컨테이너를 관리할 수 있도록 사용자 계정을 그룹lxd에 추가합시다.
sudo usermod -aG lxd $USER
newgrp lxd커널 모듈을 로드합니다.
sudo modprobe overlay
sudo modprobe br_netfilter부팅 시 모듈이 로드되도록 구성되었는지 확인하세요:
echo -e "noverlay\nbr_netfilter" | sudo tee /etc/modules-load.d/lxd.confLXD 서비스를 재시작하세요.
sudo systemctl restart snap.lxd.daemon
LXD 환경 구성하기
$ lxd init
Would you like to use LXD clustering? (yes/no) [default=no]: no
Do you want to configure a new storage pool? (yes/no) [default=yes]: no
Name of the new storage pool [default=default]:
Name of the storage backend to use (btrfs, ceph, dir, lvm) [default=btrfs]: dir
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]:
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:컨테이너 목록을 반환하면 빈 목록이어야 합니다
$ lxc list
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+사용 가능한 VM 이미지를 나열하려면 다음을 실행하세요:
lxc image list images:사용 가능한 이미지 이름 예시:
- 페도라/40
- 칼리
- 록키리눅스/9
- 록키리눅스/8
- 오라클/9
- 알마리눅스/8
- 알마리눅스/9
# Rocky linux 8|9
lxc image list images:centos/9-Stream
debian/12다음을 실행하여 테스트용 Rocky Linux 8 컨테이너를 생성하세요:
# lxc launch images:rockylinux/8 rocky-8-container
Creating rocky-8-container
Starting rocky-8-container다음을 실행하여 Ubuntu 컨테이너를 시작하세요:
# lxc launch images:ubuntu/22.04 ubuntu-container
Creating ubuntu-container
Starting ubuntu-container컨테이너 목록:
# lxc list
+-------------------+---------+-----------------------+-----------------------------------------------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+-------------------+---------+-----------------------+-----------------------------------------------+-----------+-----------+
| rocky-8-container | RUNNING | 10.249.233.129 (eth0) | fd42:380b:91a6:efc0:216:3eff:fece:1ee3 (eth0) | CONTAINER | 0 |
+-------------------+---------+-----------------------+-----------------------------------------------+-----------+-----------+
| ubuntu22 | RUNNING | 10.249.233.40 (eth0) | fd42:380b:91a6:efc0:216:3eff:feb1:7d6f (eth0) | CONTAINER | 0 |
+-------------------+---------+-----------------------+-----------------------------------------------+-----------+-----------+
| ubuntu-container | RUNNING | 10.249.233.189 (eth0) | fd42:380b:91a6:efc0:216:3eff:fe6f:7d3e (eth0) | CONTAINER | 0 |
+-------------------+---------+-----------------------+-----------------------------------------------+-----------+-----------+컨테이너를 중지, 시작, 재시작, 삭제, 정보 확인
lxc start container
lxc stop container
lxc restart containerinfo 명령 옵션을 사용하여 컨테이너에 대한 정보를 얻습니다
lxc info container샘플 출력:
더 많은 명령줄 옵션을 보려면 실행하세요
lxc --help
lxc command --help e.g lxc start --help읽을 만한 추천 리눅스 책:
- 초보자와 전문가를 위한 최고의 리눅스 책
- 최고의 리눅스 커널 프로그래밍 책
- 최고의 리눅스 배시 스크립팅 책
Snap을 통해 Rock/AlmaLinux에 LXD를 성공적으로 설치하고 lxc 컨테이너를 생성했습니다. 가이드를 이용해 주셔서 감사합니다. 문제가 있으시면 주저하지 말고 댓글을 남겨 주세요.
