これは何?
Windows Subsystem for Linux (WSL) 1 の環境に Docker Community Edition (以降 docker と表記) をインストールして使用するまでの手順です。
Windows 10 Home Edition バージョン 1903 (OS ビルド 18362.356) の環境を前提としています。
手順の前に結論
Windows 10 Home Edition と WSL 1 の組み合わせで docker を使うのはおすすめしません。サポート切れの docker を使うことになります。
おとなしく Windows 10 Pro のライセンスを購入して Docker Toolbox on Windows を使いましょう。あるいは WSL 2 が利用できるようになる Windows 10 20H1 を待ちましょう。今すぐ WSL 2 を試すなら Windows Insider Program に加入して Fast Ring に入る方法もあります。
手順
1. Microsoft Store から Ubuntu 18.04 (LTS) をインストール
デフォルトではタスクバーに Microsoft Store がいるので、そこから起動しても OK です。
2. Ubuntu 18.04 を起動
初回起動時はユーザーの作成を求められるので適当に設定します。
3. 次の一連のコマンドを実行
sudo apt-get update && \
sudo apt-get upgrade -y && \
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable" && \
sudo apt-get update && \
sudo apt-get install -y docker-ce=17.12.1~ce-0~ubuntu containerd.io
上記でやっていること
- インストール済み環境のアップデート
- Docker Community Edition のインストールに必要な一連のコマンドの実行
- https://docs.docker.com/install/linux/docker-ce/ubuntu/ からコピペしてきたものです。将来的に環境が変わるとスクリプトの内容も変わる可能性があります。
-
docker-ce
の WSL 1 環境で動作する(しているように見える)上限バージョン (17 系) のインストール- 18 系以降は WSL 1 系ではどうやら動作しないようなので、本手順では 17 系を使用します。
- 17 系は
bionic
向けのパッケージ一覧はないので意図的にxenial
から取得して使用しています。 - 17 系のパッケージがいつまでリポジトリに存在するのか分からないので、手元に 上記パッケージの .deb ファイルをダウンロードしておくと安心かもしれません。
4. docker に対するコマンド実行権限を指定したデフォルトのログインユーザーに与える
特に設定していなければ デフォルトのログインユーザー == WSL 初回起動時に作成したユーザーです。
sudo usermod -aG docker デフォルトのログインユーザー名
5. docker 起動用スクリプト (PowerShell) を作成し適当な場所に保存
ファイル名はなんでもいいですが StartupDocker.ps1
としておきます。
$DistributionName = "Ubuntu-18.04"
$DockerStartupCommands = (
"--distribution", $DistributionName,
"--user", "root",
"--", "cgroupfs-mount ; service docker start"
)
Start-Process -FilePath "wsl.exe" -ArgumentList $DockerStartupCommands -PassThru -Verb "RunAs" -WindowStyle Hidden
6. スタートアップフォルダーに (5) の PowerShell スクリプトを起動する bat を配置
Win + R
キーの ファイル名を指定して実行
から shell:startup
と入力し、現在サインインしているユーザーのスタートアップフォルダーを開きます。
フォルダーを開いたら StartupDocker.bat
ファイルを作成し、次の内容とします。
@echo off
powershell -ExecutionPolicy ByPass -File "StartupDocker.ps1 への絶対パス"
7. Windows を再起動、またはサインインし直す
スタートアップスクリプトを起動したいだけなので、この手順を省略して StartupDocker.ps1
ファイルを右クリックしてコンテキストメニューから PowerShell で実行
を選ぶか、手順 (6) で作成したバッチファイルを叩く方法でも構いません。
8. docker デーモンプロセスの起動確認
サインインした後タスクマネージャーを開いて、詳細タブ内に dockerd
と docker-containerd
プロセスが存在することを確認します。
9. Ubunu-18.04 を起動
スタートメニューから起動、もしくは Win + R
キーの ファイル名を指定して実行
から wsl
としてシェルを起動します。
10. シェル上で docker run hello-world
を実行
シェル上で次のコマンドを実行します。
docker run hello-world
ここまでの設定が問題なくできていれば、 Hello from Docker! から始まるメッセージが表示されるはずです。