GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

LXDの初心者向けガイド:ApacheWebサーバーのセットアップ

LXDとは何ですか?

LXD(「Lex-Dee」と発音)は、現在CanonicalでサポートされているLXC(Linux Containers)上に構築されたシステムコンテナーマネージャーです。 LXDの目標は、仮想マシンと同様のエクスペリエンスを提供することですが、ハードウェア仮想化ではなくコンテナー化を通じて提供します。 LXDは、アプリケーションを提供するためのDockerと比較して、スナップショット、ライブマイグレーション、ストレージ管理などの追加機能を備えたほぼ完全なオペレーティングシステム機能を提供します。

LXDの主な利点は、高密度コンテナーのサポートと、仮想マシンと比較して提供されるパフォーマンスです。 2GBのRAMを搭載したコンピューターは、半ダースのコンテナーを適切にサポートできます。さらに、LXDは主要なLinuxディストリビューションのコンテナーイメージを公式にサポートしています。コンテナで実行するLinuxディストリビューションとバージョンを選択できます。

このガイドでは、LinodeにLXD 3をインストールしてセットアップする方法と、コンテナーにApacheWebサーバーをセットアップする方法について説明します。

注 簡単にするために、コンテナという用語 このガイド全体で、LXDシステムコンテナを説明するために使用されます。

始める前に

  1. コンピュートインスタンスの作成ガイドを完了します。 Linode 2GBなど、少なくとも2GBのRAMメモリを搭載したLinodeを選択します。 Ubuntu19.04ディストリビューションを指定します。 snapパッケージ(snapd)がサポートされている限り、別のLinuxディストリビューションを指定できます。;詳細については、詳細情報を参照してください。

  2. コンピューティングインスタンスのセットアップと保護ガイドに従って、システムを更新してください。また、タイムゾーンの設定、ホスト名の構成、制限付きユーザーアカウントの作成、SSHアクセスの強化を行うこともできます。

スナップパッケージサポートの構成

LXDは、Ubuntu 18.04 LTSなどのUbuntuのロングタームサポート(LTS)バージョンでDebianパッケージとして利用できます。他のバージョンのUbuntuおよび他のディストリビューションの場合、LXDはスナップパッケージとして利用できます。サポートされているLinuxディストリビューションで動作する単一のパッケージファイルがあるため、スナップパッケージはユニバーサルパッケージです。スナップパッケージとは何か、サポートされているLinuxディストリビューション、およびその設定方法の詳細については、「詳細情報」セクションを参照してください。

  1. スナップサポートが正しくインストールされていることを確認します。次のコマンドは、スナップパッケージがインストールされていないか、インストールされていることを示しています。

    snap list
    
    No snaps are installed yet. Try 'snap install hello-world'.
  2. 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 -
  3. 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を初期化する

  1. ルート以外のUnixユーザーをlxdに追加します グループ:

    sudo usermod -a -G lxd username
    
    注 ルート以外のUnixユーザーアカウントをlxdに追加する グループでは、任意のlxcを実行できます sudoを付加しないコマンド 。この追加がなければ、sudoの前に追加する必要があります。 各lxcに コマンド。
  2. 以前の変更を有効にするために、新しいSSHセッションを開始します。たとえば、ログアウトしてから再度ログインします。

  3. 使用可能な空きディスク容量を確認します:

    df -h /
    

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda         49G  2.0G   45G   5% /
    この場合、45GBの空きディスク容量があります。 LXDには、コンテナーのストレージニーズのために少なくとも15GBのスペースが必要です。 LXDに15GBのスペースを割り当て、サーバーのニーズに合わせて30GBの空きスペースを残します。

  4. 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を公開するためのルール。

  1. 新しいコンテナを起動します:

    lxc launch ubuntu:18.04 web
    
  2. コンテナ内のパッケージリストを更新します。

    lxc exec web -- apt update
    
  3. ApacheをLXDコンテナにインストールします。

    lxc exec web -- apt install apache2
    
  4. LXDコンテナにシェルを入れます。

    lxc exec web -- sudo --user ubuntu --login
    
  5. ApacheのデフォルトのWebページを編集して、LXDコンテナ内で実行される参照を作成します。

    sudo nano /var/www/html/index.html
    

    行を変更しますIt works! (行番号224)からIt works inside a LXD container! 。次に、保存して終了します。

  6. ホストに戻ります。コンテナに必要なすべての変更を加えました。

    exit
    
  7. 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アドレスに置き換えることができます。 。
  1. ローカルコンピューターから、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バージョン18.04 LTS、18.10、および19.04のコンテナーイメージを示しています。コンテナを作成するときは、短いエイリアスを指定するだけです。例:ubuntu:b リポジトリがubuntuであることを意味します コンテナイメージには短いエイリアスbがあります (バイオニックの場合 、Ubuntu 18.04 LTSのコードネーム)。

  • コンテナイメージに関する詳細情報を入手する:

     lxc image info ubuntu:b
    

    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
    出力には、使用可能なすべてのエイリアスを含むコンテナイメージの詳細が表示されます。 Ubuntu 18.04 LTSの場合、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リバースプロキシ設定

Docker
  1. Ubuntu Webサーバーをセットアップしますか?

  2. LXDの初心者向けガイド:複数のWebサイトをホストするためのリバースプロキシの設定

  3. LXDコンテナ内のApacheWebサーバーにアクセスする

  1. ApacheWebサーバーを構成する方法

  2. ApacheWebサーバーのキープアライブのチューニング

  3. DockerコンテナにシンプルなApacheWebサーバーをセットアップする方法

  1. ApacheWebサーバーCentOS6/RHEL6をインストールします

  2. Fedora18にApacheHTTPDWebサーバーをインストールします

  3. openSUSE12にApacheWebサーバーをインストールします