Linuxコンテナー(LXC)は、オープンソースの軽量オペレーティングシステムレベルの仮想化ソフトウェアであり、単一のLinuxホスト上で複数の分離されたLinuxシステム(コンテナー)を実行するのに役立ちます。 LXCは、標準のLinuxインストールに近いLinux環境を提供しますが、個別のカーネルは必要ありません。 LXCは、VMware、VirtualBox、KVMなどの標準的な仮想化ソフトウェアに代わるものではありませんが、独自のCPU、メモリ、ブロックI / O、ネットワークを備えた分離環境を提供するには十分です。
LXCはGNULGPLv2.1+ライセンスの下でリリースされています。 LXCプロジェクトは、UbuntuOSの背後にいるCanonicalLtdによって後援されています。
このガイドでは、Ubuntu 16.04にLXCをインストールし、コマンドラインとLXCWebポータルを使用してLXCを作成および管理する方法を説明します。 。
このチュートリアルは、Ubuntu 14.04 / 14.10 / 15.04 / 15.10
などの以前のバージョンのUbuntuでも機能するはずです。前提条件:
LXCコンテナーは、ブリッジネットワークを使用して外部ネットワークにアクセスしたり、外部ネットワークからアクセスしたりします。コンテナーを起動する前に、Ubuntuでネットワークブリッジを作成する必要があります。
手順に従って、Ubuntuでブリッジを構成します。ブリッジインターフェース「br0」を作成しています 」イーサネットカード「ens33」を使用 」
$ sudo nano / etc / network / interfaces#interfaces(5)ファイルifup(8)およびifdown(8)auto loiface lo inet loopback##ブリッジ名### auto br0###ブリッジ情報 iface br0 inet staticbridge_ports ens33bridge_stp offbridge_fd 9###ブリッジIP### アドレス192.168.12.15netmask255.255.255.0network192.168.12.0broadcast 192.168.12.255gateway 192.168.12.2dns-nameservers 8.8.8.8
Ubuntu 16.04にLXCをインストールする:
さあ、LXCをインストールしましょう。コンテナが正しく機能するようにLXCとその他のパッケージをインストールします。
$ sudo apt-get install lxc lxc-templates wget bridge-utils
次のコマンドを発行して、コンテナを実行しても問題がないことを確認します。
$sudolxc-checkconfigKernel構成が/proc/config.gzに見つかりません;検索中.../boot/configにあるカーネル構成-4.4.0-15-generic---名前空間---名前空間:enabledUtsname名前空間:enabledIpc名前空間:enabledPid名前空間:enabledUser名前空間:enabledNetwork名前空間:enabledMultiple / dev/ptsインスタンス:enabled ---コントロールグループ---Cgroup:enabledCgroup clone_childrenフラグ:enabledCgroupデバイス:enabledCgroup sched:enabledCgroup cpuアカウント:enabledCgroupメモリコントローラー:enabledCgroup cpuset:enabled ---その他---Vethペアデバイス:enabledMacvlan:enabledVlan:enabledBridges :enabledAdvancedのnetfilter:enabledCONFIG_NF_NAT_IPV4:enabledCONFIG_NF_NAT_IPV6:enabledCONFIG_IP_NF_TARGET_MASQUERADE:enabledCONFIG_IP6_NF_TARGET_MASQUERADE:enabledCONFIG_NETFILTER_XT_TARGET_CHECKSUM:enabledFUSE(lxcfsで使用する):有効---チェックポイント/リストア---復元チェックポイント:enabledCONFIG_FHANDLE:enabledCONFIG_EVENTFD:enabledCONFIG_EPOLL:enabledCONFIG_UNIX_DIAG:enabledCONFIG_INET_DIAG:enabledCONFIG_PACKET_DIAG:enabledCONFIG_NETLINK_DIAG:エンabledFileの機能:enabled注:新しいカーネルを起動する前に、その構成の使用法を確認できます:CONFIG =/ path / to / config / usr / bin / lxc-checkconfig
LXCネットワークの設定:
デフォルトのブリッジ「lxcbr0」を無効にします 「、LXCインストールの一部として作成されました。
$ sudo nano / etc / default / lxc-net
「USE_LXC_BRIDGE」を設定します 」から「false 「。
USE_LXC_BRIDGE ="false"
ブリッジ「br0」を使用するようにLXCを構成します 「、以前に作成したもの。他のブリッジをすでに構成している場合は、以下のファイルで設定できます。
$ sudo nano /etc/lxc/default.conf
lxc.network.type =veth lxc.network.link =br0#ブリッジ名に置き換えます lxc.network.flags =uplxc.network.hwaddr =00:16:3e:xx:xx:xxネットワークブリッジを有効にするためにサーバーを再起動します
最初のLinuxコンテナの作成:
LXCは、Linuxコンテナーを簡単にインストールするための既製のテンプレートを提供します。テンプレートは通常、 / usr / share / lxc / templatesにあります 。
$ sudo ls / usr / share / lxc / templates / lxc-alpine lxc-archlinux lxc-centos lxc-debian lxc-fedora lxc-openmandriva lxc-oracle lxc-slackware lxc-sshd lxc -busybox lxc-cirros lxc-download lxc-gentoo lxc-opensuse lxc-plamo lxc-sparclinux lxc-ubuntu
最初のUbuntuコンテナを作成し、ターミナルで次のコマンドを発行します
$ sudo lxc-create -n ubuntu_lxc -t ubuntu
どこで、
-n<コンテナ名>
-t<テンプレート>
LXCはコンテナ「ubuntu_lxc」の作成を開始します 「、次のような出力が得られます。
出力例:
/ var / cache / lxc / xenial / rootfs-amd64でのキャッシュダウンロードの確認...テンプレートへのパッケージのインストール:ssh、vim、language-pack-enubuntu xenialminimumのダウンロード...I:InReleaseIの取得:リリース署名の確認I :有効なリリース署名(キーID 790BC7277767219C42C86F933B4FE6ACC0B21F32)I:パッケージの取得I:パッケージの検証I:パッケージの取得I:パッケージの検証I:必要なパッケージの依存関係の解決... I:基本パッケージの依存関係の解決... 。 。 completeCopy / var / cache / lxc / xenial/rootfs-amd64を/var/ lib / lxc / ubuntu_lxc/rootfsにダウンロード...rootfsを/var/ lib / lxc / ubuntu_lxc / rootfsにコピー...ロケールを生成する(これには時間がかかる場合があります)しばらく)... en_IN.UTF-8...doneGenerationcomplete。SSH2RSAキーを作成しています。これはいくつかの時間がかかることがあります... 2048 SHA256:2gY + KoAVdyeFbKZSjueMtV5pxuMNvPIltXCazRYSpJAルート@ラジ - 仮想マシン(RSA)SSH2 DSA鍵を作成します。これはいくつかの時間がかかることがあります... 1024 SHA256:+ pXVAkgv7kUDs2iNf7AKbyHMe58OIopJFtnfwJ1fpK0ルート@ラジ - 仮想マシン(DSA)SSH2 ECDSAキーを作成します。これはいくつかの時間がかかることがあります... 256 SHA256:vh1u7wgeMPMeZTWvidZT34FTsQ + oQUKBpJzazjp1Khcルート@ラジ - 仮想マシン(ECDSA)SSH2 ED25519キーを作成します。これはいくつかの時間がかかることがあります... 256 SHA256:qZvWvYnmJusDZhq5IJ / r8UsWBkrSHUg2vWCevMJgFZkルート@ラジ - 仮想マシン(ED25519)のinvoke-rc.dの:start.Currentデフォルトのタイムゾーンのポリシー-rc.dの拒否の実行: 'その他、各種/ UTC'現在の現地時間:Thu Apr 7 17:53:19 UTC 2016.Universal Time is now:Thu Apr 7 17:53:19 UTC2016。###デフォルトのユーザーは「ubuntu」で、パスワードは「ubuntu」です。 !#'sudo'コマンドを使用して、コンテナ内のrootとしてタスクを実行します。##
ログインの詳細をメモしてください。コンテナにログインするには、この情報が必要になります。
Ubuntu 14.04に基づいてコンテナを作成する場合は、次のコマンドを使用します。
$ sudo lxc-create -t ubuntu -n trusty_lxc --- r trusty -a amd64
-r<リリース>
-<アーク>
Linuxコンテナの起動:
コンテナを作成したら、次のコマンド-dを使用してコンテナを起動し、コンテナをバックグラウンドで実行します。
$ sudo lxc-start -n ubuntu_lxc -d
次に、次のコマンドを使用してコンテナのコンソールを取得します。
$ sudo lxc-console -n ubuntu_lxc
ログインするユーザー名(ubuntu)とパスワード(ubuntu)を入力します。デフォルトのクレデンシャルは、コンテナーの作成中に出力の最後にあります。
出力例:
tty1に接続でコンソールを終了し、 でCtrl+a自体を入力UbuntuXenialXerus(開発ブランチ)ubuntu_lxc pts / 0 ubuntu_lxc login:ubuntu 強い> パスワード: Ubuntu Xenial Xerus(開発ブランチ)へようこそ(GNU / Linux 4.4.0-15-generic x86_64)*ドキュメント:https://help.ubuntu.com/Ubuntuシステムに含まれているプログラムは無料ソフトウェアです。正確な配布条件プログラムごとに、/ usr / share / doc / * / copyrightの個々のファイルに記述されています。Ubuntuには、適用される法律で許可されている範囲で、まったく保証がありません。管理者(ユーザー「root」)としてコマンドを実行するには、「sudo」を使用します。 <コマンド>"。詳細については、「mansudo_root」を参照してください。ubuntu@ ubuntu_lxc:〜$
Linuxサーバーの場合と同じように、このコンテナーですべての作業を実行できます。
コンテナのコンソールを終了するには、「Ctrl+a」を押してから「q」を押します 。これで、ホストコンピュータの端末に戻ります。
コンテナのコンソールに再度接続する場合(コンテナはまだ実行中です)、次のコマンドを実行します。
$ sudo lxc-console -n ubuntu_lxc
Linuxコンテナの操作:
ホストマシンで使用可能なコンテナを一覧表示するには、次のコマンドを使用します。
$ sudo lxc-lsubuntu_lxc
次のコマンドを使用して、ホストコンピューターで現在実行されているコンテナーを一覧表示します。
$ sudo lxc-ls --activeubuntu_lxc
現在実行中のコンテナが1つしかないため、両方のコマンドで同じ出力が表示されます。
次のコマンドを使用して、コンテナを詳細情報とともに一覧表示できます。
$ sudo lxc-ls -fNAME STATE AUTOSTART GROUPS IPV4 IPV6ubuntu_lxc RUNNING 0-192.168.12.18-
実行中のコンテナの詳細を取得するには、次のコマンドを発行します。
$ sudo lxc-info -n ubuntu_lxcName:ubuntu_lxcState:RUNNINGPID:2933 IP:192.168.12.18 CPU使用量:0.90秒BlkIO使用量:20.96 MiBMemory使用量:31.67 MiBKMem使用量:0バイトリンク:vethFLQOYF TXバイト:3.21 KiB RXバイト:62IPアドレスを使用してコンテナに接続できます。
「lxc-stop」コマンドを使用してコンテナーの実行を停止できます。次のコマンドを使用して「ubuntu_lxc」を停止します。
$ sudo lxc-stop -n ubuntu_lxcクローンコンテナ:
LXCは、既存のコンテナーからコンテナーを複製する機能を提供します。次のコマンドを実行して、既存の「ubuntu_lxc」コンテナーを新しいコンテナー「ubuntu_lxc_clone」に複製します。
注:クローンを開始する前に、コンテナーを停止する必要があります。
$ sudo lxc-copy -n ubuntu_lxc -N ubuntu_lxc_cloneコンテナが正常に作成されているかどうかを確認してください。
$ sudo lxc-lsubuntu_lxc ubuntu_lxc_clone複製されたコンテナを起動して、作業を開始できます。
$ sudo lxc-start -n ubuntu_lxc_clone$ sudo lxc-console -n ubuntu_lxc_cloneConnected to tty 1Typeでコンソールを終了し、 でCtrl+a自体に入るubuntuPassword:最終ログイン:Sat Apr 9 16:15:22 UTC 2016 from 192.168.12.1 on pts / 4Welcome to Ubuntu Xenial Xerus(development branch)(GNU / Linux 4.4.0-15-generic x86_64)*ドキュメント:https:/ /help.ubuntu.com/管理者(ユーザー "root")としてコマンドを実行するには、 "sudo "を使用します。詳細については、 "man sudo_root"を参照してください。ubuntu@ubuntu_lxc_clone:〜$ LXCコンソールからコンテナーの電源を切ります。
ubuntu @ ubuntu_lxc_clone:〜$ sudo poweroffスナップショットの作成:
LXCはスナップショットと呼ばれる別の機能も提供します。スナップショットを実行するには、以下の手順に従ってください。
注:スナップショットを作成する前に、コンテナーが実行されていないことを確認してください。次のコマンドを使用して、実行中のコンテナを停止します。
$ sudo lxc-stop -n ubuntu_lxc_cloneデモのために、ubuntu_lxc_cloneのスナップショットを撮りましょう。
$ sudo lxc-snapshot -n ubuntu_lxc_cloneサンプル出力:
lxc-snapshot:lxccontainer.c:do_lxcapi_snapshot:3371ディレクトリにバックアップされたコンテナーのスナップショットが要求されました。lxc-snapshot:lxccontainer.c:do_lxcapi_snapshot:3372コピークローンを作成しています。スナップショットが必要な場合は、lxc-snapshot:lxccontainer.c:do_lxcapi_snapshot:3373最初にaufsまたはoverlayfsクローンを作成し、スナップショットthatlxc-snapshot:lxccontainer.c:do_lxcapi_snapshot:3374を作成し、元のコンテナーを元の状態に保ちます。スナップショットが保存されている場所を確認するには、次のコマンドを実行します。
$ sudo lxc-snapshot -L -n ubuntu_lxc_clonesnap0(/ var / lib / lxc / ubuntu_lxc_clone / snaps)2016:04:09 22:35:16Ubuntuでは、LXCスナップショットは「 / var / lib / lxc /
/ snaps 」に保存されます 」スナップショットの復元:
スナップショットからコンテナを復元するには、前に行ったように、次のコマンドを使用します。
$ sudo lxc-snapshot -r snap0 -n ubuntu_lxc_cloneコンテナの破棄:
コンテナを削除するには、次のコマンドを使用します。
注:コンテナーを破棄する前に、スナップショットを削除する必要があります。 ($ sudo lxc-snapshot -d snap0 -n ubuntu_lxc_clone)
$ sudo lxc-destroy -n ubuntu_lxc_cloneUbuntu 16.04でのCentOSコンテナの実行:
Redhatベースのコンテナ用の「yum」パッケージをインストールします。
$ sudo apt-get install yum次のコマンドを使用してCentOS7コンテナを作成します。
$ sudo lxc-create -n centos_lxc -t centos --- R 7 -a x86_64 / etc /osからのホストCPEID-release:/ var / cache / lxc / centos / x86_64 / 7/rootfsのキャッシュダウンロードを確認しています...ダウンロードCentOSの最小限の...ベース| 3.6 kB 00:00base / primary_db | 5.3メガバイト12:26updates | 3.4 kB 00:00updates / primary_db | 3.9 MB02:17インストールプロセスの設定依存関係の解決->トランザクションチェックの実行--->パッケージchkconfig.x86_640:1.3.61-5.el7がインストールされます完了!rpmdbの場所を修正しています...ダウンロードが完了しました。コピー/ 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'に保存していますユーザーroot.passwdのパスワードの期限切れ:成功:読み取りできません/var/lib/lxc/centos_lxc/rootfs/etc/rc.sysinit:そのようなファイルまたはディレクトリはありません:/var/lib/lxc/centos_lxc/rootfs/etc/rc.d/rc.sysinitを読み取ることができません:そのようなものはありませんfileまたはdirectoryContainerrootfsとconfigが作成されました。configファイルを編集してネットワーク設定を確認/有効にします。一時的なrootパスワードは次の場所に保存されます:'/ var / lib / lxc / centos_lxc / tmp_root_pass' ルートパスワードは有効期限が切れたものとして設定されており、最初のログイン時に変更する必要があります。これはできるだけ早く行う必要があります。ルートパスワードを紛失した場合、またはコンテナを起動せずにパスワードを変更したい場合は、次のコマンドを実行してホストからパスワードを変更できます(これにより期限切れフラグもリセットされます): chroot / var / lib / lxc / centos_lxc / rootfs passwd出力の最後でデフォルトのクレデンシャルを取得できます。
次のコマンドを使用して、Ubuntuコンテナのコンソールを起動して取得します。最初のログイン時にrootパスワードを変更する必要があります。
$ sudo lxc-start -n centos_lxc -d $ sudo lxc-console -n centos_lxctty1に接続と入力してコンソールを終了し、 と入力してCtrl+a自体を入力しますCentOSLinux7 (コア)カーネル4.4.0-15-x86_64 centos_lxcログインの汎用:root パスワード: パスワードをすぐに変更する必要があります(root強制) rootのパスワードを変更します。 (現在の)UNIXパスワード: 新しいパスワード: 新しいパスワードを再入力してください: [root @ centos_lxc〜]# それで全部です!読んでくれてありがとう。社会的になり、これを友達と共有しましょう。
Ubuntu