Help us understand the problem. What is going on with this article?

Docker Community Edition を Windows 10 Home Edition 上の Windows Subsystem for Linux (WSL) 1 環境に導入する手順

これは何?

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 のインストールに必要な一連のコマンドの実行
  • 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 デーモンプロセスの起動確認

サインインした後タスクマネージャーを開いて、詳細タブ内に dockerddocker-containerd プロセスが存在することを確認します。

9. Ubunu-18.04 を起動

スタートメニューから起動、もしくは Win + R キーの ファイル名を指定して実行 から wsl としてシェルを起動します。

10. シェル上で docker run hello-world を実行

シェル上で次のコマンドを実行します。

docker run hello-world

ここまでの設定が問題なくできていれば、 Hello from Docker! から始まるメッセージが表示されるはずです。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away