웹사이트 검색

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 reboot

3단계: 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-activated

4단계: 테스트 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.conf

LXD 서비스를 재시작하세요.

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 container

info 명령 옵션을 사용하여 컨테이너에 대한 정보를 얻습니다

lxc info container

샘플 출력:

더 많은 명령줄 옵션을 보려면 실행하세요

lxc --help
lxc command --help e.g lxc start --help

읽을 만한 추천 리눅스 책:

  • 초보자와 전문가를 위한 최고의 리눅스 책
  • 최고의 리눅스 커널 프로그래밍 책
  • 최고의 리눅스 배시 스크립팅 책

Snap을 통해 Rock/AlmaLinux에 LXD를 성공적으로 설치하고 lxc 컨테이너를 생성했습니다. 가이드를 이용해 주셔서 감사합니다. 문제가 있으시면 주저하지 말고 댓글을 남겨 주세요.