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

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

LXDとは何ですか?

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

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

このガイドでは、LXDで動作するようにLinodeをセットアップする方法、LXDが実際にどのように動作するか、および一般的な問題をトラブルシューティングする方法について説明します。

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

始める前に

  1. まだ行っていない場合は、Linodeアカウントとコンピュートインスタンスを作成します。 Linode入門とコンピューティングインスタンスの作成ガイドをご覧ください。

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

マウントストレージボリューム

LXDを設定するときは、コンテナデータを外部ボリューム(ブロックストレージボリュームなど)またはLinodeにマウントされたディスクに保存できます。

ブロックストレージボリューム

  1. Linodeガイドでブロックストレージを使用する方法に従って、サイズが少なくとも20GBのブロックストレージボリュームを作成します。 Linodeに接続します。デバイス名とボリュームへのパスをメモします。

    注意 しないでください ボリュームをフォーマットし、/etc/fstabに追加しないでください 。

  2. 構成プロファイルを編集し、起動設定 GRUB 2を選択します カーネルとして。詳細については、KVMLinodeでディストリビューション提供のカーネルを実行するを参照してください。

  3. LinodeManagerからLinodeを再起動します。

ディスク

  1. Linode Managerで、ディスクを見つけます セクションをクリックし、新しいディスクを作成をクリックします 。

    注 Linodeの配布ディスクに使用可能なディスク容量の100%がすでに割り当てられている場合は、ストレージディスクを作成する前にディスクのサイズを変更する必要があります。詳細については、ディスクのサイズ変更を参照してください。
  2. Linodeの構成プロファイルを編集します。 デバイス割り当てのブロックの下 、新しいディスクを/dev/sdcに割り当てます 。このパスをメモします。これは、次のセクションでLXDを構成するときに必要になります。

  3. 起動設定の下 GRUB 2を選択します カーネルとして。

  4. LinodeManagerからLinodeを再起動します。

LXDを初期化する

  1. パッケージをインストールするlxd およびzfsutils-linux

    sudo apt install lxd zfsutils-linux
    
  2. Unixユーザーをlxdに追加します グループ:

    sudo usermod -a -G lxd username
    
  3. この変更を有効にするには、新しいSSHセッションを開始します。

  4. lxd initを実行します LXDを初期化するには:

    sudo lxd init
    

    初期化プロセス中に何度かプロンプトが表示されます。 を除くすべてのオプションのデフォルトを選択します Use existing block device? このオプションでは、はいを選択します 次に、前のセクションで追加したストレージボリュームへのパスを入力します。

LXDコマンド

  1. すべてのコンテナを一覧表示します:

    lxc list
    
    Generating a client certificate. This may take a minute...
    If this is your first time using LXD, you should also run: sudo lxd init
    To start your first container, try: lxc launch ubuntu:16.04
    
    +------+-------+------+------+------+-----------+
    | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
    +------+-------+------+------+------+-----------+
  2. 利用可能なすべてのコンテナイメージを一覧表示します:

    lxc image list images:
    
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    |              ALIAS              | FINGERPRINT  | PUBLIC |               DESCRIPTION                |  ARCH   |   SIZE   |          UPLOAD DATE          |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.4 (3 more)             | 39a3bf44c9d8 | yes    | Alpine 3.4 amd64 (20180126_17:50)        | x86_64  | 2.04MB   | Jan 26, 2018 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.4/armhf (1 more)       | 9fe7c201924c | yes    | Alpine 3.4 armhf (20170111_20:27)        | armv7l  | 1.58MB   | Jan 11, 2017 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.4/i386 (1 more)        | d39f2f2ba547 | yes    | Alpine 3.4 i386 (20180126_17:50)         | i686    | 1.88MB   | Jan 26, 2018 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.5 (3 more)             | 5533a5247551 | yes    | Alpine 3.5 amd64 (20180126_17:50)        | x86_64  | 1.70MB   | Jan 26, 2018 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.5/i386 (1 more)        | 5e93d5f4cae1 | yes    | Alpine 3.5 i386 (20180126_17:50)         | i686    | 1.73MB   | Jan 26, 2018 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.6 (3 more)             | 5010616d9a24 | yes    | Alpine 3.6 amd64 (20180126_17:50)        | x86_64  | 1.73MB   | Jan 26, 2018 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    .....................................................................
    注 エイリアスとフィンガープリントの最初の2列は、起動時にコンテナイメージを指定するために使用できる識別子を提供します。
  3. mycontainerという名前の新しいコンテナを起動します :

    lxc launch ubuntu:16.04 mycontainer
    
    Creating mycontainer
    Starting mycontainer
  4. コンテナのリストをチェックして、新しいコンテナが実行されていることを確認します。

    lxc list
    
    +-------------+---------+-----------------------+---------------------------+------------+-----------+
    |    NAME     |  STATE  |         IPV4          |          IPV6             |    TYPE    | SNAPSHOTS |
    +-------------+---------+-----------------------+---------------------------+------------+-----------+
    | mycontainer | RUNNING | 10.142.148.244 (eth0) | fde5:5d27:...:1371 (eth0) | PERSISTENT | 0         |
    +-------------+---------+-----------------------+---------------------------+------------+-----------+
  5. mycontainerで基本的なコマンドを実行します :

    lxc exec mycontainer -- apt update
    lxc exec mycontainer -- apt upgrade
    
    注 文字-- lxcに指示する これ以上コマンドラインパラメータを解析しないコマンド。
  6. 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へのログインを提供します 。

  7. コンテナログを表示する:

    lxc info mycontainer --show-log
    
  8. コンテナを停止します:

    lxc stop mycontainer
    
  9. コンテナを削除します:

    lxc delete mycontainer
    

Apache Web Server with LXD

このセクションでは、コンテナを作成し、Apache Webサーバーをインストールして、適切なiptablesを追加します。 ポスト80を公開するためのルール。

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

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

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

    lxc exec web -- apt install apache2
    
  4. iptablesを追加します ポート80を公開するルール。誰かがパブリックIPアドレスを介してポート80に接続すると、このルールはそれらをコンテナのポート80にリダイレクトします。

    your_public_ipを置き換える必要があります およびyour_container_ip このコマンドでは、パブリックIPとコンテナIPをそれぞれ使用します。

    PORT=80 PUBLIC_IP=your_public_ip CONTAINER_IP=your_container_ip sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "forward to the Apache2 container"'
    
  5. iptablesを作成します iptables-persistentをインストールして、再起動時にルールを保持します 。 IPv4およびIPv6ルールを保存するように求められたら、[はい]をクリックします それらを保存するために。

    sudo apt install iptables-persistent
    
  6. ローカルコンピューターから、WebブラウザーでLinodeのパブリックIPアドレスに移動します。デフォルトのApacheページが表示されます:

次のステップ

単一のWebサイトを使用する場合は、単一のiptables ウェブサイトコンテナへのルールで十分です。複数のWebサイトを使用する場合は、NGINXなどのWebサーバーをインストールし、コンテナーにリバースプロキシを設定する必要があります。 iptables その後、ルールはこのコンテナにリダイレクトされます。

詳細情報

このトピックの詳細については、次のリソースを参照してください。これらは有用であることを期待して提供されていますが、外部でホストされている資料の正確性や適時性を保証することはできません。

  • LXDの紹介
  • LXD2.0のブログ投稿シリーズ
  • LXDサポートコミュニティ
  • LXDをオンラインで試す

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

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

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

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

  2. Ubuntu12.10にApacheWebサーバーをインストールします

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

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

  2. CentOS8にApacheWebサーバーをインストールします-それを行うためのステップバイステップのプロセス?

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