Docker Desktopを使わずにdockerをWindows11で使いたいな~と思い実験したことのメモ。
たまにしか使わないと、毎回アップグレードをきかれて面倒なので。
環境
- エディション: Windows 11 Pro
- バージョン: 22H2 (ビルド: 22621.1555)
- プロセッサ: AMD Ryzen
- メモリ: 16GB
前提
仮想化がONになっていることを確認します。もともとONだったのでやること特になし。
タスクマネージャーのパフォーマンスのCPUで見れます。
Dドライブにインストール
とりあえず、VMとデフォルトのUbuntuを入れます。
wsl --install
再起動したら有効になるよ、とのことなので再起動。
再起動後、コマンドプロンプトが勝手に起動してUbuntuが起動。
22.04.2 LTSでした。
そのコマンドプロンプト窓(=Ubuntuのターミナル)で、作成するユーザーとパスワードを要求されたので作成。
exit
で抜けてちょっと待つとシャットダウンされるみたいでした。(wsl -l -v
で確認)
この時点でUbuntuが使えますが、Cドライブにインストールされています。
メインのストレージがDドライブなので、Dドライブに移行。
( 参考: https://programwiz.org/2021/06/26/how-to-move-wsl2-d-drive-from-c/ )
cd /D D:\
mkdir WSL
cd WSL
wsl --export Ubuntu Ubuntu.tar
wsl --unregister Ubuntu
wsl --import Ubuntu Ubuntu Ubuntu.tar --version 2
移行するとログインユーザーがrootになるので、regeditでレジストを編集する。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss
の下に各ディストリビューションの設定がある。この手順通りならひとつだけあるのでそれを選択し、DefaultUidの値を10進数で1000に設定。
これで、WSLを起動するとUbuntuに初回起動で作成したユーザーで接続されます。
(wsl
コマンドで起動できる)
起動後、接続ユーザーは作成したユーザーになるが初期ディレクトリがimportしたところ(WindowsのDドライブ)を見ていました。
ホームディレクトリは変わっていないので、cd
だけ実行すれば戻れるため気にしない。
WSLの設定
参考: https://learn.microsoft.com/ja-jp/windows/wsl/wsl-config#wslconfig
WSLにメモリが持っていかれすぎるのを防ぐため、設定ファイルします。
%UserProfile%(通常、C:\Users<UserName>)に、.wslconfig
を作成。
ついでなのでスワップのサイズや場所も変えておきます。
[wsl2]
memory=4GB
swap=4GB
swapfile=D:\\WSL\\tmp\\wsl-swap.vhdx
設定を読ませるため、もしWSLが起動しているならいったん落としておきます。(wsl --shutdown
)
VSCodeの準備
参考: https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-vscode
VSCodeの拡張機能WSLを入れます。Microsoft公式。
ほかのリモート系のパック「Remote Development」から入れておくと楽。
入れると、VSCodeのいちばん左下にアイコンが増え、ココをクリックすることでRemote Developmentのメニューが表示されます。
「WSL への接続」を押すと、wsl
コマンドを実行したときと同じようにVM起動とUbuntu起動が行われ、VSCodeサーバーのインストールもされてVSCodeから操作できるようになります。
左メニューのファイルから目的のフォルダを選択して開いたり、ターミナルを開く(ショートカット: Ctrl+J)とUbuntuのコンソールになっていたりしています。
dockerのインストールと確認
入っていないことを確認。
$ sudo docker --version
docker --versionCommand 'docker' not found, but can be installed with:
sudo snap install docker # version 20.10.17, or
sudo apt install docker.io # version 20.10.21-0ubuntu1~22.04.2
sudo apt install podman-docker # version 3.4.4+ds1-1ubuntu1
See 'snap info docker' for additional versions.
2番目のコマンドの方が少し新しそうだが、試したところなんかおかしかったので1番目のコマンドを実行してインストール。
普通にデーモンも起動しているしなんならdocker-composeも入っていました。(公式の最新2.17.2より新しいのが気にはなったが)
# docker本体のバージョン確認
$ sudo docker version
Client: Version: 20.10.17
API version: 1.41
Go version: go1.18.10
Git commit: 100c70180f
Built: Tue Mar 7 06:29:35 2023
OS/Arch: linux/amd64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.18.10
Git commit: a89b842
Built: Tue Mar 7 06:30:14 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit:
docker-init:
Version: 0.19.0
GitCommit: de40ad0$docker compose version
# docker-composeのバージョン確認
$ sudo docker compose version
Docker Compose version v2.5.0
# dockerイメージ(まだない)の表示でデーモン起動を確認
$ sudo docker image ls -a
REPOSITORY TAG IMAGE ID CREATED SIZE
ついでにメモリやスワップの設定が反映されていることも確認。
$ free -m
total used free shared buff/cache available
Mem: 3919 737 2009 3 1171 2973
Swap: 4096 0 4096
dockerとdocker-composeがちゃんと動くことを確認するため、簡単なdocker-composeをたちあげてみる。
$ mkdir -p test/compose
$ cd test/compose
$ touch docker-compose.yml
version: '3'
services:
nginx:
image: nginx:latest
ports:
- 80:80
$ docker compose up
Windows側のブラウザで、http://localhost
にアクセスしてNginxのトップページが出ればOK。
Nginxの停止は、VSCodeで別ターミナルをあげてcd test/compose && docker compose down
これで準備完了。gitはもともと入っていたのでここから先はいろいろできるはず。
zshを入れる
bashのまま作業を続けるのもつらいので、zshを入れておく。
VSCodeのターミナル前提。
参考: https://qiita.com/gilly/items/5ff7bd7142e963cdbb9b
# zshのインストール
sudo apt-get install zsh
# テーマの準備(フレームワークをクローン)
cd
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
# zsh切り替え(`q`の入力で設定ファイルをつくらずに抜ける)
zsh
# zsh設定ファイルの作成
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
ここで、zshをVSCodeのデフォルトにしておく。
ターミナル右上の左から2番目、「+」ボタン右の「v」から開いたメニューの「既定のプロファイルから選択」からzshを選択。
いったん、ターミナルを閉じておく。
exit # zsh抜ける
exit # bashの終了
preztoの設定ファイルを編集して、テーマを変更する。VSCodeでホームディレクトリにある.zpreztorc
の、2023/05/08だと133行目にある以下の行を編集する。
個人的おすすめテーマはsteeef。いじらなくてもgitの情報が出る。
- zstyle ':prezto:module:prompt' theme 'sorin'
+ zstyle ':prezto:module:prompt' theme 'steeef'
変更の保存後、Ctrl+J
でターミナルを開くとzshがテーマつきで表示される。