概要
- やりたかった:DockerでUbuntu(日本語入力可)を作成し、開発環境を移植する
- できた:Dockerコンテナ上でGUIアプリを起動
- できた:日本語の表示
- できなかった:日本語の入力
詳細
Dockerfileさえあれば、Windowsでも簡単にUbuntuで開発環境が構築できるような状況を作りたかった。
しかしfcitxがうまく起動していない(?)ため日本語の入力ができなかった。
以下、学習したことを書いていく。
Docker上でGUIアプリを起動する一番楽な方法
コンテナ側
環境変数DISPLAYを設定し、Xの画面をホストに飛ばす。
Windowsの場合、ipconfig
の結果が次のようになるはずなので、設定する値は192.168.99.1:0.0
となる。
意味は"(ホスト):(ディスプレイ番号).(スクリーン番号)"。
イーサネット アダプター VirtualBox Host-Only Network #4:
接続固有の DNS サフィックス . . . . .:
リンクローカル IPv6 アドレス. . . . .: fe80::d146:d8f3:409d:7af7%10
IPv4 アドレス . . . . . . . . . . . .: 192.168.99.1
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .:
起動時オプションとして指定するのが楽。(実際はdocker-compose.ymlで指定する)
$ docker run -e DISPLAY=192.168.99.1:0.0 your-image:tag
ホストマシン側
X Serverをインストールする。(例:VcXsrv)
インストールが終わったらボタンポチポチで設定を行う。これによりコンテナから飛ばされたXの画面を表示できる。
やっておくとよいこと
# 初期設定のaptリポジトリは米国のサーバーなので遅い。日本のサーバーに向ける
$ sed -i.bak -e "s%http://archive.ubuntu.com/ubuntu/%http://ftp.iij.ad.jp/pub/linux/ubuntu/archive%g" /etc/apt/sources.list
# Firefoxを起動した時に"Failed to execute dbus-launch to autolaunch D-Bus session"が出なくなる
$ apt-get install -y dbus-x11
# ppaリポジトリを追加する際にadd-apt-repositoryが使えるようになるので便利
$ apt-get install -y software-properties-common
Ubunutu(on Docker)で日本語を表示する方法
デフォルトでは英語になっているので、ロケール情報を修正する。
必要なパッケージ/コマンドは次の通り。
$ apt-get install -y fonts-takao-* language-pack-ja tzdate
$ locale-gen ja_JP.UTF-8
$ update-locale LANG=ja_JP.UTF-8 LC_ALL=ja_JP.UTF-8
$ dpkg-reconfigure locales
$ ln -fs /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$ dpkg-reconfigure tzdata
やりかけのDockerfile
あとは日本語入力さえできれば、、、。
誰か詳しい人がいたら教えてください。
FROM ubuntu:xenial
ENV DEBIAN_FRONTEND=noninteractive \
GTK_IM_MODULE=fcitx \
QT_IM_MODULE=fcitx \
XMODIFIERS=@im=fcitx \
DefalutIMModule=fcitx
RUN sed -i.bak -e "s%http://archive.ubuntu.com/ubuntu/%http://ftp.iij.ad.jp/pub/linux/ubuntu/archive%g" /etc/apt/sources.list \
&& apt-get update \
&& apt-get install -y dbus-x11 \
fonts-takao-* \
fcitx-mozc \
language-pack-ja \
tzdata \
software-properties-common \
x11-server-utils \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& locale-gen ja_JP.UTF-8 \
&& update-locale LANG=ja_JP.UTF-8 LC_ALL=ja_JP.UTF-8 \
&& dpkg-reconfigure locales \
&& ln -fs /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
&& dpkg-reconfigure tzdata \
&& echo "fcitx-autostart" >> /etc/X11/xinit/xinitrc.d/fcitx \
&& chmod 557 /etc/X11/xinit/xinitrc.d/fcitx