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のコピーとしてコンテナーcentos_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:ログイン以外のサーバーの機能を確認していません。問題が発生した場合は、ここに投稿してください。
それで全部です。社会的になり、これを友達と共有しましょう。