LXD は、コンテナ内または仮想マシンとして実行されるLinuxシステムに没入型を提供する次世代のコンテナおよび仮想マシンマネージャーとして説明されています。
さまざまなストレージバックエンドとネットワークタイプをサポートする、膨大な数のLinuxディストリビューションのイメージを提供します。また、個々のPC /ラップトップ、さらにはクラウドインスタンスにイメージをインストールするオプションも提供します。
LXD 3つの方法を使用してコンテナとVMを管理できます。 lxcクライアントを活用できます またはコマンドラインツール、REST API、さらにはサードパーティの統合。
LXDの機能
注目すべきLXD 機能は次のとおりです。
- LXDはイメージベースであり、さまざまなLinuxディストリビューション用のイメージを備えています。
- セキュリティを最優先に構築されています。
- コンテナとやり取りするためのRESTAPIとlxcコマンドラインツールを提供します。
- さまざまなストレージバックエンド、ストレージボリューム、およびストレージプールをサポートします。
- ネットワーク管理は、ブリッジネットワークとクロスホストトンネルの作成を通じて行われます。
- CPU、RAM、ディスク使用量、ブロックI / O、カーネルリソースなどのリソースの高度な制御。
- 柔軟でスケーラブル– PCにコンテナーをデプロイし、さまざまなノードで数千のコンテナーを集約できるクラスターを構成できます。
LXCとは何ですか?
lxcと混同しないでください LXDが提供するコマンドラインクライアントツール 、 LXC (Linuxコンテナ )は、強力なAPIやその他のツールを使用して、ユーザーが単一のホストでコンテナーと仮想マシンをシームレスに作成および管理できるようにする、人気のあるOSレベルの仮想化テクノロジーです。テンプレート、ツール言語、ライブラリバインディングで構成されています。
LXCの機能
LXC 次のカーネル機能を活用してプロセスを処理します。
- カーネルの名前空間:pid、mount、uts network、およびuser。
- CGroups(コントロールグループ)。
- Chroots –pivot_rootを使用します。
- Seccompポリシー。
- SELinuxおよびApparmorプロファイル。
Linuxcontainers.orgは、両方の LXDの背後にある包括的なプロジェクトです。 およびLXC 。その目的は、Linuxコンテナテクノロジー向けのディストリビューションおよびベンダーに依存しないプラットフォームを提供することです。
その紹介が邪魔にならないように、 LXCを作成および管理する方法を示します。 CentOSなどのRHELベースのLinuxディストリビューション上のコンテナ 、 Rocky Linux、 およびAlmaLinux 。
要件
最小限のインストールで動作するLinuxオペレーティングシステム:
- RHELLinuxのインストール
- CentOSLinuxのインストール
- RockyLinuxのインストール
- AlmaLinuxのインストール
ステップ1:SELinuxをPermissiveモードに設定する
すぐに、 SELinuxを構成することから始めます。 そしてそれを寛容に設定します。ただし、その前に、システムパッケージを次のように更新しましょう。
$ sudo dnf update
SELinuxを設定するには 許容するには、次のコマンドを実行します:
$ sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
これを有効にするには、サーバーを再起動します。
$ sudo reboot
そして、 SELinuxのステータスを確認します 。
$ getenforce
ステップ2:EPELリポジトリをインストールする
EPEL Fedoraプロジェクトのリポジトリです 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:スナップをインストールして有効にする
LXDをインストールする最も簡単な方法 RHEL 8 スナップとしてインストールすることです パッケージ。ただし、最初に snapをインストールしましょう 次のように。
$ sudo dnf install snapd
これにより、 snapdがインストールされます 示されているように、デーモンまたはサービスと他のPython依存関係。
スナップをインストールしたら、続行してメインのスナップを有効にします 通信ソケット。
$ sudo systemctl enable --now snapd.socket
さらに、 / var / lib / snapd / snap からシンボリックリンクを作成して、クラシックサポートを有効にします /スナップに 。
$ sudo ln -s /var/lib/snapd/snap /snap
スナップを更新するには パス、システムを再起動します。
$ sudo reboot
ステップ5:LXDContainerizationManagerをインストールする
LXDをインストールするには2つの方法があります スナップから 。 LXDの最新バージョンをインストールできます 示されているように。
$ sudo snap install —-classic lxd
または、最新の安定した LTSをインストールすることもできます 次のバージョン:
$ sudo snap install lxd --channel=4.0/stable
lxcを実行できるようにするため sudoユーザーに切り替えずにコマンドを実行するには、現在ログインしているユーザーを lxdに追加します。 グループ。
$ sudo usermod -aG lxd $USER
ユーザーがlxdに追加されていることを確認します ユーザーが属するすべてのグループを一覧表示してグループ化します。
$ groups tecmint
次に、 newgrpを実行します 次のようにコマンドを実行します。
$ newgrp lxd
このコマンドは、ログインセッション中に現在のグループIDを変更します。現在のグループIDをlxdである名前付きグループに設定します 。
ステップ6:LXD環境の初期化
LXDの作成と管理を開始する前に コンテナの場合、 LXDを初期化する必要があります コマンドを実行して環境を構築します。
$ lxc init
以下は、環境をセットアップするための一連のプロンプトです。デフォルトは問題なく機能しますが、自由に設定してください。
tec-poolというストレージプールを作成しました lvmを使用 バックエンドとしてのオプション。
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}
ここでは、2つのコンテナを起動します: tec-container1 Debian 10から およびtec-container2 RockyLinux8から 。
$ 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というサンプルファイルがあります。 / root / data /にコピーされます tec-container2のパス コンテナ。
$ 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を使用してコンテナを作成および管理する方法 コマンドラインユーティリティツール。このガイドがお役に立てば幸いです。