Dockerのベース環境としては、for DesktopやWSL2などがありますが、今回はProxmoxにミニマルなLinux VMを立てて、その上に構築してみます。
使用する環境
- Proxmox VE
- Turnkey Core (Debianベース。軽いのと初期設定が少ないので気に入ってます)
- Docker
- Portainer (DockerをGUIで管理するミドルウェア)
結論
DockerをProxmox VMの上に構築することで、バックアップやスナップショットの便利さを得つつ、Portainerで手軽なデプロイができるので、検証環境としてオススメです。
VMの作成
Turnkey Core Linuxの設定
基本的にはウィザードの標準設定を進めていけば問題ありません。
Guidedを選びます。
rootパスワードを設定します。
カーネルやセキュリティのアップデートをします。
こちらのIPアドレスで起動が完了しました。
Dockerのインストール
SSHで接続し、以下のコマンドから自動インストールします。
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
起動の確認
systemctl status docker
RunningになっていればOKです。
(省略しましたが、Turnkey Core Linuxのタイムゾーンは前もってJSTにしておいたほうがいいと思います。)
Portainerのインストール
DockerをGUIで管理するミドルウェアです。こちらのマニュアル通りに行います。
https://thehomelab.wiki/books/docker/page/installing-docker-and-portainer-to-use-with-the-edge-agent
docker run -d \
--name="portainer" \
--restart on-failure \
-p 9000:9000 \
-p 8000:8000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Status: Downloaded newer image for portainer/portainer-ce:latest
という結果になっていれば成功です。
Portainerにアクセス
<DockerベースVMのIPアドレス>:9000にアクセスします。
コンテナ一覧が表示されます。右の「Add Containter」を選択します。
コンテナのデプロイ
今回、Apacheをデプロイしてみます。検索フォームからapacheで検索すると、httpdという名前であることが分かったので、再入力しています。
NAT用のポートをランダムにして、デプロイ開始。ポートは手動で指定することもできます。
Apacheが追加されました。右のPublished Portが「外部ポート:内部ポート」のNATの値になります。
動作確認
<DockerベースVMのIPアドレス>:32768にアクセスします。ポート番号は適宜変更してください。
まとめ & メモ
- DockerをProxmox VMの上に構築することで、バックアップやスナップショットの便利さを得つつ、Portainerで手軽なデプロイができるので、検証環境としてオススメです。
- 今回コンテナのNATポートをランダムにしましたが、ProxmoxでのベースVMリストア後、ポートが変わってしまう現象がありました。ポートは手動で設定するのが良いかもしれません。
参考にさせていただいたサイト
Docker in Proxmox V7 LXC with Turnkey Core - Lower Resources by 80% Compared to VMs
https://www.youtube.com/watch?v=gXuLiglJceY
Installing Docker and Portainer to use With the Edge Agent
https://thehomelab.wiki/books/docker/page/installing-docker-and-portainer-to-use-with-the-edge-agent