0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

dockerにGUIアプリ+日本語入力可能な環境構築する際に詰まったポイント

Posted at

はじめに

docker上にGUIアプリを乗せたいなーという状況があると思います。しかし、dockerにGUIを乗っけている例が少なく、まとまった情報が集められません。情報を集めて、実装してみたけど、なんだかうまくいかないといったケースがそれなりにあると思います。実際に私もdockerにGUIアプリを乗っける際に、いくつかのポイントで詰まりました。当記事では、なんだかうまくいかないの原因のヒントになるかもしれない、私の体験した詰まりポイントを紹介していきます。みなさまのdocker GUI環境構築の助けになれば幸いです。

実際に私が作ったvscode(visual studio code)の入ったイメージをbuildするdockerfileをアップしています。
興味がある方はどうぞ。( https://github.com/yn-git/vscode-in-docker )

1. GUIを表示させる際の詰まりポイント

OpenGLを使用するGUIアプリへの対応

DockerはOpenGLをサポートしていない

通常、dockerではOpenGLのアプリを描写できません。しかし、GUIアプリには、OpenGLを使用するものがあります。もし、そのようなGUIアプリを描写しようとすると、下記のようなエラーがでると思います。そんなエラーなんて出力されないんだけど・・・という方は、アプリのエラー出力がされていないかもしれません。オプションを指定することで、エラーを出力してくれるアプリもあります。

sample_error.txt
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

サードパーティの力を借りることで描写が可能になる

3つの作業を行うことで、dockerでも、OpenGLを使用するGUIアプリも描写可能です。

1. nvidia-docker2をインストールする

インストール方法はこちらに詳しく書かれています。

2. build時にopenGLをサポートしたイメージをベースにする

nvidia-docker2そのものはOpenGLをサポートしていません。そのため、OpenGLをサポートした専用のイメージが提供されています。この専用イメージをベースイメージとして利用することで、OpenGLが利用できるイメージが作成できます。
専用のイメージの詳細はこちらで確認できます。

3. run時にオプションとして、--runtime=nvidiaを指定する

nvidia-docker2のサポートをコンテナが利用できるように、オプションを指定する必要があります。

sample.txt
docker run --runtime=nvidia ~

Docker for Windows + VcXsrv(windows環境)ではうまくいかなかった

当初、私はDocker for Windows + VcXsrv(Windowsで動くフリーのXサーバ)で環境を構築していました。ただ、fcitxをインストールした後にvscodeを表示させようとすると、VcXsrvフリーズしてしまいました。私の力では、この問題を解決できず、Linuxに逃げました。もし、Windowsでなんとか実装しようと頑張っている方は、Linuxに逃げたら、楽になるかもしれませんよ。

2. 日本語に対応させる

GUIの日本語表示には日本語フォントが必要

公式のイメージをベースにしてbuildすることは多いと思います。しかし、すでに日本語フォントがインストールされている公式イメージはほとんどないと思います。その状態で、LANG=ja_JP.UTF-8にしただけでは、GUIの日本語は正常に表示されません。文字化けして、豆腐(□)が表示されます。お好みの日本語フォントをインストールすることで、文字化けを解消できます。

mozcはrootだと動かない

mozcとは、Googleが提供するIME(日本語入力システム)です。mozcは、どうやらrootでは動かないそうです。もし、他のIMEを使っていて、半角/全角を押し反応があるのに、日本語入力できないときは、rootが問題かもしれません。dockerの思想を無視して、コンテナ内でもrootで作業していた私は、この問題で一番つまずきました・・・(ごめんなさい、もうしません;;)

0
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?