Alpine Linux を Docker Desktop の HOST として利用する

Alpine Linux を Docker Desktop の HOST として利用するための環境構築

インストール

 WSL上でAlpine Linux を稼働させるために、まずはインストールを行う。
 本家サイト(https://www.alpinelinux.org/)から「Minimal root filesystem」の tar.gz ファイルをダウンロードして wsl –import を行っても良いが、Microsoft Store にある「Alpine WSL」をインストールしたほうが簡易にインストールできる。
 「Alpine WSL」は、本家サイトのCDNからAlpine Linuxをダウンロードし、それをWSL内にインストールするだけの起動スクリプト的なもの?

index | Alpine Linux
Alpine Linux
GitHub - agowa/WSL-DistroLauncher-Alpine: Alpine WSL Microsoft Store packages.
Alpine WSL Microsoft Store packages. Contribute to agowa/WSL-DistroLauncher-Alpine development by creating an account on...
Alpine WSL - Official app in the Microsoft Store
Windows S mode currently *NOT* supported.The Sourcecode can be found at: This app runs through these steps when it is fi...

セットアップ

Alpine WSL の 起動

 Alpine WSL のインストール後、Windowsのメニューから「Alpine WSL」を起動すると、CLIが立ち上がり「Enter new UNIX username:」プロンプトが表示されて止まる。
 ここで、ユーザ名とパスワードを作成すると、次回起動時に当該ユーザで自動的にログインされる。逆に、プロンプトが表示された時点でCLIを閉じると、次回起動時には root ユーザでログインされる。
 DockerのHOSTとしてAlpine Linuxを利用するだけなら、root 権限でログインして貰う方が利便性に優れるので、ここではユーザ名の入力は行わずにCLIを閉じてしまう。

alpine-pkg-glibc パッケージの導入

下記ドキュメントの注釈に、「alpine-pkg-glibc」パッケージを導入する必要があると記載されている。

Docker Desktop WSL 2 バックエンド — Docker-docs-ja 24.0 ドキュメント

下記ドキュメントの記載通りに「alpine-pkg-glibc」パッケージをインストールする。

GitHub - sgerrand/alpine-pkg-glibc: A glibc compatibility layer package for Alpine Linux
A glibc compatibility layer package for Alpine Linux - sgerrand/alpine-pkg-glibc
> wsl -d alpine
# cd ~
# wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub
# wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-2.35-r0.apk
# apk add glibc-2.35-r0.apk
# wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-bin-2.35-r0.apk
# wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-i18n-2.35-r0.apk
# apk add glibc-bin-2.35-r0.apk glibc-i18n-2.35-r0.apk
# /usr/glibc-compat/bin/localedef -i en_US -f UTF-8 en_US.UTF-8
# exit
> wsl -t alpine

Docker Desktop に統合する

 Alpine Linux を Docker Desktop に統合するため、以下の操作を行う。
– Docker Desktopを起動する。
– Settings – Resources – WSL INTEGRATION 画面で Alpine にチェックを入れる。

以上の操作で、Apline を docker ホストとして使用することができるようになる。

Alpine 環境整備

 開発環境として使用するための環境整備。

Visual Studio Code の導入

 開発統合環境として Visual Studio Code を使用したい。
Alpine を起動して code コマンドを実行すると’apk update && apk add libstdc++’を実行せよと言われるので、指示通りに進めることで Visual Studio Code のインストールが完了する。

> wsl -d alpine
# cd ~
# code .
...
libstdc++ is required to run the VSCode Server:
Please open an Alpine shell and run 'apk update && apk add libstdc++'
# apk update && apk add libstdc++
...
# code .

その他、必要なものは都度 ‘apk add’ コマンドを使用して導入する。

ログインシェル

 wslコマンドを用いてAlpineディストロにログインすると、Windowsのディレクトリが、ash シェルのカレントフォルダになってしまう。root ユーザの ホームをカレントフォルダにしたいため、以下のログインシェルを追加しておく。

# cd ~
--- 以下、~/.profile ファイルの内容
#!/bin/sh

cd ~
--- 以上
# chmod +x ~/.profile

動作確認

 上記、一連の導入作業により、正常にdocker HOST 環境が作成できたのか、確認してみる。
ひとまず、WordPress 環境の構築を作成してみる。

WordPress samples
Docker samples for WordPress.
> wsl -d alpine
# cd ~
# mkdir my_wordpress
# cd my_wordpress
--- 以下のコードを my_wordpress/docker-compose.yml ファイルに書き込む ---
version: "3.9"
    
services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - wordpress_data:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
volumes:
  db_data: {}
  wordpress_data: {}

 WordPressを起動

# docker compose up -d

 Web ブラウザで、http://localhost:8000 を開き、WordPressが正常に動作することを確認する。