GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS 7 /RHEL7でLXCを使用してLinuxコンテナをセットアップする

Linuxコンテナー(LXC)は、軽量のオペレーティングシステムレベルの仮想化方式であり、単一のホスト上で複数の分離されたLinuxシステム(コンテナー)を実行できます。 LXCは、VMware、VirtualBox、KVMなどの標準的な仮想化ソフトウェアのすべての機能を提供するのではなく、独自のCPU、メモリ、ブロックI / O、ネットワークを備えた仮想環境を提供します。 LXCは、標準のLinuxインストールに近いLinux環境を作成しますが、個別のカーネルは必要ありません。

LXCは自由ソフトウェアであり、GNULGPLv2.1+ライセンスの下でリリースされています。 LXCプロジェクトは、UbuntuOSの背後にいるCanonicalLtdによって後援されています。

このガイドでは、LXCをインストールする方法と、コマンドラインおよびLXCWebポータルを使用してLXCを作成および管理する方法を説明します。 。

前提条件

LXCはBaseリポジトリでは利用できません。したがって、次のコマンドを使用してサーバーにEPELリポジトリを追加する必要があります。

#yum -y install epel-release 

LXCコンテナーは、ブリッジネットワークを使用して外部ネットワークにアクセスしたり、外部ネットワークからアクセスしたりします。コンテナーを起動する前に、 CentOS 7 /RHEL7でネットワークブリッジを作成する必要があります。 。 ネットワークブリッジの名前は「virbr0」である必要があります

CentOS7にLXCをインストールする

前提条件を満たしたら、LXCをインストールします。コンテナが正しく機能するために必要なLXCとその他の重要なパッケージをインストールします。

#yum -y install lxc lxc-templates libcap-devel libcgroupbusybox wget bridge-utils lxc-extra 

次のコマンドを実行して、コンテナの実行に問題がないことを確認します。

#lxc-checkconfigカーネル構成が/proc/config.gzに見つかりません;検索中.../boot/config-3.10.0-327.el7.x86_64にあるカーネル構成---名前空間---名前空間:有効Utsname名前空間:有効Ipc名前空間:有効Pid名前空間:有効ユーザー名前空間:有効ネットワーク名前空間:有効複数の/ dev / ptsインスタンス:有効---制御グループ--- Cgroup:有効Cgroup clone_childrenフラグ:有効Cgroupデバイス:有効Cgroupスケジュール:有効Cgroup cpuアカウント:有効Cgroupメモリコントローラー:有効Cgroup cpuset:有効-- --その他---Vethペアデバイス:有効Macvlan:有効Vlan:有効ブリッジ:有効高度なネットフィルター:有効CONFIG_NF_NAT_IPV4:有効CONFIG_NF_NAT_IPV6:有効CONFIG_IP_NF_TARGET_MASQUERADE:有効CONFIG_SUMTA:有効CONFIG_FHANDLE:有効CONFIG_EVENTFD:有効CONFIG_EPOLL:有効CONFIG_UNIX_DIAG:有効CONFIG_INET_DIAG:有効CONFIG_PACKET_DIAG:有効CONFIG_NETLINK_DIA G:有効ファイル機能:有効注:新しいカーネルを起動する前に、その構成の使用法を確認できます:CONFIG =/ path / to / config / usr / bin / lxc-checkconfig 

Linuxコンテナの作成

LXCには、コンテナーを簡単にインストールできる既製のテンプレートが付属しており、次のコマンドを使用して使用可能なテンプレートを一覧表示できます。

#ls / usr / share / lxc / templates / lxc-alpine lxc-archlinux lxc-centos lxc-debian lxc-fedora lxc-openmandriva lxc-oracle lxc-sshd lxc-ubuntu-cloud lxc-linux -cirros lxc-download lxc-gentoo lxc-opensuse lxc-plamo lxc-ubuntu 

コンテナを作成するには、次のコマンドを発行します。

#lxc-create -n centos_lxc -t centos 

どこで、

-n<コンテナ名>

-t<テンプレート>

上記のコマンドを発行すると、LXCは「 centos_lxc」という名前のコンテナーの作成を開始します 「。

出力例:

 / etc / os-releaseからのホストCPEID:cpe:/ o:centos:centos:7 / var / cache / lxc / centos / x86_64 / 7/rootfsのキャッシュダウンロードを確認しています...centosminimalをダウンロードしています..ロードされたプラグイン:fastestmirrorベース| 3.6kB00:00:00更新| 3.4kB00:00:00最速のミラーの決定。 。 。 。完了!ダウンロード完了。 / var / cache / lxc / centos / x86_64 / 7/rootfsを/var/ lib / lxc / centos_lxc/rootfsにコピーしています...rootfsを/var/ lib / lxc / centos_lxc /rootfsにコピーしています...sed:できません/var/lib/lxc/centos_lxc/rootfs/etc/init/tty.confを読んでください:そのようなファイルやディレクトリはありませんルートパスワードを「/var/lib/lxc/centos_lxc/tmp_root_pass」に保存していますユーザールートのパスワードの有効期限が切れています。 passwd:成功:/var/lib/lxc/centos_lxc/rootfs/etc/rc.sysinitを読み取れません:そのようなファイルまたはディレクトリがありません:/var/lib/lxc/centos_lxc/rootfs/etc/rcを読み取れません。 d / rc.sysinit:そのようなファイルまたはディレクトリは作成されていませんContainerrootfsとconfig。構成ファイルを編集してネットワーク設定を確認/有効にします。一時的なrootパスワードは次の場所に保存されます:'/ var / lib / lxc / centos_lxc / tmp_root_pass' ルートパスワードは有効期限が切れたものとして設定されており、最初のログイン時に変更する必要があります。これはできるだけ早く行う必要があります。ルートパスワードを紛失した場合、またはコンテナを起動せずにパスワードを変更したい場合は、次のコマンドを実行してホストからパスワードを変更できます(これにより期限切れフラグもリセットされます): chroot / var / lib / lxc / centos_lxc / rootfs passwd  

上記のログインの詳細に注意してください。コンテナにログインするには、この情報が必要です。

コンテナの資格情報

コンテナにログインするには( centos_lxc )、次の場所に保存されている一時ルートパスワードを使用します。私たちの場合、「 Root-centos_lxc-KRzJLy 」はcentos_lxcのルートパスワードです 。

#cat / var / lib / lxc / centos_lxc / tmp_root_pass Root-centos_lxc-KRzJLy 

または

次のコマンドを使用してrootパスワードをリセットします。

#chroot / var / lib / lxc / centos_lxc / rootfs passwd 

PS:まだコンテナを起動していません。

Linuxコンテナの起動

コンテナを作成したら、次のコマンドを使用してコンテナを起動し、バックグラウンドで実行します。

#lxc-start -n centos_lxc -d 

次に、次のコマンドを使用してコンテナのコンソールを取得します。

注:tty1が応答しなかったという理由だけで、コンテナをtty0に接続するために「-t」と「0」を使用します。

#lxc-console -n centos_lxc -t 0 

ログインするユーザー名とパスワードを入力します。コンテナーの作成中に、出力の最後にクレデンシャルが表示されます。最初のログイン時にrootパスワードを変更する必要があります。

出力例:

tty0に接続と入力してコンソールを終了し、と入力してCtrl+a自体を入力しますx86_64  centos_lxc login:rootパスワード:パスワードをすぐに変更する必要があります(rootで強制)rootのパスワードを変更します。 (現在の)UNIXパスワード:新しいパスワード:新しいパスワードを再入力してください: [root @ centos_lxc〜]#

ログインすると、通常のLinuxサーバーの場合と同じように、このコンテナーですべての作業を実行できます。

コンテナのコンソールを終了するには、「Ctrl+a」を押してから「q」を押します 。これで、ホストコンピュータの端末に戻ります。

コンテナに再度接続する場合(コンテナはまだ実行中です)、次のコマンドを実行します。

#lxc-console -n centos_lxc -t 0 

Linuxコンテナの操作

ホストコンピューター上のコンテナーを一覧表示するには、次のコマンドを使用します。

#lxc-ls centos_lxc 

また、現在アクティブでホストコンピューター上で実行されているコンテナーを一覧表示します。

#lxc-ls --active centos_lxc 

現在実行されているコンテナは1つしかないため、両方のコマンドで同じ出力が表示される可能性があります。

実行中のコンテナの完全な情報を取得する場合は、次のコマンドを発行します。

<前>#LXC-情報-n centos_lxc名:centos_lxc状態:RUNNING PID:4047 IP:192.168.12.16 CPUの使用:0.47秒BlkIOの使用:6.32 MiBのメモリー使用:4.19 MiBのkmemを使用:0リンクバイト:vethM3N48G TXはバイト: 1.53 KiB RXバイト:1.94 KiB合計バイト数:3.47 KiB

上記のコマンドは、「centos_lxc」コンテナの詳細情報(名前、状態、IPアドレス、CPU、メモリ、I / O、ネットワーク使用量)を提供します。

LXCコンソールの代わりにIPアドレスを使用してコンテナに接続することもできます。

「lxc-stop」コマンドを使用して実行中のコンテナーを停止できます。次のコマンドを使用して「centos_lxc」コンテナーを停止します。

#lxc-stop -n centos_lxc 

Linuxコンテナのクローン作成

LXCには、既存のコンテナーからコンテナーのクローンを作成する将来の可能性があります。次のコマンドを実行して、既存の「centos_lxc」コンテナーを新しいコンテナー「centos_lxc_clone」に複製します。

注:クローンを開始する前に、実行中のコンテナーを停止する必要があります。

#lxc-clone centos_lxccentos_lxc_clonecentos_lxcのコピーとしてコンテナーcen​​tos_lxc_cloneを作成しました

コンテナが正常に作成されているかどうかを確認してください。

#lxc-ls centos_lxc centos_lxc_clone 

通常どおり、新しいコンテナでの作業を開始できます。

#lxc_start -n centos_lxc_clone -d 
#lxc_console -n centos_lxc_clone -t0ttyに接続0と入力してコンソールを終了し、と入力してCtrl+a自体を入力しますCentOSLinux7(コア)カーネル3.10.0 -327.el7.x86_64 on x86_64 centos_lxc_clone login:root Password:Last login:Sat Mar 26 14:11:17 from 192.168.12.1 [root @ centos_lxc_clone〜]#

コンソール内からコンテナの電源を切ります。

 [root @ centos_lxc_clone〜]#poweroff 

スナップショットを撮る

LXCにはスナップショットと呼ばれる別の未来もあります。次のコマンドを使用してください。

注:スナップショットを作成する前に、コンテナーを停止する必要があります。

#lxc-stop -n centos_lxc_clone 

デモでは、centos_lxc_cloneのスナップショットを撮っています。

#lxc-snapshot -n centos_lxc_clone 

サンプル出力:

 lxc_container:lxccontainer.c:lxcapi_snapshot:2879ディレクトリにバックアップされたコンテナーのスナップショットが要求されました。lxc_container:lxccontainer.c:lxcapi_snapshot:2880コピークローンを作成しています。スナップショットが必要な場合は、lxc_container:lxccontainer.c:lxcapi_snapshot:2881最初にaufsまたはoverlayfsクローンを作成し、スナップショットthatlxc_container:lxccontainer.c:lxcapi_snapshot:2882を作成し、元のコンテナーを元の状態に保ちます。

スナップショットが保存されている場所を確認するには、次のコマンドを実行します。

#lxc-snapshot -L -n centos_lxc_clone snap0(/ var / lib / lxcsnaps / centos_lxc_clone)2016:03:26 10:59:10 

Centos 7では、LXCスナップショットは「 / var / lib / lxcsnaps /」に保存されます 」

スナップショットの復元

スナップショットからコンテナを復元するには、次のコマンドを使用します。

#lxc-snapshot -r snap0 -n centos_lxc_clone 

コンテナの削除

コンテナを完全に削除するには、次のコマンドを使用します。

#lxc-destroy -n centos_lxc_clone 

CentOS7でのUbuntuコンテナの実行

CentOSでUbuntuコンテナを実行しようとしたときに複数の問題が発生し、他のWebサイトで共有されているいくつかの調整の助けを借りてUbuntuを実行できました。

Debianベースのコンテナ用に以下のパッケージをインストールしてください。

#yum -y install debootstrap perl#cd / usr / sbin; ln -sf debootstrap qemu-debootstrap 

次のコマンドを実行して、Debianミラーをubuntuミラーに置き換えます。

#sed -i's / DEF_HTTPS_MIRROR ="https:\ / \ / mirrors.kernel.org \ / debian" / DEF_HTTPS_MIRROR ="https:\ / \ / mirrors.kernel.org \ / ubuntu" / g' / usr / sbin / debootstrap 

unix.stackexchange.comに感謝します

Ubuntuの正確なキーリングを取得し、keyringsディレクトリに配置します。

#cd / tmp#wget "http://archive.ubuntu.com/ubuntu/pool/main/u/ubuntu-keyring/ubuntu-keyring_2011.11.21.tar.gz"#tar xzf ubuntu-keyring_2011.11.21 .tar.gz#mkdir / usr / share / keyrings /#cp /tmp/ubuntu-keyring-2011.11.21/keyrings/ubuntu-archive-keyring.gpg / usr / share / keyrings / 

blog.toxa.deに感謝します

次のコマンドを使用してUbuntuコンテナを作成します。

#lxc-create -n ubuntu_lxc -t ubuntuChecking cache download in / var / cache / lxc / precise / rootfs-amd64 ...パッケージをテンプレートにインストールしています:ssh、vim、language-pack-enDownloadingubuntuprecisionminimum。。 .I:リリースの取得I:Release.gpgの取得I:リリース署名の確認I:有効なリリース署名(キーID 630239CC130E1A7FD81A27B140976EAF437D05B5)I:パッケージの取得I:パッケージの検証I:パッケージの生成が完了しました.libdevmapper1.02.1(2:1.02。 48-4ubuntu7.4)... dmsetupのセットアップ(2:1.02.48-4ubuntu7.4)... update-initramfs:更新の延期(トリガーがアクティブ化)libc-binのトリガーの処理...ldconfigの延期された処理が実行中initramfs-toolsのplaceProcessingトリガー...resolvconfのトリガーを処理しています...invoke-rc.d:policy-rc.dがstartの実行を拒否しました。completeCopy/ var / cache / lxc / precis/rootfs-amd64を/var/にダウンロードします。 lib / lxc / ubuntu_lxc / rootfs...rootfsを/var/ lib / lxc / ubuntu_lxc/rootfsにコピーしています...ロケールを生成しています...en_US.UTF-8... u p-to-dateGenerationcomplete.SSH2RSAキーの作成。これには時間がかかる場合があります...SSH2DSAキーを作成しています。これには時間がかかる場合があります...SSH2ECDSAキーを作成しています。これには時間がかかる場合があります...コンテナのタイムゾーンが設定されていません。手動で調整します。###デフォルトのユーザーは「ubuntu」で、パスワードは「ubuntu」です!#「sudo」コマンドを使用して、コンテナ内のrootとしてタスクを実行します。 ## 

上記の出力から、デフォルトのユーザーは「ubuntu」であり、ユーザーのパスワードは「ubuntu」であることがわかります。

次のコマンドでUbuntuコンテナのコンソールを取得します。

#lxc_console -n ubuntu_lxcUbuntu 12.04.5 LTS ubuntu_lxc consoleubuntu_lxc login:ubuntuPassword:Welcome to Ubuntu 12.04.5 LTS(GNU / Linux 3.10.0-327.10.1.el7.x86_64 x86_64)*ドキュメント:https:// help .ubuntu.com / Ubuntuシステムに含まれているプログラムは無料のソフトウェアです。各プログラムの正確な配布条件は、/ usr / share / doc / */copyrightの個々のファイルに記載されています。Ubuntuにはまったく保証がありません。適用される法律で許可されています。セキュリティコンテキストを入力しますか? [N] ubuntu @ ubuntu_lxc:〜$ 

PS:ログイン以外のサーバーの機能を確認していません。問題が発生した場合は、ここに投稿してください。

それで全部です。社会的になり、これを友達と共有しましょう。


Cent OS
  1. CentOS 6 /RHEL6でのSysLogサーバーのセットアップ

  2. Auditd で Linux OS を起動できない (CentOS/RHEL)

  3. CentOS/RHEL で lxcbr0 と virbr0 を使用して LXC コンテナーを作成する方法

  1. Ubuntu16.04でLXCを使用してLinuxコンテナをセットアップする

  2. CentOS /RHEL6/5でMySQLとLogAnalyzerを使用してRsyslogをセットアップする

  3. CentOS / RHEL 7 :GRUB2 引数を grubby で変更する方法

  1. RHEL 8 / CentOS8Linuxにredmineをインストールする方法

  2. RHEL 8 / CentOS8Linuxでxinetdを使用してサンプルサービスをインストールおよびセットアップする方法

  3. RHEL 8 / CentOS8Linuxにアスタリスクをインストールする方法