動機
コンテナの状態がホスト側にも影響するか確認したかった為、GUI上でコンテナ管理できるPortainerを使用しました。
コンテナにstressコマンドで負荷を掛けた場合、コンテナとリソースを共有しているホストOSにも影響が生じると考えました。
結論
コンテナに負荷を掛けた場合、ホスト側にも負荷が掛かっていることが確認できた。
またコンテナのリソース管理はPortainerが便利であった。
環境
Proxmox上にUbuntuを用意。
Ubuntuの上に各種コンテナをデプロイしている状態。
⇩私の理解
事前知識
- Portainerについて
GUI上でコンテナ管理ができるぐらいの知識。(具体的に何を確認できるのかまでは理解できていない。) - Proxmoxについて
物理的なサーバー上で複数の仮想サーバーを動作可能なハイパーバイザー型の仮想化技術。
Dockerを学習する上で現在Proxmox上にUbuntuホストを用意している。
確認方法
- Portainerコンテナの構築
- Portainerにログイン
- PortainerからNextCloudコンテナのリソースを確認
- NextCloudコンテナへログイン
- NextCloudコンテナでstressコマンドの実行
- Portainerからコンテナの状態確認
- Proxmox上からホストの状態確認
1. Portainerコンテナの構築
手順1:ボリュームの作成
docker volume create portainer_data
手順2:コンテナの作成
docker run -d \
-p 9000:9000 \
-p 8000:8000 \
--name=portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer
※補足
「docker run -d \」…バックグラウンドでコンテナ作成&実行
「-p 9000:9000」…ホストのポートとコンテナのポートを紐づけ。
「-p 8000:8000」…portainerコンテナ以外のDockerホストとの通信用に設定。
「--name=portainer \」…コンテナに「portainer」という名前を設定。
「--restart=always \」…システム再起動後、自動的に起動するよう設定。
「-v /var/run/docker.sock:/var/run/docker.sock \」…Dockerデーモンとの通信のためにDockerソケットをマウントするよう設定。
「-v portainer_data:/data \」…手順1で作成した「portainer_data」(ボリューム)を/dataにマウントするよう設定。(Portainerのデータはこのボリュームに保存される。)
2. Portainerコンテナにログイン
パスワードは12文字以上、3種類以上の文字種を使用しないといけなかった
3. PortainerからNextCloudコンテナのリソースを確認
-
ダッシュボードから
以下項目が確認できるみたい…パッと理解できるのはContainersやImagesぐらい。
とりあえずContainersへ進む
・stack
・images
・Networks
・Containers
・Volumes
・CPUs
-
「Stats」ボタンからメモリとCPUの使用率がリアルタイムで表示されるみたい。
…ということはコンテナにも仮想的にCPU、メモリなどのリソースが割り振られているってこと?
4. NextCloudコンテナへログイン
docker exec -it nextcloud /bin/bash
5. NextCloudコンテナでstressコマンドの実行
stress --cpu 2 --vm 2 --vm-bytes 1G
補足
2つのCPUコアに対して負荷をかけ、同時に2つの仮想メモリプロセスを生成し
それぞれに1GBのメモリを使用します。
6. Portainerからコンテナの状態確認
7. Proxmox上からホストの状態確認
まとめ
コンテナ上で負荷を掛けた状態では、ホスト側にも負荷が生じた。
stressコマンドでは各種リソースにどの程度負荷をかけるか調整可能なため、
例えばメモリに対して1GBの負荷をかけた場合、どの程度コンテナ側とホスト側でリソース状態が変化するのか見てみる…などもありだと思う。
今回の場合、「stress --cpu 2 --vm 2 --vm-bytes 1G」を実施した場合、
CPU…0.22%→99.95%
メモリ…75.39%→91.05%
まで上昇したことが分かる。