6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PERSOL CROSS TECHNOLOGYAdvent Calendar 2024

Day 24

WSLとAlpineLinuxを利用してWindows上でDockerを動かす

Last updated at Posted at 2024-12-23

はじめに

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を管理者権限で起動しましょう。

powershell.png

次に以下のコマンドを入力して実行しましょう。

wsl --install

コマンドを実行すると再起動を求められるので、PCを再起動します。
powershell2.png

2.AlpineLinuxのインストール

こちらのページからAlpineLinuxをダウンロードします。
※今回はC:\workにファイルをダウンロードします。

Mini root filesystemのx86_64の最新版(2024年12月22に時点でalpine-minirootfs-3.21.0-x86_64.tar.gzが最新)をダウンロードしました。
Alpine.png

次に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

powershell3.png

以下のコマンドを入力してAlpineLinuxを実行しましょう。

wsl -d Alpine

次の画像のようにAlpineLinuxが起動して実行できるようになります。
powershell4.png

まずはシステムの更新をしましょう。
以下のコマンドを実行してシステムの更新をします。

apk update
apk upgrade --no-cache

次の画像は前記のコマンドを実行した結果です。

powershell5.png

これでAlpineLinuxの下準備ができました。

3.Dockerを稼働させる

次にDockerを動かすために必要なパッケージや設定をAlpineLinuxに施していきます。

まずは必要なパッケージをインストールします。
※今回はdocker-composeも使えるようにします。

apk add --no-cache docker docker-compose openrc

次にネットワーク周りの下準備を行います。
※今回は通信ができればよしとするので細かいところは割愛します。
まずはHyper-Vを有効化します。
コントロールパネル -> プログラムと機能 -> WIndowsの機能の有効化または無効化
より機能を追加します。
追加後はPCを再起動しましょう。

hyperv.png

コントロールパネル -> Windowsツール
からHyper-Vマネージャを開きます。

hyperv2.png

仮想スイッチマネージャ -> WSL (Hyper-V firewall)
を選択します。このままだと外部との通信ができないので今回は
外部ネットワークを選択します。
hyperv4.png

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が利用できるようになっていることが確認できるはずです。

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?