コンテナ環境で動作するWebターミナルのトラブルシューティング

プロジェクト概要と使用言語

container-web-tty は、ブラウザ経由でコンテナインスタンスに接続し、シェルコマンドを実行できるオープンソースツールです。元となる yudai/gotty を拡張しており、DockerやKubernetesクラスタへの接続をサポートしています。実装言語にはGoが採用されており、高並列処理と軽量なランタイムにより、リアルタイムなターミナル通信を効率よく実現しています。

初回導入時に発生する主な課題と対応方法

課題1:サービスの起動と基本設定

現象: 初めて利用するユーザーは、正しくサービスを立ち上げる手順や設定方法が不明確であることが多いです。

対応手順:

  1. Dockerエンジンがホストにインストールされていることを確認します。
  2. 以下のコマンドでコンテナをバックグラウンド起動します。ローカルのDockerデーモンへアクセスするためにソケットファイルをマウントします。
docker run -d --restart unless-stopped \
  --name web-tty \
  -p 8080:8080 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  wrfly/container-web-tty

Kubernetes環境を利用する場合は、kubeconfigファイルをボリュームマウントし、バックエンドモードを切り替えます。

docker run -d --restart unless-stopped \
  --name web-tty \
  -p 8080:8080 \
  -e WEB_TTY_BACKEND=kube \
  -e WEB_TTY_KUBE_CONFIG=/etc/kube/config \
  -v $HOME/.kube/config:/etc/kube/config \
  wrfly/container-web-tty

課題2:gRPCを用いた分散環境での接続

現象: リモートサーバ上のコンテナを集中管理したいが、ネットワーク構成が複雑で接続が確立できない。

対応手順:

  1. 遠隔地のサーバでgRPCサーバー機能を有効化します。ポート8090を公開し、認証用のシークレットキーを設定します。
docker run -d --restart unless-stopped \
  --name web-tty \
  -p 8080:8080 \
  -p 8090:8090 \
  -e WEB_TTY_GRPC_PORT=8090 \
  -e WEB_TTY_GRPC_AUTH=tokensecret123 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  wrfly/container-web-tty
  1. ローカルまたは別のノードで、上記のgRPCエンドポイントを指すように設定します。
docker run -d --restart unless-stopped \
  --name web-tty \
  -p 8080:8080 \
  -e WEB_TTY_BACKEND=grpc \
  -e WEB_TTY_GRPC_AUTH=tokensecret123 \
  -e WEB_TTY_GRPC_SERVERS=192.168.1.100:8090 \
  wrfly/container-web-tty

これにより、中央ノードから複数のエッジサーバ上のコンテナを統合的に操作できます。

課題3:HTTPインターフェースの無効化

現象: セキュリティポリシーまたはリソース最適化の観点から、Webサーバー機能を停止したいケースがあります。

対応手順:

  1. HTTPリスナーを無効にするには、ポート番号に-1を指定します。
docker run -d --restart unless-stopped \
  --name web-tty \
  -e WEB_TTY_PORT=-1 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  wrfly/container-web-tty
  1. ログ出力でHTTPサーバーの起動抑制を確認します。
docker logs web-tty

出力に「HTTP server disabled on port -1」といったメッセージがあれば、正常に無効化されています。

タグ: Docker Kubernetes Go gRPC Web Terminal

6月1日 03:55 投稿