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

Debian9にOpenVZをインストールする方法

OpenVZとは何ですか?

OpenVZは、ソフトウェアベースのOS仮想化ツールであり、ホストLinuxディストリビューション内から分離された仮想Linux環境の展開、管理、および変更を可能にします。さまざまなLinuxディストリビューションで事前に構築されたOSテンプレートの広範な配列により、ユーザーは仮想環境を簡単に迅速にダウンロードして展開できます。

始める前に

  1. このチュートリアルを実行するには、rootユーザーアカウントが必要であり、コマンドがrootユーザーとして発行されたかのように記述されています。制限付きユーザーアカウントの使用を選択した読者は、コマンドの前にsudoを付ける必要があります。 必要に応じて。制限付きユーザーアカウントをまだ作成していない場合は、「コンピュートインスタンスの設定と保​​護」ガイドの手順に従ってください。

  2. このガイドの説明は、Debian9専用に作成およびテストされています。他のDebianまたはUbuntuディストリビューションでは機能しない可能性があります。

  3. OpenVZを実行するには、SystemdのSystemVによる削除と置換、カスタムLinuxカーネルの使用など、Debian9システムに対する特定の重要な変更が必要です。続行する前に、マシンに現在インストールされているすべてのソフトウェアがこれらの変更と互換性があることを確認してください。

    注 必須ではありませんが、OpenVZテンプレート用に別のExt4ファイルシステムパーティションを作成することをお勧めします。デフォルトでは、Debian9インストーラーとLinodeManagerの両方がExt4で新しく作成されたパーティションをフォーマットします。この構成を実行する方法については、Linodeガイドの「ディスクとストレージの管理」でディスクを作成する手順に従ってください。

オプション:OpenVZテンプレート用に個別のパーティションを作成する

Linode VPS全体をOpenVZの実行専用にし、他のサービスを実行しない場合は、ホストサーバーとそのプロセス、およびOpenVZ仮想サーバーテンプレート用に個別のパーティションを作成することをお勧めします。次の表に、推奨されるパーティションスキームを示します。

OpenVZテンプレートをホストするためのパーティション
Partition 説明 通常のサイズ
/ ルートパーティション 4〜12 GB
swap ページングパーティション RAMの2倍またはRAM+ 2GB(使用可能なハードドライブの容量によって異なります)
/ vz 残りのすべてのハードドライブスペース
  1. Linode Managerにログインし、Linodeを選択します。マシンの電源を切り、ホストジョブキューを表示してジョブが完了したことを確認します セクション。 ディスクの下 タブで、新しいディスクの作成をクリックします 。選択したラベルを追加し、タイプで「ext4」を選択します ドロップダウンメニューで、サイズにできるだけ多くのスペースを割り当てます 分野。 [変更を保存]をクリックします;最適な構成は下の画像のようになります。

  2. ダッシュボードの下 タブで、メインの構成プロファイルをクリックします。 ブロックデバイス割り当ての下 タブで、開いているデバイスに新しいパーティションを割り当てます。 [変更を保存]をクリックします 終了したら。

  3. Linodeを起動し、SSH経由でログインします。以下のコマンドを発行して、新しいディスクが正しく作成されたことを確認します。出力には、新しく作成されたディスクが表示されます。

    fdisk -l
    
  4. 新しいデバイスのマウントポイントを作成します:

     mkdir /vztemp
    
  5. 新しいディスクをマウントします。必ず/dev / sdcを置き換えてください デバイス名:

     mount /dev/sdc /vztemp
    

Ext4ボリュームからMetadata_csum機能を削除する

OpenVZをインストールする前に、システムに互換性を持たせるように構成する必要があります。 Debian 9は、カスタムOpenVZカーネルと互換性のない新しいチェックサム機能をサポートしています。好みに応じて、マウントされたパーティションからmetadata_csumを削除するか、影響を受けるパーティションを互換性のあるExt4ボリュームに再フォーマットするかを選択できます。いずれかの方法を選択し、以下の該当するセクションの指示に従ってください。

  1. 使用可能なディスクパーティションを一覧表示します。

     lsblk
    
  2. 「metadata_csum」がステップ1に示されているマウントされたディスクパーティション(SWAPパーティションを含まない)にインストールされているかどうかを確認します。 /dev/sda1を置き換えて、パーティションごとに以下の形式に従います 適切なボリューム名を使用します。以下のコマンドでマウントされたディスクボリュームの出力が得られない場合は、このセクションをスキップできます。

     dumpe2fs -h /dev/sda1 2>/dev/null | grep -e metadata_csum
    

マウントされたパーティションからMetadata_csumを削除する

  1. 以下のコマンドを発行して、fsckにコードを追加します ファイル:

     echo "copy_exec /sbin/e2fsck" | sudo tee -a /usr/share/initramfs-tools/hooks/fsck
     echo "copy_exec /sbin/tune2fs" | sudo tee -a /usr/share/initramfs-tools/hooks/fsck
    
  2. 以下で指定されたディレクトリに新しいファイルを作成し、 tuneという名前を付けます。 。以下のテキストをコピーしてこの新しいファイルに貼り付け、保存します。

    ファイル:/ etc / initramfs-tools / scripts / local-premount / tune
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    #!/bin/sh
    
    if [ "$readonly" != "y" ] ;
    then exit 0 ;
    fi
    
    e2fsck -f $Volume
    tune2fs -O -metadata_csum $Volume
    e2fsck -f $Volume
  3. ファイルのプロパティと既存のinitramfsイメージを更新して、 tuneをロードします スクリプト:

     chmod 755 /etc/initramfs-tools/scripts/local-premount/tune
     update-initramfs -u -k all
    
  4. システムを再起動し、以下のコマンドを実行して、影響を受けるすべてのパーティションからmetadata_csumが無効になっていることを確認します。ここでも、「/ dev/sda1」を正しいボリューム名に置き換えます。

     dumpe2fs -h /dev/sda1 2>/dev/null | grep -e metadata_csum
    

互換性のあるExt4ボリュームをフォーマットする

  1. フォーマットするExt4ボリュームを選択し、以下のコマンドを発行して、/dev/sda3を置き換えます。 選択したボリュームで。 「0」の出力は成功を示します。

    注意 mkfsを使用してボリュームをフォーマットする コマンドを実行すると、データが失われる可能性があります。
     mkfs -t ext4 -O -metadata_csum /dev/sda3
    

SystemdをSystemVに置き換えます

  1. SystemVユーティリティをインストールします。

     apt install sysvinit-core sysvinit-utils
    
  2. Linode Managerから、マシンを再起動してSystemdを解放します。

  3. マシンからSystemdを削除します:

     apt --auto-remove remove systemd
    
  4. ファイルavoid-systemdを作成します 以下の内容を貼り付けてください:

    ファイル:/ etc / apt / Preferences.d / avoid-systemd
    1
    2
    3
    
    Package: *systemd*
    Pin: release *
    Pin-Priority: -1

OpenVZリポジトリを追加

  1. 新しいリポジトリソースファイルを作成し、以下の内容に貼り付けます:

    ファイル:/ etc / apt / sources.list.d / openvz.list
    deb http://download.openvz.org/debian jessie main
    deb http://download.openvz.org/debian wheezy main
  2. システムにリポジトリキーを追加します:

     wget -qO - http://ftp.openvz.org/debian/archive.key | sudo apt-key add -
    
  3. このガイドの発行日現在、OpenVZリポジトリキーは無効であり、apt updateを発行しています コマンドはシステムから警告を生成します。コマンドは成功するはずです。そうでない場合は、次の引数でシステムを更新します。

     apt --allow-unauthenticated update
    

OpenVZパッケージのインストール

  1. 必要なパッケージを使用してOpenVZをインストールします。

     KPackage="linux-image-openvz-$(dpkg --print-architecture)"
     sudo apt --allow-unauthenticated --install-recommends install $KPackage vzdump ploop initramfs-tools dirmngr
    
  2. インストールにより、新しいディレクトリ/vzが作成されます。 。インストール後にこのディレクトリが存在しない場合は、以下のコマンドを使用してシンボリックリンクを作成します。

     ln -s /var/lib/vz/ /vz
    
  3. ファイルvznet.confを作成します 下の行に貼り付けます:

    ファイル:/ etc / vz / vznet.conf
    1
    
    EXTERNAL_SCRIPT="/usr/sbin/vznetaddbr"
  4. この手順はオプションであり、OpenVZサービスが停止するとOpenVZ仮想インスタンスが停止します。この動作が必要な場合は、以下のコマンドを発行してください。

     echo 'VE_STOP_MODE=stop' | sudo tee -a /etc/vz/vznet.conf
    

OpenVZカーネルへの起動

サーバーを再起動するたびにOpenVZカーネルを起動するようにシステムを構成する必要があります。

  1. grub.cfgを開きます lessのファイル 、またはお好みのテキストエディタ:

     less /boot/grub/grub.cfg
    
  2. grub.cfg内 ファイルで、次のようなセクションを探します。

    ファイル:/ boot / grub / grub.cfg
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    . . .
    
    menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-e025e52b-91c4-4f64-962d-79f244caa92a' {
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod ext2
        set root='hd0'
        if [ x$feature_platform_search_hint = xy ]; then
            search --no-floppy --fs-uuid --set=root --hint-bios=hd0 --hint-efi=hd0 --hint-baremetal=ahci0  e025e52b-91c4-4f64-962d-79f244caa92a
        else
            search --no-floppy --fs-uuid --set=root e025e52b-91c4-4f64-962d-79f244caa92a
        fi
        echo    'Loading Linux 4.9.0-3-amd64 ...'
        linux   /boot/vmlinuz-4.9.0-3-amd64 root=/dev/sda ro console=ttyS0,19200n8 net.ifnames=0
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-4.9.0-3-amd64
        }
    submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-e025e52b-91c4-4f64-962d-79f244caa92a'
    
    . . .
    Copy the text entry preceeding `submenu`, in this example the text would be: **Advanced options for Debian GNU/Linux**.
    
  3. grub.cfg内 「submenu」行の下にあるファイルには、複数のインデントされた「menuentry」セクションが表示されます。これらは、使用可能なカーネルを表します。これらから、新しくインストールされたOpenVZカーネルメニューエントリを見つける必要があります。以下の内容のようになります。一部はリカバリカーネルであり、無視する必要があることに注意してください:

    ファイル:/ boot / grub / grub.cfg
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    . . .
    
        menuentry 'Debian GNU/Linux, with Linux 2.6.32-openvz-042stab123.9-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-2.6.32-openvz-042stab123.9-amd64-advanced-e025e52b-91c4-4f64-962d-79f244caa92a' {
                gfxmode $linux_gfx_mode
                insmod gzio
                if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
                insmod ext2
                set root='hd0'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0 --hint-efi=hd0 --hint-baremetal=ahci0  e025e52b-91c4-4f64-962d-79f244caa92a
                else
                  search --no-floppy --fs-uuid --set=root e025e52b-91c4-4f64-962d-79f244caa92a
                fi
                echo    'Loading Linux 2.6.32-openvz-042stab123.9-amd64 ...'
                linux   /boot/vmlinuz-2.6.32-openvz-042stab123.9-amd64 root=/dev/sda ro console=ttyS0,19200n8 net.ifnames=0
                echo    'Loading initial ramdisk ...'
                initrd  /boot/initrd.img-2.6.32-openvz-042stab123.9-amd64
        }
    
    . . .
      Again, write down the text directly after "menuentry" in single quotes. Here, the text to copy is **Debian GNU/Linux, with Linux 2.6.32-openvz-042stab123.9-amd64**.
    
  4. grub.cfgを閉じます ファイルを作成して/etc / default / grubを開きます お好みのテキストエディタで。 GRUB_DEFAULT=で始まる行を見つけます 。このパラメータのデフォルト値を削除し、前の手順でコピーしたテキストを次の形式に従って入力します。上記の例では、値は次のようになります。

     GRUB_DEFAULT="Advanced options for Debian GNU/Linux>Debian GNU/Linux, with Linux 2.6.32-openvz-042stab123.9-amd64"
    

    コピーされた両方の文字列は、ニンジンの「>」文字で区切られていることに注意してください。

  5. グラブを保存して閉じます ファイルを作成し、次のコマンドを発行して、新しいカーネル値でgrubブートローダーをリロードします。

     update-grub
    
  6. デフォルトでは、カーネルのロードはGrubではなく、LinodeManagerによって処理されます。 Linode Managerにログインし、Linodeを選択します。構成プロファイルをクリックします。 [ブート設定]セクションで、[カーネル]ドロップダウンリストから[GRUB 2]を選択します(下の画像を参照)。変更を保存して終了します。

  7. サーバーを再起動し、以下のコマンドを発行して、OpenVZカーネルがロードされたことを確認します。

     uname -r
    

    OpenVZカーネルがロードされていない場合は、 grubである可能性があります。 誤って構成されたファイル。正しいカーネルが選択され、正しく入力されていることを確認してください。

OSテンプレートをダウンロードしてデプロイする

  1. OpenVZサービスを開始します:

     service vz start
     service vz status
    
  2. 公式のOpenVZテンプレートリポジトリに登録します:

     sudo gpg --recv-keys $(echo $(sudo gpg --batch --search-keys [email protected] 2>&1 | grep -ie ' key.*created' | sed -e 's|key|@|g' | cut -f 2 -d '@') | cut -f 1 -d ' ' | cut -f 1 -d ',')
    
  3. /etc/vz/vz.confを編集します 次の行をsimfsを使用するように変更します ploopの代わりに :

    ファイル:/ etc / vz / vz.conf
    1
    
    VE_LAYOUT=simfs
  4. ダウンロード可能なOSテンプレートのリスト:

     vztmpl-dl --list-remote
    
  5. 利用可能なテンプレートのリストから、ダウンロードするテンプレートを1つ選択します。以下の形式を使用して、次のコマンドを発行し、 centos7-x86_64を置き換えます。 選択したテンプレートを使用して:

     vztmpl-dl --gpg-check centos7-x86_64
    
  6. OpenVZは、インストールされている各OSテンプレートを「コンテナー」と呼びます。ダウンロードしたテンプレートごとにコンテナID(CTID)を作成する必要があります。以下のコマンドを発行し、[CTID]を任意の番号(101を推奨)に置き換え、CentOS7テンプレート名をダウンロードしたテンプレートに置き換えます。

     vzctl create [CTID] --ostemplate centos7-x86_64
    
  7. OpenVZテンプレート用に別のディスクパーティションを設定する場合は、以下のコマンドを使用して、新しいディスク内にコンテナーを作成します。 –ostemplateを置き換えます テンプレート名と–name わかりやすい名前を選択してください:

    vzctl create [CTID] --ostemplate debian-8.0-x86_64 --layout simfs --name centos7 --private /vztemp/vz/private/$VEID --root /vztemp/vz/root/$VEID --config basic
    
  8. これで、OSテンプレートの構成ファイルが作成されました。このファイルの場所は、前のコマンドの出力の一部として指定されます。このファイルを今すぐ開いて、以下の変更を加えます。構成ファイルには、[CTID].conf形式で名前が付けられます。

    • 仮想環境にIPアドレスを割り当てます。推奨される形式は192.168.0。[CTID]です。この場合、192.168.0.101になります。
    • ネームサーバーを提供します。 Googleのネームサーバー(8.8.8.8)で十分です。
    • 仮想環境の起動に問題がある場合は、 VE_LAYOUTを変更してみてください。 ploopに戻る simfsから 。

    SWAPやRAMの割り当てなど、他のオプションを自由に構成することもできます。保存して終了したら閉じます。

    ファイル:/ etc / vz / conf / 101.conf
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    . . .
    
    # RAM
    PHYSPAGES="0:256M"
    
    # Swap
    SWAPPAGES="0:512M"
    
    # Disk quota parameters (in form of softlimit:hardlimit)
    DISKSPACE="2G:2.2G"
    DISKINODES="131072:144179"
    QUOTATIME="0"
    
    # CPU fair scheduler parameter
    CPUUNITS="1000"
    
    NETFILTER="stateless"
    VE_ROOT="/var/lib/vz/root/$VEID"
    VE_PRIVATE="/var/lib/vz/private/$VEID"
    VE_LAYOUT="simfs"
    OSTEMPLATE="centos7-x86_64"
    ORIGIN_SAMPLE="vswap-256m"
    NAMESERVER="8.8.8.8"
    IP_ADDRESS="192.168.0.101/24"
    HOSTNAME="centos-7"
  9. 以下のコマンドを使用して、新しく作成したコンテナを起動します。 [CTID]をコンテナのCTID番号に置き換えます。仮想環境を実行したままコンテナセッションを終了するには、exitと入力します。 コマンドラインで。

     vzctl start [CTID]
     vzctl enter [CTID]
    
コンテナへのインターネットアクセスを構成する

コンテナには、インターネットにアクセスしたり、インターネットからアクセスしたりする方法がありません。ホストサーバーは、インストールされている各仮想環境との間でリクエストをやり取りするように構成する必要があります。

コンテナからインターネットへのアクセスを構成する
su -を使用してrootとしてログインする必要がある場合があります このセクションのiptables-saveコマンドを実行するには。
  1. ホストサーバーで、Iptablesを使用して次のコマンドを発行します。角かっこと内容を適切な情報に置き換えます。コンテナのIPアドレスについては、必ずCIDR表記でリストしてください。 IPアドレスとサブネット、またはxxx.xxx.xxx.xxx/xxを含める 、将来追加されるコンテナへのアクセスを可能にするIPアドレスの範囲を網羅するため。たとえば、192.168.0.0 / 24と入力すると、IPアドレス192.168.0.0から192.168.0.255のルーティングが設定されます。

     iptables -t nat -A POSTROUTING -s [container IP] -o eth0 -j SNAT --to [host server IP]
    
  2. iptables-persistentがある場合 インストールされている場合は、この手順をスキップしてください。新しいIptablesルールを保存します:

     iptables-save > /etc/iptables.conf
    
  3. 転送された要求を許可するようにファイアウォールを構成します。 iptables-persistentを使用していない場合 ルールを保存します:

     iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
     iptables-save > /etc/iptables.conf
    
  4. これで、コンテナ環境内からインターネットにアクセスできるようになります。コンテナからパッケージを更新して、接続を確認してみてください。

インターネットからコンテナへのアクセスを構成する

  1. インターネットからコンテナ上の特定のサービスにアクセスする必要がある場合は、ホストマシンのポートを予約し、それを介してアクセスをルーティングする必要があります。次のコマンドを発行し、括弧で囲まれた値を適切な情報に置き換えます。

     iptables -t nat -A PREROUTING -p tcp -d [host_ip] --dport [host_port_number] -i eth0 -j DNAT --to-destination [container_ip:container_port_number]
    
  2. 新しいルールを保存します。 iptables-persistentがある場合は、この手順をスキップしてください インストール済み:

     iptables-save > /etc/iptables.conf
    

ここからどこへ行くか

OpenVZのインストール、テンプレートのダウンロード、コンテナーの作成、インターネットアクセスの構成を行うと、仮想環境は通常のLinux環境とまったく同じように機能します。定期的な更新、セキュリティ構成などが必要です。ほとんどの構成は、OpenVZコマンドを介してホストサーバーから実行できます。 。

外部リソースの「OpenVZの基本操作」リンクを参照してください。 基本的な管理コマンドに慣れるためのセクション。追加のユーザー作成テンプレートもダウンロードできますが、メインテンプレートリストには含まれていません。これらは、「OpenVZユーザー提供テンプレート」リンクをたどることで見つけることができます。

詳細情報

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

  • 基本的なOpenVZ操作
  • OpenVZユーザー提供テンプレート

Docker
  1. Debian 10(バスター)のインストール方法

  2. Python3.9をDebian10にインストールする方法

  3. Debian10にTeamViewerをインストールする方法

  1. Debian10にMemcachedをインストールする方法

  2. Debian9にGitをインストールする方法

  3. Debian9にGoをインストールする方法

  1. Debian9にPipをインストールする方法

  2. Debian9にRをインストールする方法

  3. Debian9にRubyをインストールする方法