Dockerfileから簡単にWSL2の日本語環境を作れるようにしてみた
前回はMSストアから導入したUbuntu上で環境を作成していたのですが、手順が長く気軽に作り直しができなかったのでGUI環境や日本語入力に必要なパッケージをDockerfileにまとめました。
事前に必要な手順
- Windows 10。Windows Subsystem for Linux 2への更新 >> WSLのインストールとWSL2への更新
- WindowsへDocker Desktop を導入済み(もしくはいずれかの環境にてdockerが利用できること)
使い方
各コマンドに記載しているworkspace
は適宜変更が可能です。
既存のWSL環境にてイメージファイルの作成
- docker build時に
build-arg
によって指定したユーザーが作られます。省略した場合の初期値は記載している値と同様です。
$ git clone git@github.com:s1140227/wsl2-jp-genie.git
$ cd wsl2-jp-genie
$ docker build \
-t workspace \
--build-arg USERNAME='user' \
--build-arg PASSWORD='user' \
--build-arg ROOT_PASSWORD='root' .
$ docker run --name workspace -it -d workspace
$ docker export --output workspace.tar workspace
$ mv workspace.tar /mnt/c/...
PowerShellにてWSLにインポート
PS > wsl --import workspace ./workspace .\workspace.tar
PS > wsl --list --verbose
NAME STATE VERSION
* Ubuntu-18.04 Running 2
docker-desktop-data Running 2
docker-desktop Running 2
workspace Stopped 2
Docker Desktopによるdockerプロセスはデフォルト設定されているWSLコンテナとのみ繋がっているようです。
必要に応じてデフォルト設定を変更してください。
PS > wsl --set-default workspace
2021/02/13 追記
Docker Desktopの設定からデフォルト設定のコンテナ以外にも、dockerコマンドを有効化することができました。初期設定では一番上にのみにチェックされていて(Enable integration with my default WSL distro)、デフォルト設定されているWSLコンテナのみ有効な状態でした。
特徴
- デスクトップ環境は入っておらずUbuntu 18.04のみで構成されています。
- 必要に応じてお好きなデスクトップ環境を入れてください。
- 日本語環境としてfcitx-mozcを入れています。
$ fcitx-config-gtk3
にてキー設定を変更できます。
- GUI環境(X Window System)としてx11-appsを入れています。
- WindowsにてVcXsrv などのXサーバーが起動している際
$ xeyes
にて接続を確認できます。 - VcXsrvの場合起動時に
Disable access control
をONにしてください。
- WindowsにてVcXsrv などのXサーバーが起動している際
- systemd-genie を導入済みです。
- 起動時には
systemd
が利用できるシェルになります。
- 起動時には
- snapd を導入済みです。
- Snap Store に掲載されているGUIアプリをインストールできます。
- Sublime Textの例
$ sudo snap install sublime-text --classic && subl
以前の記事からの変更点
以前の記事 と異なり汎用的な部分のみに絞りました。
- Node Version ManagerやYarn、WebStormは後から入れれば良いのでDockerfileには入れていません
ubuntu-wsl2-systemd-script
は依存が足りなかったのか、WSLコンテナが複数あるのが原因なのかわからなかったのですが動かなかったのでsystemd-genieを入れています