LXDとは何ですか?
LXD(「Lex-Dee」と発音)は、現在CanonicalでサポートされているLXC(Linux Containers)上に構築されたシステムコンテナーマネージャーです。 LXDの目標は、仮想マシンと同様のエクスペリエンスを提供することですが、ハードウェア仮想化ではなくコンテナー化を通じて提供します。 LXDは、アプリケーションを提供するためのDockerと比較して、スナップショット、ライブマイグレーション、ストレージ管理などの追加機能を備えたほぼ完全なオペレーティングシステム機能を提供します。
LXDの主な利点は、高密度コンテナーのサポートと、仮想マシンと比較して提供されるパフォーマンスです。 2GBのRAMを搭載したコンピューターは、半ダースのコンテナーを適切にサポートできます。さらに、LXDは主要なLinuxディストリビューションのコンテナーイメージを公式にサポートしています。コンテナで実行するLinuxディストリビューションとバージョンを選択できます。
このガイドでは、LinodeにLXD 3をインストールしてセットアップする方法と、コンテナーにApacheWebサーバーをセットアップする方法について説明します。
注 簡単にするために、コンテナという用語 このガイド全体で、LXDシステムコンテナを説明するために使用されます。
始める前に
-
コンピュートインスタンスの作成ガイドを完了します。 Linode 2GBなど、少なくとも2GBのRAMメモリを搭載したLinodeを選択します。 Ubuntu19.04ディストリビューションを指定します。 snapパッケージ(snapd)がサポートされている限り、別のLinuxディストリビューションを指定できます。;詳細については、詳細情報を参照してください。
-
コンピューティングインスタンスのセットアップと保護ガイドに従って、システムを更新してください。また、タイムゾーンの設定、ホスト名の構成、制限付きユーザーアカウントの作成、SSHアクセスの強化を行うこともできます。
スナップパッケージサポートの構成
LXDは、Ubuntu 18.04 LTSなどのUbuntuのロングタームサポート(LTS)バージョンでDebianパッケージとして利用できます。他のバージョンのUbuntuおよび他のディストリビューションの場合、LXDはスナップパッケージとして利用できます。サポートされているLinuxディストリビューションで動作する単一のパッケージファイルがあるため、スナップパッケージはユニバーサルパッケージです。スナップパッケージとは何か、サポートされているLinuxディストリビューション、およびその設定方法の詳細については、「詳細情報」セクションを参照してください。
-
スナップサポートが正しくインストールされていることを確認します。次のコマンドは、スナップパッケージがインストールされていないか、インストールされていることを示しています。
snap list
No snaps are installed yet. Try 'snap install hello-world'.
-
LXDスナップパッケージの詳細を表示する
lxd
。以下の出力は、現在、LXDの最新バージョンが3.12
であることを示しています。 デフォルトのstable
チャネル。このチャンネルは頻繁に新機能で更新されます。3.0/stable
などの他のチャネルもあります LTS LXDバージョン(Ubuntu 18.04とともに、2023年までサポート)と2.0/stable
を備えたチャネル チャネル(2021年までUbuntu 16.04とともにサポートされます)。デフォルトのstable
の最新バージョンのLXDを使用します チャネル。snap info lxd
name: lxd summary: System container manager and API publisher: Canonical✓ contact: https://github.com/lxc/lxd/issues license: Apache-2.0 description: | **LXD is a system container manager** With LXD you can run hundreds of containers of a variety of Linux distributions, apply resource limits, pass in directories, USB devices or GPUs and setup any network and storage you want. LXD containers are lightweight, secure by default and a great alternative to running Linux virtual machines. **Run any Linux distribution you want** Pre-made images are available for Ubuntu, Alpine Linux, ArchLinux, CentOS, Debian, Fedora, Gentoo, OpenSUSE and more. A full list of available images can be [found here](https://images.linuxcontainers.org) Can't find the distribution you want? It's easy to make your own images too, either using our `distrobuilder` tool or by assembling your own image tarball by hand. **Containers at scale** LXD is network aware and all interactions go through a simple REST API, making it possible to remotely interact with containers on remote systems, copying and moving them as you wish. Want to go big? LXD also has built-in clustering support, letting you turn dozens of servers into one big LXD server. **Configuration options** Supported options for the LXD snap (`snap set lxd KEY=VALUE`): - criu.enable: Enable experimental live-migration support [default=false] - daemon.debug: Increases logging to debug level [default=false] - daemon.group: Group of users that can interact with LXD [default=lxd] - ceph.builtin: Use snap-specific ceph configuration [default=false] - openvswitch.builtin: Run a snap-specific OVS daemon [default=false] [Documentation](https://lxd.readthedocs.io) snap-id: J60k4JY0HppjwOjW8dZdYc8obXKxujRu channels: stable: 3.12 2019-04-16 (10601) 56MB - candidate: 3.12 2019-04-26 (10655) 56MB - beta: ↑ edge: git-570aaa1 2019-04-27 (10674) 56MB - 3.0/stable: 3.0.3 2018-11-26 (9663) 53MB - 3.0/candidate: 3.0.3 2019-01-19 (9942) 53MB - 3.0/beta: ↑ 3.0/edge: git-eaa62ce 2019-02-19 (10212) 53MB - 2.0/stable: 2.0.11 2018-07-30 (8023) 28MB - 2.0/candidate: 2.0.11 2018-07-27 (8023) 28MB - 2.0/beta: ↑ 2.0/edge: git-c7c4cc8 2018-10-19 (9257) 26MB -
-
lxd
をインストールします スナップパッケージ。次のコマンドを実行して、LXDのスナップパッケージをインストールします。sudo snap install lxd
lxd 3.12 from Canonical✓ installed
snap list
を実行すると、スナップパッケージがインストールされていることを確認できます。 また。 core
スナップパッケージは、スナップパッケージをサポートするシステムの前提条件です。最初のスナップパッケージをインストールするとき、core
がインストールされ、将来インストールされる他のすべてのスナップパッケージ間で共有されます。
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.38 6673 stable canonical✓ core
lxd 3.12 10601 stable canonical✓ -
LXDを初期化する
-
ルート以外のUnixユーザーを
lxd
に追加します グループ:sudo usermod -a -G lxd username
注 ルート以外のUnixユーザーアカウントを lxd
に追加する グループでは、任意のlxc
を実行できますsudo
を付加しないコマンド 。この追加がなければ、sudo
の前に追加する必要があります。 各lxc
に コマンド。 -
以前の変更を有効にするために、新しいSSHセッションを開始します。たとえば、ログアウトしてから再度ログインします。
-
使用可能な空きディスク容量を確認します:
df -h /
この場合、45GBの空きディスク容量があります。 LXDには、コンテナーのストレージニーズのために少なくとも15GBのスペースが必要です。 LXDに15GBのスペースを割り当て、サーバーのニーズに合わせて30GBの空きスペースを残します。Filesystem Size Used Avail Use% Mounted on /dev/sda 49G 2.0G 45G 5% /
-
lxd init
を実行します LXDを初期化するには:sudo lxd init
初期化プロセス中に何度かプロンプトが表示されます。すべてのオプションのデフォルトを選択します。
Would you like to use LXD clustering? (yes/no) [default=no]: Do you want to configure a new storage pool? (yes/no) [default=yes]: Name of the new storage pool [default=default]: Name of the storage backend to use (btrfs, ceph, dir, lvm, zfs) [default=zfs]: Create a new ZFS pool? (yes/no) [default=yes]: Would you like to use an existing block device? (yes/no) [default=no]: Size in GB of the new loop device (1GB minimum) [default=15GB]: 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]:
Apache Web Server with LXD
このセクションでは、コンテナを作成し、Apache Webサーバーをインストールして、適切なiptables
を追加します。 ポスト80を公開するためのルール。
-
新しいコンテナを起動します:
lxc launch ubuntu:18.04 web
-
コンテナ内のパッケージリストを更新します。
lxc exec web -- apt update
-
ApacheをLXDコンテナにインストールします。
lxc exec web -- apt install apache2
-
LXDコンテナにシェルを入れます。
lxc exec web -- sudo --user ubuntu --login
-
ApacheのデフォルトのWebページを編集して、LXDコンテナ内で実行される参照を作成します。
sudo nano /var/www/html/index.html
行を変更します
It works!
(行番号224)からIt works inside a LXD container!
。次に、保存して終了します。 -
ホストに戻ります。コンテナに必要なすべての変更を加えました。
exit
-
LXDプロキシデバイスを追加します インターネットからサーバーのポート80(HTTP)への接続をこのコンテナーのポート80にリダイレクトします。
sudo lxc config device add web myport80 proxy listen=tcp:0.0.0.0:80 connect=tcp:127.0.0.1:80
注 LXDの最近のバージョンでは、IPアドレス( 127.0.0.1 など)を指定する必要があります。 )ホスト名( localhost など)の代わりに )。コンテナーにホスト名を使用するプロキシデバイスが既にある場合は、 lxc config edit web
を実行して、コンテナー構成を編集してIPアドレスに置き換えることができます。 。
-
ローカルコンピューターから、WebブラウザーでLinodeのパブリックIPアドレスに移動します。デフォルトのApacheページが表示されます:
一般的なLXDコマンド
-
すべてのコンテナを一覧表示します:
lxc list
To start your first container, try: lxc launch ubuntu:18.04 +------+-------+------+------+------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +------+-------+------+------+------+-----------+
-
コンテナイメージの利用可能なすべてのリポジトリを一覧表示します:
lxc remote list
リポジトリ+-----------------+------------------------------------------+---------------+-------------+--------+--------+ | NAME | URL | PROTOCOL | AUTH TYPE | PUBLIC | STATIC | +-----------------+------------------------------------------+---------------+-------------+--------+--------+ | images | https://images.linuxcontainers.org | simplestreams | none | YES | NO | +-----------------+------------------------------------------+---------------+-------------+--------+--------+ | local (default) | unix:// | lxd | file access | NO | YES | +-----------------+------------------------------------------+---------------+-------------+--------+--------+ | ubuntu | https://cloud-images.ubuntu.com/releases | simplestreams | none | YES | YES | +-----------------+------------------------------------------+---------------+-------------+--------+--------+ | ubuntu-daily | https://cloud-images.ubuntu.com/daily | simplestreams | none | YES | YES | +-----------------+------------------------------------------+---------------+-------------+--------+--------+
ubuntu
Ubuntuバージョンのコンテナイメージがあります。images
リポジトリには、多数の異なるLinuxディストリビューションのコンテナイメージがあります。ubuntu-daily
テスト目的で使用される毎日のコンテナイメージがあります。local
リポジトリは、インストールしたばかりのLXDサーバーです。公開されておらず、独自のコンテナ画像を保存するために使用できます。 -
リポジトリから利用可能なすべてのコンテナイメージを一覧表示します:
lxc image list ubuntu:
+------------------+--------------+--------+-----------------------------------------------+---------+----------+-------------------------------+ | ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCH | SIZE | UPLOAD DATE | +------------------+--------------+--------+-----------------------------------------------+---------+----------+-------------------------------+ | b (11 more) | 5b72cf46f628 | yes | ubuntu 18.04 LTS amd64 (release) (20190424) | x86_64 | 180.37MB | Apr 24, 2019 at 12:00am (UTC) | +------------------+--------------+--------+-----------------------------------------------+---------+----------+-------------------------------+ | c (5 more) | 4716703f04fc | yes | ubuntu 18.10 amd64 (release) (20190402) | x86_64 | 313.29MB | Apr 2, 2019 at 12:00am (UTC) | +------------------+--------------+--------+-----------------------------------------------+---------+----------+-------------------------------+ | d (5 more) | faef94acf5f9 | yes | ubuntu 19.04 amd64 (release) (20190417) | x86_64 | 322.56MB | Apr 17, 2019 at 12:00am (UTC) | +------------------+--------------+--------+-----------------------------------------------+---------+----------+-------------------------------+ .....................................................................
注 エイリアスとフィンガープリントの最初の2列は、起動時にコンテナイメージを指定するために使用できる識別子を提供します。 ubuntu:b
リポジトリがubuntu
であることを意味します コンテナイメージには短いエイリアスb
があります (バイオニックの場合 、Ubuntu 18.04 LTSのコードネーム)。 -
コンテナイメージに関する詳細情報を入手する:
lxc image info ubuntu:b
出力には、使用可能なすべてのエイリアスを含むコンテナイメージの詳細が表示されます。 Ubuntu 18.04 LTSの場合、Fingerprint: 5b72cf46f628b3d60f5d99af48633539b2916993c80fc5a2323d7d841f66afbe Size: 180.37MB Architecture: x86_64 Public: yes Timestamps: Created: 2019/04/24 00:00 UTC Uploaded: 2019/04/24 00:00 UTC Expires: 2023/04/26 00:00 UTC Last used: never Properties: release: bionic version: 18.04 architecture: amd64 label: release serial: 20190424 description: ubuntu 18.04 LTS amd64 (release) (20190424) os: ubuntu Aliases: - 18.04 - 18.04/amd64 - b - b/amd64 - bionic - bionic/amd64 - default - default/amd64 - lts - lts/amd64 - ubuntu - amd64 Cached: no Auto update: disabled
b
のいずれかを指定できます (bionic
の場合 、Ubuntu 18.04 LTSのコードネーム)またはその他のエイリアス。 -
mycontainer
という名前の新しいコンテナを起動します :lxc launch ubuntu:18.04 mycontainer
Creating mycontainer Starting mycontainer
-
コンテナのリストをチェックして、新しいコンテナが実行されていることを確認します。
lxc list
+-------------+---------+-----------------------+---------------------------+------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +-------------+---------+-----------------------+---------------------------+------------+-----------+ | mycontainer | RUNNING | 10.142.148.244 (eth0) | fde5:5d27:...:1371 (eth0) | PERSISTENT | 0 | +-------------+---------+-----------------------+---------------------------+------------+-----------+
-
mycontainer
で基本的なコマンドを実行します :lxc exec mycontainer -- apt update lxc exec mycontainer -- apt upgrade
注 文字 --
lxc
に指示する これ以上コマンドラインパラメータを解析しないコマンド。 -
mycontainer
内でシェルセッションを開きます :lxc exec mycontainer -- sudo --login --user ubuntu
To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. [email protected]:~$
注 Ubuntuコンテナイメージには、デフォルトでユーザー名
ubuntu
の非rootアカウントがあります 。このアカウントはsudo
を使用できます 管理タスクを実行するためにパスワードは必要ありません。sudo
コマンドは、既存のアカウントubuntu
へのログインを提供します 。 -
コンテナログを表示する:
lxc info mycontainer --show-log
-
コンテナを停止します:
lxc stop mycontainer
-
コンテナを削除します:
lxc delete mycontainer
注 コンテナを削除するには、コンテナを停止する必要があります。
トラブルシューティング
エラー「unix.socket:connect:connectionrefused」
lxc
を実行すると コマンドを実行すると、次のエラーが発生します:
lxc list
Error: Get http://unix.socket/1.0: dial unix /var/snap/lxd/common/lxd/unix.socket: connect: connection refused
これは、LXDサービスが現在実行されていない場合に発生します。デフォルトでは、LXDサービスは正常に構成されるとすぐに実行されます。 LXDを構成するには、LXDの初期化を参照してください。
エラー「unix.socket:connect:permissiondenied」
lxc
を実行すると コマンドを実行すると、次のエラーが発生します:
lxc list
Error: Get http://unix.socket/1.0: dial unix /var/snap/lxd/common/lxd/unix.socket: connect: permission denied
これは、制限付きユーザーアカウントがlxd
のメンバーではない場合に発生します グループ、またはlxd
の新しいグループメンバーシップになるように、ログアウトして再度ログインしなかった グループが更新されます。
ユーザーアカウントがubuntu
の場合 、次のコマンドは、あなたがlxd
のメンバーであるかどうかを示します グループ:
groups ubuntu
ubuntu : ubuntu sudo lxd
この例では、私たちはlxd
のメンバーです。 グループ化すると、ログアウトして再度ログインする必要があります。 lxd
のメンバーでない場合 グループ、限定アカウントをlxd
のメンバーにする方法については、LXDの初期化を参照してください。 グループ。
次のステップ
単一のWebサイトを使用する場合は、Webサイトコンテナへの単一のプロキシデバイスで十分です。複数のWebサイトを使用する場合は、Webサイトコンテナ内に仮想ホストをインストールできます。代わりに、独自のコンテナに複数のWebサイトを設定する場合は、コンテナにリバースプロキシを設定する必要があります。その場合、プロキシデバイスはリバースプロキシコンテナに転送して、個々のWebサイトコンテナに接続を転送します。
詳細情報
このトピックの詳細については、次のリソースを参照してください。これらは有用であることを期待して提供されていますが、外部でホストされている資料の正確性や適時性を保証することはできません。
- スナップパッケージとは
- snapdのインストール
- LXDの紹介
- LXD2.0のブログ投稿シリーズ
- LXDサポートコミュニティ
- LXDをオンラインで試す
- NGINXリバースプロキシ設定