WSL2(Alpin)Dockerでセットアップをするときのメモ(VS Code対応)

# 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する場合

## 参考にしたサイト様
https://zenn.dev/ignorant/articles/wsl2_alpine_docker

https://fuyuhiro.com/wsl2-alpine-docker

https://qiita.com/k_oshima23/items/f52849c6bbc5062c9f3d

## Windowsの機能の有効化
下記を有効化

+ Hyper-V
    + Hyper-V プラットフォーム
    + Hyper-V 管理ツール
+ Linux用 WIndowsサブシステム
+ Windows ハイパーバイザー プラットフォーム

![screenshot_2025-01-13 142946.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56798/9200031b-3f57-29a2-55a4-4164d34d0914.png)

## 仮想スイッチの設定
再起動後 Hyper-Vマネージャーの仮想スイッチを外部ネットワークに切り替え

![screenshot_2025-01-13 144340.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56798/01ca2878-fe64-4323-3ab9-c3a062613d76.png)

## Alpine Linuxのダウンロード・インストール

[公式サイト](https://alpinelinux.org/downloads/)からMINI ROOT FILESYSTEM x86_64の最新版(執筆時:v3.21.2)をダウンロード

```ps
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を実行
```ps
wsl -d Alpine
```

```sh
# パッケージの更新
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の設定
### 拡張機能のインストール

```ps
code.cmd --install-extension ms-vscode-remote.vscode-remote-extensionpack
code.cmd --install-extension ms-azuretools.vscode-docker
```

https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack

https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker

### 設定変更
![screenshot_2025-01-13 172445.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56798/69e2e6b1-d47e-a702-e574-a4e0613280c3.png)