Linux lxc コマンド

Linux コマンド大全


LXC (Linux Containers) はオペレーティングシステムレベルの仮想化技術であり、単一の Linux システム上で複数の分離された Linux 環境(コンテナ)を実行できます。従来の仮想マシンとは異なり、LXC コンテナはホストシステムのカーネルを共有するため、より軽量で効率的です。

LXC は仮想マシンに近い分離性を提供しつつ、ネイティブに近いパフォーマンスの実行効率を維持します。これは Docker などのコンテナ技術の基盤です。


LXCの基本概念

コンテナ (Container)

コンテナは軽量で分離されたプロセス空間であり、独自のファイルシステム、ネットワーク設定、プロセスツリーを持ちます。

テンプレート (Template)

テンプレートは、コンテナを作成するための事前定義された設定とファイルシステムレイアウトです。LXC は ubuntu、debian、centos などの複数のテンプレートを提供しています。

コントロールグループ (cgroups)

Linux カーネルの機能で、プロセスグループのリソース使用量(CPU、メモリ、ディスク I/O など)を制限、記録、分離するために使用されます。

名前空間 (Namespaces)

Linux カーネルの機能で、PID、ネットワーク、マウントポイント、UTS などの名前空間を含むプロセス分離を提供します。


LXC コマンド構文

基本コマンド形式:

lxc [选项]  [参数]

よく使うグローバルオプション:

  • --debug:デバッグ出力を有効にする
  • --logfile=<文件>:ログファイルを指定する
  • --version:バージョン情報を表示する
  • --help:ヘルプ情報を表示する

LXC よく使うコマンド

コンテナ管理

コンテナの作成

lxc-create -n  -t  [-- ]

例:

lxc-create -n mycontainer -t ubuntu -- -r jammy

コンテナの起動

lxc-start -n  [-d]  # -d 表示在后台运行

コンテナの停止

lxc-stop -n 

コンテナの削除

lxc-destroy -n 

コンテナ情報

コンテナを一覧表示

lxc-ls [--active]  # --active 只显示运行中的容器

コンテナの状態を確認

lxc-info -n 

コンテナコンソールを表示

lxc-console -n 

コンテナ設定

コンテナのコピー

lxc-copy -n  -N 

コンテナの凍結/解凍

例

lxc-freeze -n   # 凍結
lxc-unfreeze -n   # 解凍

コンテナ設定の変更

lxc-config -n  -s =

LXC 設定ファイル

各コンテナの設定ファイルは次の場所にあります:

/var/lib/lxc//config

よくある設定項目:

例

# ネットワーク設定
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up

# リソース制限
lxc.cgroup.cpu.shares = 512
lxc.cgroup.memory.limit_in_bytes = 512M

実践例

例1:Ubuntuコンテナの作成と実行

例

# コンテナの作成
lxc-create -n myubuntu -t ubuntu -- -r jammy

# コンテナの起動
lxc-start -n myubuntu -d

# コンテナコンソールに入る
lxc-console -n myubuntu

# コンテナ内でコマンドを実行
lxc-attach -n myubuntu -- apt update

例2:コンテナのリソース制限

コンテナの設定ファイルを編集/var/lib/lxc/myubuntu/config、追加:

例

lxc.cgroup.cpu.shares = 256
lxc.cgroup.memory.limit_in_bytes = 256M

次にコンテナを再起動して設定を反映させます:

例

lxc-stop -n myubuntu
lxc-start -n myubuntu -d

よくある問題の解決

問題1:コンテナを起動できない

  • ログを確認:cat /var/log/lxc/<容器名>.log
  • カーネルがLXCをサポートしていることを確認:grep CONFIG_CGROUP /boot/config-$(uname -r)

問題2:ネットワーク接続の問題

  • ブリッジネットワークを確認:brctl show
  • lxc-net がインストールされていることを確認:apt install lxc-net

問題3:権限の問題

  • root ユーザーでコマンドを実行
  • またはユーザーを lxc グループに追加:usermod -aG lxc <用户名>

上級使用

LXC API の使用

LXC は Python バインディングを提供しており、プログラムによるコンテナ管理が可能です:

例

import lxc

container = lxc.Container("mycontainer")
if not container.defined:
    container.create("ubuntu", {"release": "jammy"})
container.start()

コンテナスナップショット

例

lxc-snapshot -n   # スナップショットの作成
lxc-snapshot -n  -r snap0  # スナップショットの復元

コンテナ移行

例

# ソースホスト上
lxc-checkpoint -n  -D /path/to/dump

# ターゲットホスト上
lxc-restore -n  -D /path/to/dump

まとめ

LXC は軽量な仮想化ソリューションを提供し、分離は必要だが完全な仮想マシンは不要なシーンに非常に適しています。lxc コマンドを習得することで、Linux コンテナを効率的に作成、管理、保守できます。LXC への理解を深めることで、カスタム設定、リソース制限、コンテナオーケストレーションなどの高度な機能をさらに探求できます。


Linux コマンド大全

その他の拡張