GNU/Linux >> Linux の 問題 >  >> Linux

LXC コマンドを使用して LXC Linux コンテナを作成および起動する方法

LXC コンテナは、疑似仮想環境を作成するための非常に迅速な方法です。

以前の LXC の記事では、LXC Linux コンテナーをインストールして構成する方法について説明しました。

このチュートリアルでは、新しい Linux コンテナーを作成し、コンテナーを起動し、LXC 仮想コンソールにログインして新しいコンテナーを使用する方法について説明します。

デモンストレーションのために、このチュートリアルでは CentOS LXC 仮想コンテナーを作成しますが、必要なほぼすべての Linux ディストリビューション用の仮想コンテナーを作成できます。

1. LXC コンテナ テンプレート

Linux コンテナ LXC はデフォルトで、いくつかの一般的な Linux ディストリビューション用のコンテナ テンプレートを提供します。以下は、すぐに使用できる LXC テンプレートの一部です。

  • CentOS
  • Ubuntu
  • フェドーラ
  • OpenSUSE
  • ジェンツー
  • Debian
  • オラクル Linux
  • ArchLinux

利用可能な LXC テンプレートはすべて /usr/local/share/lxc/templates ディレクトリにあります。

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

2. lxc-create を使用してコンテナを作成する

コンテナーを作成するには、以下に示すように lxc-create コマンドを使用します。

次のコマンドで:

  • –n オプションはコンテナー名を示します
  • –t オプションは、コンテナーの作成に使用されるテンプレートを示します。この例では、lxc-centos テンプレートを使用して CentOS コンテナーを作成しています。

この例では、centos の最小インストールで CentOS コンテナーが作成されます。

これにより、最小限の CentOS を実行するために必要なすべてのパッケージ (たとえば、約 140 個のパッケージ) がダウンロードされ、MyCentOSContainer1 コンテナーの一部としてインストールされます

# lxc-create -n MyCentOSContainer1 -t /usr/local/share/lxc/templates/lxc-centos
/usr/local/share/lxc/templates/lxc-centos
Host CPE ID from /etc/system-release-cpe: cpe:/o:centos:linux:6:GA
dnsdomainname: Unknown host
Checking cache download in /usr/local/var/cache/lxc/centos/x86_64/6/rootfs ... 
Downloading centos minimal ...
...
...
  Installing : libgcc-4.4.7-16.el6.x86_64       1/142 
  Installing : setup-2.8.14-20.el6_4.1.noarch   2/142 
  Installing : filesystem-2.4.30-3.el6.x86_64   3/142 
...
  Verifying  : gzip-1.3.12-22.el6.x86_64        139/142 
  Verifying  : mingetty-1.08-5.el6.x86_64       140/142 
  Verifying  : libxml2-2.7.6-20.el6_7.1.x86_64  141/142 
  Verifying  : 1:findutils-4.4.2-6.el6.x86_64   142/142 
...
Download complete.
Copy /usr/local/var/cache/lxc/centos/x86_64/6/rootfs to /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs ... 
Copying rootfs to /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs ...

3. LXC コンテナの root パスワード

LXC コンテナの root パスワードは /usr/local/var/lib/lxc/{container-name}/tmp_root_pass に保存されています

上記の例では、先ほど作成した LXC コンテナの場合、一時的な root パスワードは次の場所にあります:

# cat /usr/local/var/lib/lxc/MyCentOSContainer1/tmp_root_pass
Root-MyCentOSContainer1-pf7qMB

以下に示すように、コントロール ホストから chroot を使用してコンテナーがオフになっていても、いつでもコンテナーのルート パスワードを変更できます。

# chroot /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs passwd
Changing password for user root.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

4. lxc-start を使用して LXC Linux コンテナを起動します

コンテナーが作成されたら、以下に示すように lxc-start を使用してコンテナーを開始します。

# lxc-start -n MyCentOSContainer1
lxc-start: cgfs.c: handle_cgroup_settings: 2077 Device or resource busy - failed to set memory.use_hierarchy to 1; continuing

CentOS release 6.6 (Final)
Kernel 2.6.32-431.el6.x86_64 on an x86_64

MyCentOSContainer1 login: init: rcS main process (8) killed by TERM signal
Entering non-interactive startup
Bringing up loopback interface:               [  OK  ]
Bringing up interface eth0:
Determining IP information for eth0... done.  [  OK  ]
Starting system logger:                       [  OK  ]
Mounting filesystems:                         [  OK  ]
Generating SSH2 RSA host key:                 [  OK  ]
Generating SSH1 RSA host key:                 [  OK  ]
Generating SSH2 DSA host key:                 [  OK  ]
Starting sshd:               				  [  OK  ]

CentOS release 6.6 (Final)
Kernel 2.6.32-431.el6.x86_64 on an x86_64

MyCentOSContainer1 login:

次の「コンテナの開始に失敗しました」というエラー メッセージが表示された場合は、構成に問題があります。

# lxc-start -n MyCentOSContainer1
lxc-start: lxc_start.c: main: 344 The container failed to start.
lxc-start: lxc_start.c: main: 346 To get more details, run the container in foreground mode.
lxc-start: lxc_start.c: main: 348 Additional information can be obtained by setting the --logfile and --logpriority options.

構成の何が問題なのかを正確に調べるには、以下に示すように -F オプションを使用してフォアグラウンドで LXC コンテナーを実行します。

「ブリッジに接続できませんでした」、「netdev を作成できませんでした」、「ネットワークを作成できませんでした」というエラー メッセージが表示される場合は、システムでブリッジ アダプタが適切に構成されていません。

以前の LXC Linux コンテナーのセットアップの記事で説明した ifcfg-br0 の設定をチェックして、ブリッジ構成が適切にセットアップされ、機能していることを確認してください。

# lxc-start -F -n MyCentOSContainer1
lxc-start: conf.c: instantiate_veth: 2796 failed to attach 'veth8VPW29' to the bridge 'lxcbr0': Operation not permitted
lxc-start: conf.c: lxc_create_network: 3079 failed to create netdev
lxc-start: start.c: lxc_spawn: 935 failed to create the network
lxc-start: start.c: __lxc_start: 1192 failed to spawn 'MyCentOSContainer1'
lxc-start: lxc_start.c: main: 344 The container failed to start.
lxc-start: lxc_start.c: main: 348 Additional information can be obtained by setting the --logfile and --logpriority options.

5. lxc-info を使用してコンテナー情報を表示

コンテナーに関する詳細情報を表示するには、以下に示すように lxc-info コマンドを使用します。

# lxc-info -n MyCentOSContainer1
Name:           MyCentOSContainer1
State:          RUNNING
PID:            7696
IP:             192.168.100.101
CPU use:        1.61 seconds
BlkIO use:      32.00 KiB
Memory use:     2.63 MiB
Link:           vethLNI1UH
 TX bytes:      1.98 KiB
 RX bytes:      46.08 KiB
 Total bytes:   48.06 KiB

6. lxc-stop を使用して LXC Linux コンテナを停止します

LXC Linux コンテナーを停止するには、以下に示すように lxc-stop を使用し、停止するコンテナー名を指定します。

# lxc-stop -n MyCentOSContainer1

7. lxc-clone を使用して既存のコンテナを複製

複製は、コンテナーの構成に変更を加える前に、古いコンテナーのスナップショットを取得する場合に役立ちます。これは、コンテナー構成の簡単なバックアップ方法として使用できます。

コンテナーのクローン作成は、以下に示すように lxc-clone コマンドを使用して実行できます。この場合、新しいコンテナ名は MyCentOSContainer2 です

# lxc-clone -o MyCentOSContainer1 -n MyCentOSContainer2
Created container MyCentOSContainer2 as copy of MyCentOSContainer1

8. lxc-destory を使用して既存のコンテナを削除する

既存のコンテナを削除するには、以下に示すように lxc-destroy コマンドを使用します。

# lxc-destroy -n MyCentOSContainer2

9. LXC Linux コンテナ コンソールに接続

コンテナーのコンソールに接続するには、次の lxc-console コマンドを使用します。

# lxc-console -n MyCentOSContainer1
Connected to tty 1
Type Ctrl+a q to exit the console, Ctrl+a Ctrl+a to enter Ctrl+a itself

CentOS release 6.6 (Final)
Kernel 2.6.32-431.el6.x86_64 on an x86_64

MyCentOSContainer1 login:

10. lxc-config を使用して LXC 構成を変更する

LXC 構成を変更するには、lxc-config コマンドを使用できます。

まず、lxc-config -l オプションを使用します。これにより、以下に示すように、利用可能な構成がすべて表示されます。

# lxc-config -l
lxc.default_config
lxc.lxcpath
lxc.bdev.lvm.vg
lxc.bdev.lvm.thin_pool
lxc.bdev.zfs.root
lxc.cgroup.use
lxc.cgroup.pattern

次に、以下に示すように lxc.default_config オプションを使用して、各構成ファイルとそれに関連するパラメーターに関する情報を表示します。

# lxc-config lxc.default_config
/usr/local/etc/lxc/default.conf

# cat /usr/local/etc/lxc/default.conf
lxc.network.type = veth
lxc.network.link = virbr0
lxc.network.flags = up

次のコマンドは、すべてのコンテナが保存されている LXC パッチを表示します。

# lxc-config lxc.lxcpath
/usr/local/var/lib/lxc

以下に示すように、このディレクトリの下に作成した 2 つのコンテナーが表示されます。

# cd /usr/local/var/lib/lxc

# ls
MyCentOSContainer1  MyCentOSContainer2

コンテナー ディレクトリの下に、以下に示すように、特定のコンテナーのすべての基本的な構成情報を含む構成ファイルが表示されます。

# cd /usr/local/var/lib/lxc/MyCentOSContainer1

# vi config
lxc.network.type = veth
lxc.network.link = virbr0
lxc.network.hwaddr = fb:bb:f2:87:e8:17
lxc.network.flags = up
lxc.rootfs = /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs
lxc.include = /usr/local/share/lxc/config/centos.common.conf
lxc.arch = x86_64
lxc.utsname = MyCentOSContainer1

Linux
  1. Linuxでの例で「cat」および「tac」コマンドを使用する方法

  2. Linuxでシャットダウンおよび再起動コマンドを無効にする方法

  3. Podmanとは何ですか?LinuxにPodmanをインストールする方法

  1. LinuxでDockerコンテナを作成、一覧表示、削除する方法

  2. Linuxでユーザーグループを作成および削除する方法

  3. 「cp」および「mv」コマンドを使用してLinuxでファイルとディレクトリをコピー/移動する方法

  1. findおよびduコマンドを使用してLinuxで大きなファイルを検索する方法

  2. Linuxで検索および検索コマンドを使用してファイルを検索する

  3. Linux KVM をインストールしてゲスト VM を作成する方法と例