WSL2(Alpin)Dockerでセットアップをするときのメモ(VS Code対応)
何度も失敗していたのでメモ
使用環境(執筆時)
- OS: Windows 11 Pro 24H2
- WSL2: v1.96.2
- VS Code: v1.96.2
- Remote Development: v0.26.0
- Docker: v.29.3
- Alpine Linux: v3.21.2
- Docker: v27.3.1
前準備
- WSL2のセットアップ
- VS Codeのインストール
- お好きなターミナル(Windows Terminal, Fluent Terminal, etc...)をインストール(ターミナルをいい感じにする場合)
- wingetでcurl(cURL.cURL)をインストール(コマンドでDLする場合
参考にしたサイト様
Windowsの機能の有効化
下記を有効化
- Hyper-V
- Hyper-V プラットフォーム
- Hyper-V 管理ツール
- Linux用 WIndowsサブシステム
- Windows ハイパーバイザー プラットフォーム
仮想スイッチの設定
再起動後 Hyper-Vマネージャーの仮想スイッチを外部ネットワークに切り替え
Alpine Linuxのダウンロード・インストール
公式サイトからMINI ROOT FILESYSTEM x86_64の最新版(執筆時:v3.21.2)をダウンロード
cd D:\Develpments\wsl
curl -OL https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/x86_64/alpine-minirootfs-3.21.2-x86_64.tar.gz
wsl --import Alpine .\Alpine .\alpine-minirootfs-3.21.2-x86_64.tar.gz
WSLでAlpineを実行
wsl -d Alpine
# パッケージの更新
apk update
apk upgrade --no-cache # -no-cacheで容量削減
# 必要なパッケージをインストール
apk add --no-cache tzdata sudo bash curl git github-cli
apk add --no-cache libgcc libstdc++ # VSCodeで開くために必要なパッケージ
# タイムゾーンの設定
install -Dm 644 /usr/share/zoneinfo/Asia/Tokyo /etc/zoneinfo/Asia/Tokyo
export TZ='Asia/Tokyo'
echo "export TZ='$TZ'" >> /etc/profile.d/timezone.sh
apk del tzdata
# sudo の設定
echo '%wheel ALL=(ALL) ALL' > /etc/sudoers.d/wheel
# userの追加
username=alpine # alpineは任意の名前
adduser $username -s /bin/bash
adduser $username wheel
# wsl.conf の設定(alpineはユーザ名)
cat <<EOF > /etc/wsl.conf
[user]
default=alpine
[interop]
appendWindowsPath=false
[boot]
command = "/usr/bin/env -i /usr/bin/unshare --pid --mount-proc --fork --propagation private -- sh -c 'exec /sbin/init'"
EOF
# 不要な仮想コンソールを減らす
vi /etc/inittab # tty3~tty6をコメントアウト
# dockerの設定
apk add --no-cache docker docker-cli-compose openrc
adduser $username docker
# 自動起動のためのopenrc導入
openrc sysinit
touch /run/openrc/softlevel
rc-update add docker
# dockerの起動
rc-service docker start
rc-status
# runlevel defaultに登録
rc-update add docker default
rc-update show default
exit
# dockerの動作確認
docker run --rm hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
```sh
exit # WSLを終了
VS Codeの設定
拡張機能のインストール
code.cmd --install-extension ms-vscode-remote.vscode-remote-extensionpack
code.cmd --install-extension ms-azuretools.vscode-docker