Linuxコンテナ(LXC)の作成と操作方法
カテゴリ:コンテナ仮想化
この記事ではLXCでのコンテナの作成と操作について解説いたします。
Note以降は CentOS 8 + LXC 3.0.4 環境での手順となります。
コンテナの作成
コンテナを作成する場合は lxc-create コマンドを使用します。
使用法:lxc-create --name=コンテナ名 --template=テンプレート名 [オプション...] [-- テンプレートオプション]
-n, --name= | コンテナ名を指定 |
---|---|
-f, --config= | 初期構成ファイルを指定 |
-t, --template= | コンテナのセットアップに使用するテンプレート |
-B, --bdev= | 使用するバッキングストアタイプを指定 |
--dir= | rootfsディレクトリを配置するディレクトリを指定 |
以下のように --template= に download を指定した場合、テンプレートをダウンロードしてコンテナを作成します。
# lxc-create --name=ubuntu --template=download
使用可能なテンプレートが一覧表示されるため、ディストリビューション、リリースバージョン、アーキテクチャの3つを順番に指定することでテンプレートがダウンロードされ、コンテナが作成されます。
例)
# lxc-create --name=ubuntu --template=download Setting up the GPG keyring Downloading the image index --- DIST RELEASE ARCH VARIANT BUILD --- alpine 3.10 amd64 default 20200825_13:00 alpine 3.10 arm64 default 20200825_13:00 alpine 3.10 armhf default 20200825_13:00 ... ubuntu bionic amd64 default 20200825_07:42 ubuntu bionic arm64 default 20200825_07:42 ubuntu bionic armhf default 20200825_07:42 ubuntu bionic i386 default 20200825_07:42 ubuntu bionic ppc64el default 20200825_07:55 ubuntu bionic s390x default 20200825_07:42 ubuntu focal amd64 default 20200825_07:42 ubuntu focal arm64 default 20200825_07:42 ubuntu focal armhf default 20200825_07:42 ubuntu focal ppc64el default 20200825_07:42 ubuntu focal s390x default 20200825_07:42 ... voidlinux current amd64 default 20200825_17:10 voidlinux current arm64 default 20200825_17:10 voidlinux current armhf default 20200825_17:10 voidlinux current i386 default 20200825_17:10 --- Distribution: ubuntu Release: bionic Architecture: amd64 Downloading the image index Downloading the rootfs Downloading the metadata The image cache is now ready Unpacking the rootfs --- You just created an Ubuntu bionic amd64 (20200825_07:42) container. To enable SSH, run: apt install openssh-server No default root or user password are set by LXC.
コンテナの起動
注意コンテナを起動する前に、LXC用ブリッジインターフェースlxcbr0を作成しておく必要があります。
コンテナを起動するには lxc-start コマンドを使用します。
使用法:lxc-start --name=コンテナ名 -- コマンド
-n, --name= | コンテナ名を指定 |
---|---|
-d, --daemon | コンテナをデーモン化する(デフォルト) |
-F, --foreground | /dev/consoleに接続されている現在のttyから開始 |
-p, --pidfile= | 作成するプロセスIDファイルを指定 |
-f, --rcfile= | 読み込む設定ファイルを指定 |
-c, --console= | 使用するコンテナコンソールを指定 |
-L, --console-log= | コンテナコンソールのログの出力先ファイルを指定 |
-C, --close-all-fds | fdが継承されている場合は、それらを閉じる 注:--daemonは--close-all-fdsを意味します |
-s, --define KEY= | 構成変数を指定 |
--share-[net|ipc|uts|pid]= | 別のコンテナまたはPIDと名前空間を共有する |
例)
# lxc-start ubuntu
コンテナにアタッチ
コンテナにアタッチするには lxc-attach コマンドを使用します。
使用法:lxc-attach --name=コンテナ名 [-- コマンド]
-n, --name= | コンテナ名を指定 |
---|---|
-e, --elevated-privileges= | コンテナの特権ではなく、昇格された特権を使用します。昇格する特権をORのリストとして指定しない場合:CAP、CGROUP、LSM(それぞれ、capability、cgroup、restrictions)は昇格されます。警告:これにより、特権がコンテナに漏洩する可能性があります。 注意して使用してください。 |
-a, --arch= | コンテナ自体のアーキテクチャではなく、プログラムに使用するアーキテクチャを指定します。 |
-s, --namespaces= | コンテナのすべての名前空間にアタッチするのではなく、フラグの次のORされたリストにのみアタッチします:MOUNT、PID、UTSNAME、IPC、USERまたはNETWORK.WARNING:-sを使用すると、すべての特権が昇格された-eを意味します。したがって、特権がコンテナに漏洩します。注意して使用してください。 |
-R, --remount-sys-proc | 正しいネームスペースコンテキストを正しく反映するために、-sを使用するときにマウントネームスペースにアタッチしていない場合は、/sysおよび/procを再マウントします。詳細は、lxc-attach(1)のマニュアルページを参照してください。 |
--clear-env | アタッチする前にすべての環境変数をクリアします。アタッチされたシェル/プログラムは、container=lxcのみを設定して起動します。 |
--keep-env | 現在の環境変数をすべて保持します。これは現在のデフォルトの動作ですが、将来変更される可能性があります。 |
-L, --pty-log= | ptyログの出力先ファイルを指定 |
-v, --set-var | コンテナ内の接続されたプログラムによって表示される追加の変数を設定します。複数回指定できます。 |
--keep-var | 追加の環境変数を保持します。 --clear-envが指定されている場合にのみ適用されます。複数回使用できます。 |
-f, --rcfile= | ロードする設定ファイルを指定 |
例)
# lxc-attach ubuntu
コンテナをデタッチ
コンテナをデタッチするには Ctrl + A、Ctrl + Qを順番に入力するか、exit コマンドを使用します。
注意バグなのか、現時点のバージョンではCtrl + A、Ctrl + Qではデタッチできないようです。
コンテナにコンソール接続
コンテナにコンソール接続するには lxc-console コマンドを使用します。
使用法:lxc-console --name=コンテナ名 [--tty 番号]
-n, --name= | コンテナ名を指定 |
---|---|
-t, --tty= | コンソールtty番号を指定 |
-e, --escape= | エスケープコマンドのプレフィックスを指定 |
--rcfile= | ロードする設定ファイルを指定 |
例)
# lxc-console --name=ubuntu
注意少なくとも、現在のバージョンではコンソールから切断する方法はないようです。
注意Ubuntuコンテナでは初期設定ではrootユーザーのパスワードは設定されていないため先にパスワードを設定してからでないとログインできません。コンテナをインストールした際に最後に「No default root or user password are set by LXC.」と表示されていましたよね。
コンテナの停止
コンテナを停止するには lxc-stop コマンドを使用します。
使用法:lxc-stop --name=コンテナ名
-n, --name= | コンテナ名を指定 |
---|---|
-r, --reboot | コンテナを再起動 |
-W, --nowait | シャットダウンまたは再起動が完了するのを待たない |
-t, --timeout= | ハードストップする前に待機する時間(秒)を指定 |
-k, --kill | クリーンシャットダウンを要求するのではなく、コンテナを強制終了する |
--nolock | APIロックの使用を避ける |
--nokill | クリーンシャットダウンのみを要求し、タイムアウト後に強制終了しない |
--rcfile= | ロードする設定ファイルを指定 |
例)
# lxc-stop ubuntu
コンテナの破棄
コンテナを破棄するには lxc-destroy コマンドを使用します。
使用法:lxc-destroy --name=コンテナ名 [-f] [-P lxcpath]
-n, --name=NAME | コンテナ名を指定 |
---|---|
-s, --snapshots | すべてのスナップショットを含めて破棄 |
-f, --force | コンテナがシャットダウンするのを待つ |
--rcfile= | ロードする設定ファイルを指定 |
# lxc-destroy ubuntu
公開日時:2020年08月27日 11:49:47
最終更新日時:2022年03月13日 08:33:23