ウェブサイト検索

RHEL、Rocky、AlmaLinux に LXC (Linux コンテナ) をインストールする


LXD は、コンテナ内または仮想マシンとして実行される Linux システムに没入感を提供する、次世代のコンテナおよび仮想マシン マネージャーであると説明されています。

幅広いストレージ バックエンドとネットワーク タイプをサポートする、膨大な数の Linux ディストリビューションのイメージを提供します。また、イメージを個々の PC/ラップトップ、さらにはクラウド インスタンスにインストールするオプションも提供します。

LXD では、3 つの方法を使用してコンテナと VM を管理できます。 lxc クライアントやコマンドライン ツール、REST API、さらにはサードパーティの統合も活用できます。

LXDの特徴

注目すべき LXD の機能は次のとおりです。

  • LXD はイメージベースであり、さまざまな Linux ディストリビューションに対応したイメージが含まれています。
  • セキュリティを最優先にして構築されています。
  • コンテナと対話するための REST API と lxc コマンドライン ツールを提供します。
  • 幅広いストレージ バックエンド、ストレージ ボリューム、ストレージ プールのサポートを提供します。
  • ネットワーク管理は、ブリッジ ネットワークとクロスホスト トンネルの作成を通じて行われます。
  • CPU、RAM、ディスク使用量、ブロック I/O、カーネル リソースなどのリソースの高度な制御。
  • 柔軟性と拡張性 – PC にコンテナを展開し、さまざまなノード上で数千のコンテナを集約できるクラスターを構成できます。

LXCとは何ですか?

LXD が提供する lxc コマンドライン クライアント ツールと混同しないでください。LXC (Linux コンテナ) は強力な API やその他のツールを使用して、ユーザーが単一ホスト内でコンテナと仮想マシンをシームレスに作成および管理できるようにする、一般的な OS レベルの仮想化テクノロジです。これは、テンプレート、ツール言語、ライブラリ バインディングで構成されます。

LXCの特徴

LXC は、次のカーネル機能を利用してプロセスを処理します。

  • カーネル名前空間: pid、mount、uts network、および user。
  • CGroups (コントロール グループ)。
  • Chroots – pivot_root を使用します。
  • セコンプポリシー。
  • SELinux および Apparmor プロファイル。

Linuxcontainers.org は、LXDLXC の両方を支える包括的なプロジェクトです。その目的は、Linux コンテナ テクノロジ向けのディストリビューションおよびベンダー中立のプラットフォームを提供することです。

前置きはこれくらいにして、CentOSRocky Linux< などの RHEL ベースの Linux ディストリビューションで LXC コンテナを作成および管理する方法を説明します。AlmaLinux

要件

最小限のインストールで動作する Linux オペレーティング システム:

  • RHEL Linuxのインストール
  • CentOS Linuxのインストール
  • Rocky Linuxのインストール
  • AlmaLinuxのインストール

ステップ 1: SELinux を許可モードに設定する

まず、SELinux を構成し、許可に設定することから始めます。ただし、その前に、次のようにシステム パッケージを更新しましょう。

sudo dnf update

SELinux を許可に設定するには、次のコマンドを実行します。

sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

これを有効にするには、サーバーを再起動します。

sudo reboot

そしてSELinuxの状態を確認します。

getenforce

ステップ 2: EPEL リポジトリをインストールする

EPELFedora プロジェクト のリポジトリであり、RedHat Enterprise Linux およびその他の RHEL ベースのディストリビューション用の高品質パッケージのセットを提供します。

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
OR
sudo yum install epel-release

ステップ 3: カーネルパラメータを追加する

LXD をインストールする前に、いくつかの追加パラメータが必要です。したがって、root ユーザーに切り替えます。

su -

そして以下のようにパラメータを追加します。

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" | sudo tee -a /etc/sysctl.d/99-userns.conf

パラメータを設定したら、次に進み、スナップを有効にします。

ステップ 4: スナップをインストールして有効にする

RHEL 8LXD をインストールする最も簡単な方法は、スナップ パッケージとしてインストールすることです。まずは、 次のようにスナップをインストールしましょう。

sudo dnf install snapd

これにより、示されているように、他の Python 依存関係とともにsnapd デーモンまたはサービスがインストールされます。

スナップをインストールしたら、 続行してメインのスナップ通信ソケットを有効にします。

sudo systemctl enable --now snapd.socket

さらに、/var/lib/snapd/snap から /snap へのシンボリックリンクを作成して、クラシック サポートを有効にします。

sudo ln -s /var/lib/snapd/snap  /snap

スナップ パスを更新するには、システムを再起動します。

sudo reboot

ステップ 5: LXD Containerization Manager をインストールする

スナップからLXDをインストールするには 2 つの方法があります。図に示すように、LXD の最新バージョンをインストールできます。

sudo snap install —-classic lxd

あるいは、次のように最新の安定したLTS バージョンをインストールすることもできます。

sudo snap install lxd --channel=4.0/stable

sudo ユーザーに切り替えずに lxc コマンドを実行できるようにするには、現在ログインしているユーザーを lxd グループに追加します。

sudo usermod -aG lxd $USER

ユーザーが属しているすべてのグループをリストして、ユーザーが lxd グループに追加されていることを確認します。

groups tecmint

次に、次のように newgrp コマンドを実行します。

newgrp lxd

このコマンドは、ログイン セッション中に現在のグループ ID を変更します。現在のグループ ID を、lxd という名前付きグループに設定します。

ステップ 6: LXD 環境の初期化

LXD コンテナの作成と管理を開始する前に、コマンドを実行して LXD 環境を初期化する必要があります。

lxc init

次に、環境をセットアップするための一連のプロンプトを示します。デフォルトでも問題なく動作しますが、独自の設定を自由に指定してください。

バックエンドとして lvm オプションを使用して、tec-pool というストレージ プールを作成しました。

構成したばかりのLXD 環境を確認するには、使用できるコマンドが多数あります。たとえば、デフォルトの LXD プロファイルを表示するには、次のコマンドを実行します。

lxc profile show default

ネットワーク アダプターとIPv4 アドレスと IPv6 アドレスを表示するには、次のコマンドを実行します。

lxc network list

次のようにさらに絞り込んで、lxdbr0 インターフェイスに関する詳細な情報を表示できます。

lxc network show lxdbr0

ストレージ プールを確認することもできます。

lxc storage list

ストレージ プールに関する複雑な詳細をさらに取得できます。

lxc storage show tec-pool

実行中の lxc コンテナを一覧表示するには、次のコマンドを実行します。

lxc list

現時点では、実行中のコンテナはまだありません。したがって、列ラベルのみを含む空のテーブルが得られます。

ステップ 7: 事前構築済み LXC コンテナー イメージの一覧表示

Docker と同様に、LXC プラットフォームは、コンテナを作成できる事前構築済みイメージのリポジトリを提供します。仮想マシンを含むすべてのオペレーティング システムのすべての事前構築済みイメージを一覧表示するには、次のコマンドを実行します。

lxc image list images: 

これにより、すべてのオペレーティング システムのコンテナー イメージと仮想マシンの膨大なリストが作成されます。特定の Linux ディストリビューションに絞り込むには、次の構文を使用します。

lxc image list images: grep -i os-type

たとえば、Rocky Linux で利用可能なイメージを検索するには、次のコマンドを実行します。

lxc image list images: grep -i rocky

Debian イメージを検索する場合は、次のコマンドを実行します。

lxc image list images: grep -i debian

ステップ 8: LXC コンテナの起動

lxc コンテナを起動するには、次の構文を使用します。

lxc launch images:{distro}/{version}/{arch} {container-name-here}

ここでは、Debian 10tec-container1Rocky Linux 8tec-container2 の 2 つのコンテナを起動します。 。

lxc launch images:debian/10/amd64 tec-container1
lxc launch images:rockylinux/8/amd64 tec-container2 

lxc コンテナを一覧表示するには、次のコマンドを実行します。

lxc list

出力には、コンテナーに関する多くの情報が表示されます。これには、コンテナの名前、状態(実行中か停止か)、IPv4 および IPv6 アドレス、タイプ(コンテナか仮想マシンか)、およびスナップショットの数が含まれます。

実行中のコンテナのみを一覧表示するには、次のコマンドを実行します。

lxc list | grep -i running

同様に、停止したコンテナの場合は、次を実行します。

lxc list | grep -i stopped

次のコマンドを使用して、実行中のプロセス、CPU とメモリの使用率、帯域幅などのコンテナの情報とメトリクスを調査できます。

lxc info tec-container1 

ステップ 9: LXC コンテナへのシェル アクセスを取得する

次の構文を使用してコンテナに bash アクセスできます。

lxc exec container-name  name-of-the-shell

tec-container1 へのシェル アクセスを取得するには、次のコマンドを実行します。

lxc exec tec-container1 bash

シェル アクセスを取得したら、次に示すようにシステムの更新を含む一般的なシェル コマンドを実行することで、root ユーザーとしてコンテナーとの対話を開始できます。

apt update

コンテナーを終了するには、次のコマンドを実行します。

exit

あるいは、次の形式を使用して、シェルにアクセスせずにコンテナ上でコマンドを直接実行することもできます。

lxc exec container-name command

たとえば、次のコマンドを実行すると、パッケージ リストが更新され、Debian コンテナ上で実行されている OS のバージョンが確認され、日付が確認されます。

lxc exec tec-container1 apt update
lxc exec tec-container1 cat /etc/debian_version
lxc exec tec-container1 date

ステップ 10: ファイルを LXC コンテナにプル/プッシュする

実行できるもう 1 つの操作は、コンテナーとの間でファイルを転送することです。これを実証するために、LXD コンテナに新しいディレクトリを作成し、そこに移動します。

mkdir data && cd data

次に、サンプル ファイルを作成し、データを追加します。これを行うには、vim エディタでサンプル ファイルを作成します。

vim file1.txt

次に、サンプル テキストを入力してファイルを保存します。

Hello World, Welcome to LXD containers.

コンテナからローカル ホスト システムにファイルをプルするには、次の構文を使用します。

lxc file pull {container-name}/{path/to/file} {/path/to/local/dest}

この場合、コマンドは次のようになります。

lxc file pull tec-container2/root/data/file1.txt /home/tecmint

ファイルをローカル ディレクトリからコンテナにプッシュまたはコピーするには、次の構文を使用します。

lxc file push {/path/to/file} {container-nane} /path/to/dest/dir/

この場合、ホーム ディレクトリに file2.txt というサンプル ファイルがあり、tec-container2< の /root/data/ パスにコピーされています。コンテナ。

lxc file push /home/tecmint/file2.txt tec-container2/root/data/

コンテナ内にファイルが存在することを確認するには、次のコマンドを実行します。

lxc exec tec-container2 ls /root/data

ステップ 11: LXC コンテナの停止/開始/再起動と削除

lxc コマンドライン ユーティリティを使用すると、コンテナの停止、起動、再起動、削除などのコンテナ管理タスクを実行できます。

lxc コンテナを停止するには、次の構文を使用します。

lxc stop container-name

たとえば、tec-container1 を停止するには、次のコマンドを実行します。

lxc stop tec-container1

lxc コンテナを開始するには、次の構文を使用します。

lxc start container-name

たとえば、tec-container1 を起動するには、次のコマンドを実行します。

lxc start tec-container1

両方の lxc コンテナを再起動するには、次のコマンドを実行します。

lxc restart tec-container1
lxc restart tec-container2

lxc コンテナを削除するには、まずコンテナを停止してから削除する必要があります。たとえば、削除するには、次のコマンドを実行します。

lxc stop tec-container1
lxc delete tec-container1

あるいは、次のようにこれら 2 つのコマンドを組み合わせることもできます。

lxc stop tec-container1 && lxc delete tec-container1

ステップ 12: LXC コマンドライン オプションに関するヘルプを表示する

LXC が提供する他のコマンド オプションに関するヘルプを表示するには、次のコマンドを実行します。

lxc --help
OR
lxc command --help e.g
lxc file --help

結論

以上、LXD コンテナと、lxc コマンドライン ユーティリティ ツールを使用してコンテナを作成および管理する方法について詳しく説明しました。このガイドが役に立ったと信じています。