概要:
LXD は Linux コンテナ(LXC)のオープンソースコンテナ管理拡張です。LXD は既存の LXC の機能を改善し、Linux コンテナの構築と管理のための新しい機能と機能を提供します。
1. カーネルのコンパイル#
1.1. カーネルの設定を調整する#
このリポジトリを使用して設定を追加します
git fetch https://github.com/lateautumn233/android_kernel_docker main
git merge -s ours --no-commit --allow-unrelated-histories --squash FETCH_HEAD
git read-tree --prefix=docker -u FETCH_HEAD
echo "source \"docker/Kconfig\"" >> arch/arm64/Kconfig
git commit -a -m "Imported docker/ from https://github.com/lateautumn233/android_kernel_docker"
その後、自分でコンパイルしてください
🥵🥵🥵
1.2. カーネルパッチ#
- パニックの可能性がある問題を修正
--- orig/net/netfilter/xt_qtaguid.c 2020-05-12 12:13:14.000000000 +0300
+++ my/net/netfilter/xt_qtaguid.c 2019-09-15 23:56:45.000000000 +0300
@@ -737,7 +737,7 @@
{
struct proc_iface_stat_fmt_info *p = m->private;
struct iface_stat *iface_entry;
- struct rtnl_link_stats64 dev_stats, *stats;
+ struct rtnl_link_stats64 *stats;
struct rtnl_link_stats64 no_dev_stats = {0};
@@ -745,13 +745,8 @@
current->pid, current->tgid, from_kuid(&init_user_ns, current_fsuid()));
iface_entry = list_entry(v, struct iface_stat, list);
+ stats = &no_dev_stats;
- if (iface_entry->active) {
- stats = dev_get_stats(iface_entry->net_dev,
- &dev_stats);
- } else {
- stats = &no_dev_stats;
- }
/*
* If the meaning of the data changes, then update the fmtX
* string.
- cgroup に cpuset プレフィックスがない問題を修正
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
@@ -3786,6 +3786,10 @@ static int cgroup_add_file(struct cgroup_subsys_state *css, struct cgroup *cgrp,
cfile->kn = kn;
spin_unlock_irq(&cgroup_file_kn_lock);
}
+ if (cft->ss && (cgrp->root->flags & CGRP_ROOT_NOPREFIX) && !(cft->flags & CFTYPE_NO_PREFIX)) {
+ snprintf(name, CGROUP_FILE_NAME_MAX, "%s.%s", cft->ss->name, cft->name);
+ kernfs_create_link(cgrp->kn, name, kn);
+ }
return 0;
}
- ANDROID_PARANOID_NETWORK を無効にする
scripts/config --file arch/arm64/configs/<defconfig> -
d ANDROID_PARANOID_NETWORK
1.3. カーネルの設定を確認する#
完全なカーネル設定を生成した後、次のコマンドを実行して設定を確認します
wget https://raw.githubusercontent.com/lxc/lxc/main/src/lxc/cmd/lxc-checkconfig.in -O lxc-checkconfig
chmod a+x lxc-checkconfig
CONFIG=out/.config lxc-checkconfig
具体的なカーネルのコンパイル方法は省略します
以下省略 n 字
2. lxd モジュールのインストール#
このmagisk モジュールをダウンロードしてインストールし、再起動します
2.1. コンテナの作成#
任意のターミナルアプリを使用して次のコマンドを実行します
. /data/lxd/env.sh
次に初期化します
$ lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (btrfs, dir, lvm) [default=btrfs]:
Would you like to create a new btrfs subvolume under /var/lib/lxd? (yes/no) [default=yes]:
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]:
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
Would you like the LXD server to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:
コンテナを作成します
lxc launch ubuntu:23.04 ubuntu
# lxc launch ディストリビューション:バージョン コンテナ名
lxc コンテナのパスワードを調整します
lxc exec コンテナ名 /bin/passwd
# バイナリファイルの場所は異なる場合があります
2.1. ネットワークの設定#
(設定は必要ありません、自動的に処理されます)
コンテナがネットワークにアクセスできない場合は、./network.sh を実行してください
2.2. ウェブインターフェース#
要件に従って ip:8443 にアクセスして操作してください
2.3. ポートマッピング#
lxc config device add qiuqiu ssh proxy listen=tcp::外部ip connect=tcp::コンテナip
注:許可なく転載することは禁止されています
にゃーにゃーにゃーにゃーにゃー