Proxmoxで遊びまくっていて、Linuxコンテナ(以下LXD)に興味を持った。
Proxmox内部のバーチャルマシン(以下VM)の内部に手動でLXDを作成、Proxmox外部のPCから直接LXDにSSHで接続を行ってみた記録。
外部PCからProxmox内部のVMにSSHで接続時の操作ログを備忘録と示しておく。
登場人物
neo3016@neo3016-prox = Proxmox内のVM(ubuntu)
root@ubuntu18 = neo3016@neo3016-prox内で作成したLXDのroot
neo3017@ubuntu18:/root$ = root@ubuntu18内で作成したsudoユーザ
※snapについて
「Snap」は、Ubuntu Linuxディストリビューションを開発している英Canoincal社によって提供されているパッケージ管理のシステムです。「Snap」パッケージは、ソフトウェアの実行に必要なライブラリなどのすべてのソフト(環境)が含まれれており、自己完結型パッケージとも呼ばれています。このため、追加で依存関係をインストールする必要はなく、どのLinuxバージョンでも同じバイナリーをそのまま駆動できるユニバーサルパッケージとも呼ばれています。ある意味、ディストリビューション固有のパッケージ管理(deb, rpm, aptなど)に代わるものです。
操作ログ
※LXCをインストールする。 neo3016@neo3016-prox:~$ sudo snap install lxd ※LXC の初期化←これがないとスペースがないとはじかれる←基本的にデフォルト(enter連打)でおk neo3016@neo3016-prox:~$ sudo lxd init ※ubuntu:18.04でubuntu18というコンテナを作成する。 neo3016@neo3016-prox:~$ sudo lxc init ubuntu:18.04 ubuntu18 Creating ubuntu18 Retrieving image: Unpack: 100% (1.72GB/s) Retrieving image: Unpack: 100% (1.72GB/s) ※コンテナを確認する(ubuntu20は以前に作成済) neo3016@neo3016-prox:~$ sudo lxc ls +----------+---------+---------------------+-----------------------------------------------+-----------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +----------+---------+---------------------+-----------------------------------------------+-----------+-----------+ | ubuntu18 | STOPPED | | | CONTAINER | 0 | +----------+---------+---------------------+-----------------------------------------------+-----------+-----------+ | ubuntu20 | RUNNING | *.*.*.* (eth0) | | CONTAINER | 0 | +----------+---------+---------------------+-----------------------------------------------+-----------+-----------+ ※コンテナを起動する neo3016@neo3016-prox:~$ sudo lxc start ubuntu18 ※コンテナのbashを起動する → プロンプトが起動する。 neo3016@neo3016-prox:~$ sudo lxc exec ubuntu18 -- /bin/bash ※コンテナの内部に潜入 root@ubuntu18:~# ※とりま、apt-get updateやってみる。 root@ubuntu18:~# sudo apt-get update ※疎通不可などのエラーは無 ※sshの設定する。 root@ubuntu18:~# sudo vim /etc/ssh/sshd_config →PasswordAuthentication yes にする。 ※sshを再起動する。 root@ubuntu18:~# sudo systemctl restart ssh ※sshでログインするユーザーを作成する。 root@ubuntu18:~# sudo adduser neo3017 Adding user `neo3017' ... Adding new group `neo3017' (1001) ... Adding new user `neo3017' (1001) with group `neo3017' ... Creating home directory `/home/neo3017' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for neo3017 Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] ※作成したユーザーをsudoのグループに入れる。 root@ubuntu18:~# su sudo gpasswd -a neo3017 sudo Adding user neo3017 to group sudo ※作成したユーザーに切り替え root@ubuntu18:~# su neo3017 ※とりま、sudo が使えるか apt-get updateしてみる。 neo3017@ubuntu18:/root$ sudo apt-get update ※疎通不可などのエラーは無 ※rootユーザに一旦戻る neo3017@ubuntu18:/root$ exit ※vsftpdをコンテナ内にインストールする。 root@ubuntu18:~# sudo apt-get install -y vsftpd ※vsftpdの設定ファイルを編集する。 root@ubuntu18:~# sudo vim /etc/vsftpd.conf ーーーーーーーーーーーーーーーーーーーーーーーーーー ※ 書き込み許可(コメント解除) write_enable=YES ※ chroot許可(コメント解除) chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list allow_writeable_chroot=YES ←追記 ーーーーーーーーーーーーーーーーーーーーーーーーーー ※chroot_listを新規作成する(touch(タイムスタンプをいじるコマンド)で未指定ファイル指定=新規作成) root@ubuntu18:~# sudo touch /etc/vsftpd.chroot_list ※vsftpdを再起動する。 root@ubuntu18:~# sudo systemctl restart vsftpd ※vsftpdの状況を確認する。 root@ubuntu18:~# sudo systemctl status vsftpd ● vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: e Active: <span style="color: #ff0000">active</span> (running) since Fri 2023-11-10 12:13:18 UTC; 26s ago ※sshの状況を確認する。 root@ubuntu18:~# sudo systemctl status ssh ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enab Active:<span style="color: #ff0000"> active </span>(running) since Fri 2023-11-10 12:08:42 UTC; 5min ago root@ubuntu18:~#
結び(読まなくてよい)
コンテナの作成~SSH,FTPの設定をしたわけだけど、躓いたのは、コンテナの作成だった。
lxc-createのコマンドからのコンテナ作成は、コンテナの作成はできたけど、ネットワーク周りの上手くいかなくて諦めてしまった。 lxc コマンドで行う方法は、あっさり外部NWと繋がったので拍子抜けした。
わざわざbridgeを作る必要もなかった。 SSH接続するためにsudoユーザーを作るところも躓きポイントだった。 コンテナ作成,SSH,FTPが自在にできるようになったので、コンテナくしゃくしゃポイができるようになった。いい感じの砂場を手に入れた気分。
追記:VMware内部のVM内にLXDを作成した場合にPingが通らない問題の解決法
UFWとか色々設定をしたけど、一向にホストPC(VMwareと同一NW)からVMware内のVM内部のコンテナに
Pingが通らなかった。その解決方法
VMware内のVM内部でlxcのネットワーク周りの設定をする。→具体的にはipv4のnatをture→falseに変えた。
ちな、確認コマンドは sudo lxc network show lxdbr0(←設定されているインターフェース名前)
ちな、ブロードバンドルーターにコンテナ向きのスタティックルートを追加しているよ。
コンテナ向きネットワーク→VMwareのVMのIPをデフォルトゲートウェイ
これを解決するために数時間、時間食った。
※追記 sudo lxc network set lxdbr0 ipv4.nat false にすると、コンテナ内部から外部のNWに接続が出来なくなった(apt-get updateが出来なくなってしまった。)。ので sudo lxc network set lxdbr0 ipv4.nat trueにしたところ、接続ができた。 trueに戻しても内部NWから各コンテナにpingが通っていた。 上記設定は不要なのか・・・・。 わからなくなってきた。
WSLのアップデート→再起動でsnapが使えるようになった
WSLのアップデート@powershell
WSLの再起動(シャットダウンだけど)@powershell
WSLのconfig(初期値)変更の必要はなし
ps コマンドで起動しているプロセスの確認
aux の意味
a:端末を使っているすべてのプロセス
u:プロセスを実行しているユーザ
x:端末で使っていないすべてのプロセス
∴システムが起動しているすべてのプロセスを表示と同様
systemdが動ているので、ほらほらシリーズ
systemcltも動く
snap も動く