お金をかけずにサーバーの勉強をしよう

Linuxシステムコンテナ(LXD) 3

2025年4月3日

メニューへ戻る

LXDの WEB-UIを使って作った Linuxシステムコンテナは使いものになるのか。

Linuxシステムコンテナ(LXD) 1」で LXDの Web UIを使えるようにし、
Linuxシステムコンテナ(LXD) 2」で家庭内LANの他のノードからアクセスできる場所に Linuxシステムコンテナを作ってみました。

ここではでき上がった Linuxシステムコンテナを使ってみましょう。

前回ここまで来たところからスタートします。
LXD WEB-UI 1


1.sshで他ノードからログインできるようにする

Web UI上のターミナルやコンソールでは使い辛くて仕方ないので、やはりクライアントから sshで繋ぎたいです。

ただ、このコンテナのテンプレート(Ubuntu 24.04)の sshdはパスワード認証を無効にしてあるので、まだ公開鍵を登録していない状態では最初のログインができません。

まずは sshdの設定を変えてパスワード認証を有効にします。

コンテナの [/etc/ssh/sshd_config.d/60-cloudimg-settings.conf]ファイルの以下の箇所を書き換えます。
(このファイルもまた自動で作られたものなのでイジらない方が良さげなものではある→このファイルはリネームして、別ファイルを作るのが良いのかも。)

PasswordAuthentication no
  ↓
PasswordAuthentication yes

設定を有効にするため、sshdを再起動します。

root@Container1:~# systemctl restart ssh

それから一般ユーザーが一人もいませんので、ワタクシ用に [subro]ユーザーを作ります。

root@Container1:~# adduser subro
Adding user `subro' ...
Adding new group `subro' (1001) ...
Adding new user `subro' (1001) with group `subro' ...
The home directory `/home/subro' already exists.  Not copying from `/etc/skel'.
New password: [subro]ユーザーの新規パスワード
Retype new password: パスワードをもう一回
passwd: password updated successfully
Changing the user information for subro
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] Y

できました。

[subro]ユーザーが sudoコマンドを使えるようにしておきます。

root@Container1:~# usermod -aG sudo subro

これで OKのはずです。

クライアントの Lubuntu 24.04から sshでログインしてみました。

subro@Lubuntu2404:~$ ssh subro@192.168.1.23
subro@192.168.1.58's password: さっき設定した[subro]ユーザーのパスワード
Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 6.8.0-57-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Thu Apr  3 09:29:56 UTC 2025

  System load:           1.08
  Usage of /:            11.1% of 4.36GB
  Memory usage:          1%
  Swap usage:            0%
  Processes:             22
  Users logged in:       0
  IPv4 address for eth0: 192.168.1.23
  IPv6 address for eth0: 2408:82:a8:0:216:3eff:fe78:d187


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


Last login: Wed Apr  2 12:25:12 2025 from 192.168.1.102
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

subro@Container1:~$

問題なくログインできました。
日本語環境にするか…

subro@Container1:~$ sudo apt install -y language-pack-ja
〜〜〜 省略 〜〜〜

subro@Container1:~$ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"

subro@Container1:~$ sudo timedatectl set-timezone Asia/Tokyo

これで一度コンテナの再起動をします。

WEB-UIの画面にあるクルッと矢印が回ったボタンを押します。
LXD WEB-UI 2

Restartを押します。
LXD WEB-UI 3

画面はクルクルしていていつまで経っても終わらない感じですが、実は再起動がエラく速いです。
F5を押して画面をリロードします。

ほぼ即時ですね。
これが仮想マシンとは違う所。

sshのセッションは当然切れますので、入り直して dateコマンドで日付を取ってみました。

subro@Container1:~$ date
2025年  4月  3日 木曜日 18:43:55 JST

このあと nginxを入れるとか、固定IPにするとか、色々書こうと思ったんですが、余り意味が無いので書くのを止めます。

何故かと言うと、仮想マシンの Ubuntu Serverをいじってるのと変わらないからです。


2.おまけ

独自に IPアドレスを持っている Linuxコンテナが動いていていると LXDをインストールしたホストの方ではネットワーク的にどう見えるのだろうか?と思い、ipコマンドで確認してみました。

subro@UbuntuServer2404-1:~$  ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether 00:0c:29:53:00:54 brd ff:ff:ff:ff:ff:ff
    altname enp2s0
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 5e:a0:4e:9d:f3:f2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.103/24 brd 192.168.1.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr noprefixroute
       valid_lft 14162sec preferred_lft 12362sec
    inet6 fe80::5ca0:4eff:fe9d:f3f2/64 scope link
       valid_lft forever preferred_lft forever
9: vethcdd8be3f@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP group default qlen 1000
    link/ether 8e:9c:38:fb:4d:05 brd ff:ff:ff:ff:ff:ff link-netnsid 0

9番目の何かができていました。


==========
さて、Linuxシステムコンテナを作ってみる話はこれで終わりなんですが、できあがったコンテナは仮想マシンで作った Ubuntu Serverの環境と特に変わりがないように見えます。

ということは、検証環境として複数の Ubuntu Server(その他 Linux OS)を使いたい場合、コンテナとして作った方が起動やらが早くて楽なのかも知れません。

私は今後の検証に Linuxシステムコンテナを使っていくと思います。

このページを作っている間に閃いたのは、Win11に移行できない自作PC(例えば「寝かせていた自作PCを Ubuntuで復活させる」のとか)には Ubuntu Serverをインストールして LXDで Linuxサーバーをいくつも立てたらどうだろう?、ということでした。

今年10月の Win10サポート終了に伴って「サーバーのお勉強のためにメモリを一杯積んだ自作PCを新しく作らなきゃ。お金がかかるなぁ。今ある PCも勿体ないのに…。」と思案してたんですが、LXDや Proxmoxを使って Linuxサーバーは古い自作PCで、新しいPCと VMware Workstation Proには Windowsサーバーだけやらせれば良いのでは?」と。

それなら Win11用のPCはメモリが 16GBもありゃ十分じゃない!とも。
ミニPCにすれば古いデスクトップと一緒に置いても場所も取らんだろうって。

何か光明が見えてきた気がします。


Ubuntu 24.04ベースの本が少ない…といより Linuxの日本語書籍が少な過ぎ…
この 2版が 2024年11月23日に出たようです。