はじめに
Windows上でDockerを動かす場合はDockerDesktopとWSL2を組み合わせる手段が思い浮かぶと思います。
今回はその手段を利用せずにWindows上で稼働しているAlpineLinuxからDockerを動かしてみます。
背景
DockerDesktopは個人利用では無償で利用できますが、特定の条件に当てはまらない企業・団体に関しては有償となってしまった。DockerDesktopの有償化に関する詳しい話は割愛しますが、本手順はDockerDesktopを利用せずにWindows環境上でDockerを利用する手順の1つとしてご紹介いたします。
前提
必須:Windows10以上(エディションはpro)の環境及びインターネット環境
今回紹介する手順を実行した環境
エディション Windows 11 Pro
バージョン 23H2
OS ビルド 22631.2861
やってみよう
1.WSLのインストール
PowerShellを管理者権限で起動しましょう。
次に以下のコマンドを入力して実行しましょう。
wsl --install
コマンドを実行すると再起動を求められるので、PCを再起動します。
2.AlpineLinuxのインストール
こちらのページからAlpineLinuxをダウンロードします。
※今回はC:\workにファイルをダウンロードします。
Mini root filesystemのx86_64の最新版(2024年12月22に時点でalpine-minirootfs-3.21.0-x86_64.tar.gzが最新)をダウンロードしました。
次にAlpineのインポート先をのディレクトリを作成します。
今回は以下のパスでディレクトリを作成しました。
C:\wslDistroStorage\Alpine
先ほどダウンロードしたalpine-minirootfs-3.21.0-x86_64.tar.gzをインポートします。
PowerShellを管理者権限で起動しカレントディレクトリをC:\workへ移動します。
次に以下のコマンドを入力して実行しましょう。
wsl --import Alpine C:\wslDistroStorage\Alpine .\alpine-minirootfs-3.21.0-x86_64.tar.gz
以下のコマンドを入力してAlpineLinuxを実行しましょう。
wsl -d Alpine
次の画像のようにAlpineLinuxが起動して実行できるようになります。
まずはシステムの更新をしましょう。
以下のコマンドを実行してシステムの更新をします。
apk update
apk upgrade --no-cache
次の画像は前記のコマンドを実行した結果です。
これでAlpineLinuxの下準備ができました。
3.Dockerを稼働させる
次にDockerを動かすために必要なパッケージや設定をAlpineLinuxに施していきます。
まずは必要なパッケージをインストールします。
※今回はdocker-composeも使えるようにします。
apk add --no-cache docker docker-compose openrc
次にネットワーク周りの下準備を行います。
※今回は通信ができればよしとするので細かいところは割愛します。
まずはHyper-Vを有効化します。
コントロールパネル -> プログラムと機能 -> WIndowsの機能の有効化または無効化
より機能を追加します。
追加後はPCを再起動しましょう。
コントロールパネル -> Windowsツール
からHyper-Vマネージャを開きます。
仮想スイッチマネージャ -> WSL (Hyper-V firewall)
を選択します。このままだと外部との通信ができないので今回は
外部ネットワークを選択します。
PowerShellを管理者権限で起動し、以下のコマンドを入力してAlpineLinuxを実行しましょう。
wsl -d Alpine
/etc/network/にinterfacesを作成します。
このファイルがないとdockerデーモンの起動でこけます。
ファイルに設定する値は私の環境では以下としました。
※addressやgatewayの値は各自の適切な値に置き換えてください。
# /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
作成したinterfacesのファイル権限を以下のコマンドで設定します。
chmod 644 /etc/network/interfaces
次にdockerの自動起動を有効化します。
rc-update add docker boot
次のコマンドを実行してdockerデーモンを起動します。
openrc boot
以上でDockerを利用する準備が整いました。
docker run --rm hello-world
などを実行すればDockerが利用できるようになっていることが確認できるはずです。