Windowsでの開発にManjaro Linuxを使いたい
Windowsを初期化したため、開発環境を構築したいと思っていた。今まではWSL2の機能を使用してManjaro Linuxを使用していたが、今回はDockerでManjaro Linuxを開発環境にしてみる。
Dockerのインストール
LinuxカーネルにはWSL2を使用することが推奨されているため、まずはそれをインストールする。(個人的な理由でHyper-Vはあまり使わない)
WSL2のインストール
Microsoft 公式を見つつ設定をするといい。 WSL2のインストールが完了したら、Docker 公式の用意しているセットアップツールに従えばインストールできる。
WSLのおすすめの設定
実は2023年10月現在、デフォルトの設定ではWSLが一度確保したメモリ空間は自動で解放されない(そんなことが許されていいのか???) しかし、最近になって使用しなくなったメモリを徐々に開放する設定が追加された。 こちらを参考に設定を行った。
Docker Image を作成する
どうやらbase imageはmanjarolinux/baseという名前であるため、 これに必要なものを追加していく。以下のような形になった
FROM manjarolinux/base
RUN pacman-mirrors -c Japan
RUN pacman -Syyu --noconfirm
RUN pacman -S vim git tmux openssh zsh make wget --noconfirm
# hexoの環境用
# RUN pacman -S nodejs npm --noconfirm
# RUN npm install hexo-cli -g
前回の記事のために使用したhexoの環境用にnodeとnpmをインストールしている。 使用後はその部分を削除するかコメントアウトすることで環境を汚さないようにできる。
Alacrittyのインストール
Windowsでターミナルを使う際はいつもAlacrittyを使用している。 これはrust製で、ターミナル以外の機能が何も搭載されていない。 機能が全くないことに不便だと思われるかもしれないが、結局tmuxやpowerlineを使うのでターミナルに機能があっても使用しない。その分高速に動いてくれた方が都合がよい。
Windowsの場合はscoopでインストールすることを個人的にはおすすめしている。(あとあと便利になる)インストールはいつもこのブログにお世話になっている
設定
以下のようにAlacrittyの設定を記述することとなった(コマンドが長い…)
shell:
program: /Program Files/Docker/Docker/resources/bin/docker.exe run -it -v homedir:/root --rm arch /bin/bash
window:
opacity: 0.9
必要な際はdockerコマンドに対して-p
オプションなどを使用してポートフォワードしたりする。
オプション
Docker Volumeを使用することでコンテナ内で作成したものを永続化できる。 今回の場合はホームディレクトリをマウントしている。これによりほかのディストリビューションを使用したくなった場合でも、同じボリュームをマウントすることによりホームディレクトリを共有することができる。
まとめ
これでWindowsでlinuxの環境を使用できるようになった。 これまではWSL2でmanjaroを使用していたが、 少し面倒であることと、ほかのディストリビューション(Ubuntuなど)を使用したくなった際に、設定を最初から行う必要がある。
今回の Docker コンテナの環境なら Docker Volumeを付け替えることで同じホームディレクトリを使用することができ、毎度コンテナを作成することで環境の再現性を保つことができる。
余談
今回の記事を執筆中、ふと思い立ったため各Linuxディストリビューションの Docker Image のサイズを調べてみた。結果は下表のようになった。
ディストリビューション | 元のサイズ |
---|---|
Manjaro | 797 MB |
Arch | 433 MB |
Ubuntu | 77 MB |
元のサイズはUbuntuが小さいが、これは必要なパッケージがなにもインストールされていない状態なのであって、node.jsをインストールすると同じくらいのサイズになっていた。
さらに余談
また、Windows10でAlacrittyを使おうとすると、画面透過が効かず、さらには日本語表示が横にずれるバグがあった。解決しようと試行錯誤してみたがどれもうまくいかず、Windows11にアップデートしたところ改善した。
どうにも元凶はpowershellの文字コードにあるらしく、docker run -it ... /bin/zsh
にてコンテナにattachした際にShift-JISに強制変更されていた。 これによりコンテナ側はUTF-8だが、表示側はShift-JISだと思って描画をするために齟齬が生まれているようだった…