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
。また、-X
SSHを介してサーバーに接続してxeyes
クライアントウィンドウをインポートすることもできます。
ただし、オプションを使用してサーバーにSSH接続し、-X
実行中のコンテナにログインしても、-DISPLAY=localhost or client IP
クライアントシステムからプロットをインポートできません。
この問題を解決するためにVNCを使用できることを知っています。しかし、X11転送を正しく使用する方法は?
ベストアンサー1
動作するには、次の問題を解決する必要があります。
- XアプリケーションはXサーバーを見つけることができます
- SSHの場合はトンネルが必要です(/etc/ssh/sshd_configの「ssh -X」および「X11Forwarding yes」)。
- アドレスは$ DISPLAYになければなりません(-eを使用)。 Dockerコンテナ内でわかるように、「localhost」をDockerホストの実際のIPアドレスに置き換える必要があります。
- 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