リモートサーバーのDockerコンテナからX11を渡す

リモートサーバーのDockerコンテナからX11を渡す

Linux mint 18サーバー(X11を実行)にsshを接続してdockerコンテナにログインした後、iPython matplotlibプロットをローカルクライアント(またmint)に渡したいと思います。すべてローカルネットワークにあります。

私が見つけた最も近い質問は次のとおりです。https://stackoverflow.com/questions/25281992/alternatives-to-ssh-x11-forwarding-for-docker-containers

-e DISPLAY=$DISPLAY次に、コマンドに渡されたオプションを使用して、dockerからローカルコンピュータのモニタ(ei、mintサーバー)にフローティングGUIを出力できますdocker run。また、-XSSHを介してサーバーに接続してxeyesクライアントウィンドウをインポートすることもできます。

ただし、オプションを使用してサーバーにSSH接続し、-X実行中のコンテナにログインしても、-DISPLAY=localhost or client IPクライアントシステムからプロットをインポートできません。

この問題を解決するためにVNCを使用できることを知っています。しかし、X11転送を正しく使用する方法は?

ベストアンサー1

動作するには、次の問題を解決する必要があります。

  1. XアプリケーションはXサーバーを見つけることができます
    • SSHの場合はトンネルが必要です(/etc/ssh/sshd_configの「ssh -X」および「X11Forwarding yes」)。
    • アドレスは$ DISPLAYになければなりません(-eを使用)。 Dockerコンテナ内でわかるように、「localhost」をDockerホストの実際のIPアドレスに置き換える必要があります。
  2. XアプリケーションにはXサーバーと通信する権限があります。
    • xauth マジッククッキーを Docker コンテナに伝播
    • DockerホストからX11ポート用のDockerコンテナまで、すべてのファイアウォールポートを開きます。
    • SSH サーバーがリモート IP から X11 TCP 接続を許可するように構成されていることを確認します。

これを行う方法の詳細については、StackOverflowに関する私の質問(および回答)を参照してください。https://stackoverflow.com/questions/48235040/run-x11-application-in-a-docker-container-reliously-on-a-server-connected-via-ssh

おすすめ記事