たぶん動く...

多分GIS系の人。あくまで個人的見解であり、所属団体を代表するものではありません。

dockerコンテナからGUIのQGISを起動したい

筆者は普段はUbuntuで作業しています。最近、QGISのアップデートに失敗して、QGISのインストールが自分の力では難しい状況になってしまいました。
いつも作業しているgdalのdockerにQGISもインストールして使うことを思いつきました。

Dockerfileの作成

xtermとqgisのインストールが必要です。 gdalの公式イメージをベースに作成します。 技術的な詳細は参考文献を参照してください。

FROM osgeo/gdal

MAINTAINER tty6335

ENV DISPLAY=$DISPLAY
RUN apt-get -y update && apt-get -y upgrade
RUN apt-get install -y xterm
RUN apt-get install -y qgis

dockerfileを配置したディレクトリでbuildを実行します。今回はgdal_qgisという名前のイメージにします。

docker image build -t gdal_qgis:latest ./

コンテナとQGISの起動

コンテナを起動する前にubuntuX windowがdockerからの通信を受け付けるようにする必要があります。
今回は、dockerからの通信だけを許可するのが面倒なので、全ての接続を許可するようにします。

xhost local:

コンテナを起動します。今回は、gdal_qgisという名前をつけます。

docker run -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix  --name gdal_qgis gdal_qgis /bin/bash

コンテナに入り、プロンプトでqgisと打つとGUIQGISが起動します。

$ docker exec -it gdal_qgis /bin/bash
root@00410ee6b28a:/# qgis
Warning: QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
<string>:1: DeprecationWarning: setapi() is deprecated

起動できました!!!

参考文献

Dockerコンテナの中でGUIアプリケーションを起動させる | Unskilled?