0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

おうちサーバー構築報告:仮想マシンとDocker on Proxmox VE with ZFS

Last updated at Posted at 2024-12-09

能書き

おうちサーバー構築報告:予告からのおうちサーバー構築です。前回はLXCコンテナを構築しました。今回はQEMU/KVM仮想マシンを構築します。

目標

  • Proxmox VE にQEMU/KVM仮想マシンを作成して、ゲストマシンを立ち上げる
    • OSは Ubuntu Server 24.04 LTS
  • ゲストマシン内でdockerを動かす

参考文献

ISOイメージの準備

まず、今回インストールしたい Ubuntu Server 24.04 LTS のISOイメージを準備します。方法としては、

  1. ISOイメージをローカルにダウンロードしてからProxmoxにアップロードする
  2. Proxmox上でISOイメージのダウンロードURLを指定し、直接ダウンロードする

という2種類があります。以前ダウンロードしたISOファイルがありますので、今回は1.の方法を試みます。

データセンター>primary(ProxmoxVEをインストールしたホスト名)>local (primary)/ISOイメージ の画面でアップロードボタンをクリック。するとアップロードダイアログが表示されますので、ダウンロードされているISOイメージ ubuntu-24.04-live-server-amd64.iso を選択します。

image.png

アップロードボタンをクリックすると暫く待たされます。

image.png

Task Viewer: データのコピー ウィンドウに TASK OK が表示されたら完了…のようです。正直、どうしてこんなインターフェースになっているのか、よくわかりません…

image.png

Task Viewer: データのコピー ウィンドウのクローズボタンをクリックして閉じると、アップロードしたISOファイルが表示されています。

image.png

仮想マシンの作成

画面右上のVMを作成ボタンをクリックします。そうすると「作成: 仮想マシン」ダイアログが表示されるので、必要な項目を埋めます。

  • ノード: primary (ホストマシン名)
  • VM ID: 102 (デフォルト値; このProxmox VEインストールでVMを識別するために使用される一意の番号、どうやらコンテナと合わせて一意になる模様)
  • 名前: vm1 (コンテナのマシン名)
  • リソースプール: all (前回作ったプール)
  • ブート時に起動: チェックを入れる
  • 開始/停止順: any (デフォルト値)
  • 開始時の遅延: default (デフォルト値)
  • シャットダウンタイムアウト: default (デフォルト値)

image.png

次へボタンでOSの設定画面になります。

  • CD/DVDイメージファイル(iso)を使用
    • ストレージ: local
    • ISOイメージ: ubuntu-24.04-live-server-amd64.iso (先程アップロードしたISOイメージ)
  • ゲストOS:
    • 種別: Linux (デフォルト値)
    • バージョン: 6.x - 2.6 Kernel (デフォルト値)

image.png

次へボタンでシステム設定画面になります。

  • グラフィックカード: 既定 (デフォルト値)
  • マシン: 既定 (i440fx) (デフォルト値)
  • ファームウェア
    • BIOS: 既定 (SeaBIOS) (デフォルト値)
  • SCSIコントローラ: VirtIO SCSI single (デフォルト値)
  • Qemuエージェント: チェックを外す (デフォルト値)
  • TPM追加: チェックを外す (デフォルト値)

image.png

次へボタンでディスク設定画面になります。

  • ディスク
    • バス/デバイス: SCSI 0 (デフォルト値)
    • ストレージ: local-zfs (デフォルト値)
    • ディスクサイズ(GiB): 256
    • キャッシュ: 既定(キャッシュなし) (デフォルト値)
    • 中止: チェックを外す (デフォルト値)
    • IO thread: チェックを入れる (デフォルト値)
    • SSDエミュレーション: チェックを外す (デフォルト値)
    • リードオンリ: チェックを外す (デフォルト値)
    • バックアップ: チェックを入れる (デフォルト値)
    • 複製をスキップ: チェックを外す (デフォルト値)
    • 非同期IO: 既定(io_uring) (デフォルト値)
  • 帯域幅
    • 読取り制限(MB/s): 無制限 (デフォルト値)
    • 書込み制限(MB/s): 無制限 (デフォルト値)
    • 読取り制限(ops/s): 無制限 (デフォルト値)
    • 書込み制限(ops/s): 無制限 (デフォルト値)
    • Read max burst (MB): 既定値 (デフォルト値)
    • Write max burst (MB): 既定値 (デフォルト値)
    • Read max burst (ops): 既定値 (デフォルト値)
    • Write max burst (ops): 既定値 (デフォルト値)

image.png

image.png

次へボタンでCPU設定画面になります。

  • ソケット: 1 (デフォルト値)
  • コア: 4
  • 種別: x86-64-v2-AES (デフォルト値)
  • VCPUs: 4 (デフォルト値)
  • CPUの上限: 無制限 (デフォルト値)
  • CPUアフィニティ: すべてのコア (デフォルト値)
  • CPUユニット: 100 (デフォルト値)
  • NUMMAを有効化: チェックを外す (デフォルト値)
  • Extra CPU Flags: →すべてデフォルト値とする

image.png

次へボタンでメモリ設定画面になります。

  • メモリ(MiB): 4096
  • 最小メモリ値(MiB): 4096 (デフォルト値)
  • Ballooningデバイス: チェックを入れる (デフォルト値)

image.png

次へボタンでネットワーク設定画面になります。

  • ネットデバイスなし: チェックを外す (デフォルト値)
  • ブリッジ: vmbr0 (デフォルト値)
  • VLANタグ: no VLAN (デフォルト値)
  • ファイアウォール: チェックを入れる (デフォルト値)
  • モデル: VirtIO(準仮想化) (デフォルト値)
  • MACアドレス: auto (デフォルト値)
  • 切断: チェックを外す (デフォルト値)
  • MTU: 1500 (1 = bridge MTU) (デフォルト値)
  • Rateの制限値(MB/s): unlimited (デフォルト値)
  • Multiqueue: (空欄) (デフォルト値)

image.png

次へボタンで確認画面になります。

image.png

完了ボタンで仮想マシンが作成されますので、データセンター>primary>102(vm1) を選択し、画面右上の開始ボタンをクリックします。

image.png

データセンター>primary>102(vm1)/コンソール を選択すると、インストーラが動いている様子を確認できます。ここでUbuntuのインストーラを操作してインストールします。インストール内容は一般的な内容にする…つもりでしたが、唯一、dockerだけこの段階で仕込みを指定しました。詳細は省略。

image.png

画面の下に [ Reboot Now ] が表示されたら、これを選択します。

image.png

CD-ROMのunmountに失敗しているようです。

image.png

手動でイジェクトしましょう。データセンター>primary>102(vm1)/ハードウェア/CD/DVDドライブ(ide2) を選択。

image.png

編集ボタンをクリックするとダイアログが表示されるので、「メディアを使用しない」を選択します。

image.png

OKしてコンソールを表示。右上のシャットダウンボタンから再起動を選択すると確認ダイアログが表示されます。

image.png

はい…利きませんね。

image.png

右上のシャットダウンボタンからリセットを選択してみます。同様に確認ダイアログが表示されるのではいします。すると今度は再起動します。

image.png

これで仮想マシンの作成は完了です。

ssh接続

普段使いのクライアントマシンからsshで接続してみます。

クライアントマシン
>ssh administrator@172.16.1.102
The authenticity of host '172.16.1.102 (172.16.1.102)' can't be established.
ED25519 key fingerprint is SHA256:AJtPhN8RIGVQxYM3mh4vl8XaLuGEKK0SfZ3vpictu3E.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.16.1.102' (ED25519) to the list of known hosts.
administrator@172.16.1.102's password:
Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.8.0-49-generic x86_64)

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

 System information as of Sun Dec  8 12:34:23 PM UTC 2024

  System load:  0.06              Processes:              133
  Usage of /:   6.5% of 97.87GB   Users logged in:        0
  Memory usage: 7%                IPv4 address for ens18: 172.16.1.102
  Swap usage:   0%

Expanded Security Maintenance for Applications is not enabled.

138 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

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



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

接続できたようです。

Docker確認

Dockerを仕込んでおいたので、確認してみます。

クライアントマシン
$ docker --version
Docker version 27.2.0, build 3ab4256

hello-worldもこの通り。

クライアントマシン
$ sudo docker run hello-world
[sudo] password for administrator:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:305243c734571da2d100c8c8b3c3167a098cab6049c9a5b066b6021a60fcb966
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

削除

終わったら削除しましょう。

まず仮想マシンを止めます。

クライアントマシン
sudo shutdown -h now

データセンター>primary>102 (vm1) の画面右上のMoreの中に「削除」があります。

image.png

「削除」を選択すると確認ダイアログが表示されます。

  • 確認のためIDを入力してください(102): 102 (画面に表示されているID)
  • ジョブ設定から削除: チェックを外す(デフォルト値)
  • ゲストによって所有されている未使用のディスクを破棄: チェックを外す(デフォルト値)

image.png

何やらシステムログが表示されて、削除されました。

image.png

仕舞い

Proxmox VE 上でdockerを使える仮想マシンを作成できました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?