

アプリケーションから画像ファイルを保存するためには、Viewerを起動しなければなりません。  
しかし、dockerの中からViewerを起動しても、出力先がないので、次のようにエラーになります。

vtkXOpenGLRenderWindow (0xd7e860): bad X server connection.
DISPLAY=/usr/local/bin/********: line 86: 30 Aborted (core dumped)

エラーを起こさないためにはどうしたらよろしいでしょうか。  
環境は、ローカル、Docker ともにubuntuです。

よろしくお願いします。


CC BY-SA 4.0
2018-07-10T10:05:06.940
45483
2018-07-12T16:00:38.813
2018-07-12T16:00:38.813
19110
29110
question
docker
X serverにconnectionしないようにしたい


アプリケーションがGUIであるなら、環境変数DISPLAYにはXサーバが起動しているマシンのIPアドレス(またはホスト名)を正しく設定する必要があります。  
エラーメッセージに出ている`DISPLAY=/usr/local/bin/***`はなんらかのファイルのパスなので、明らかに間違っています。

> vtkXOpenGLRenderWindow (0xd7e860): bad X server connection.
> DISPLAY=/usr/local/bin/********: line 86: 30 Aborted (core dumped)

具体的なアプリ名が出ていないので的外れになるかもしれませんが、エラーメッセージの一部でweb検索してみると以下の様なページが見つかりましたので参考までに。

[[vtkusers] Rendering to images without X
(Linux)?](https://www.vtk.org/pipermail/vtkusers/2010-August/062257.html)  
[VTK/Examples/Cxx/Utilities/OffScreenRendering -
KitwarePublic](https://www.vtk.org/Wiki/VTK/Examples/Cxx/Utilities/OffScreenRendering)


CC BY-SA 4.0
2018-07-11T06:10:04.590
45504
2018-07-11T06:10:04.590
3060
45483
answer


Viewerについては情報がないので、X Server に Connection しないようにする方法はわかりませんが、Docker ホストの
X.orgサーバー上に表示されば良いんじゃないでしょうか。

コンテナ実行時に 環境変数DISPLAYを指定して、ホストのX11プロトコルのソケットを -v オプションで指定してみてください。

例)

[code]

    # docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix viewer
    
[/code]

上手く行けば XクライアントであるViewerが起動すると、Dockerホスト上のX.orgサーバーに接続され、GUIが Dockerホストの
画面に表示されると思います。


CC BY-SA 4.0
2018-07-11T06:16:24.563
45505
2018-07-11T06:16:24.563
5008
45483
answer