Linux lxc コマンド
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-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.memory.limit_in_bytes = 256M
次にコンテナを再起動して設定を反映させます:
例
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 バインディングを提供しており、プログラムによるコンテナ管理が可能です:
例
container = lxc.Container("mycontainer")
if not container.defined:
container.create("ubuntu", {"release": "jammy"})
container.start()
コンテナスナップショット
例
lxc-snapshot -n -r snap0 # スナップショットの復元
コンテナ移行
例
lxc-checkpoint -n -D /path/to/dump
# ターゲットホスト上
lxc-restore -n -D /path/to/dump
まとめ
LXC は軽量な仮想化ソリューションを提供し、分離は必要だが完全な仮想マシンは不要なシーンに非常に適しています。lxc コマンドを習得することで、Linux コンテナを効率的に作成、管理、保守できます。LXC への理解を深めることで、カスタム設定、リソース制限、コンテナオーケストレーションなどの高度な機能をさらに探求できます。
その他の拡張