前書き

普段の仕事では、Windowsを使っています。Linuxを利用したいなら、WSLが一選択肢です。Dockerを使いたいですが、WSL上でも動けますでしょうか。

検証環境

事前準備

WSL(Microsoft-Windows-Subsystem-Linux)の有効

# 管理者権限で、下記のコマンドを実行して、再起動します。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
# 参照資料
# https://docs.microsoft.com/ja-jp/windows/wsl/install-win10

Ubuntu 16.04のインストール

Ubuntu 16.04 LTSからMicrosoft Storeを起動して、入手する。

Ubuntu 16.04の初期化

# Installing, this may take a few minutes...
# Please create a default UNIX user account. The username does not need to match your Windows username.
# For more information visit: https://aka.ms/wslusers
# Enter new UNIX username: gekal
# Enter new UNIX password:
# Retype new UNIX password:
# passwd: password updated successfully
# Installation successful!
# To run a command as administrator (user "root"), use "sudo <command>".
# See "man sudo_root" for details.

> sudo visudo
# 最後に下記の行を追加(visudoでsudo権限の設定)
gekal ALL=(ALL) NOPASSWD:ALL

Dockerをインストール

★下記設定は管理者権限で実施ください。★

# システム更新
sudo apt update
sudo apt upgrade

# Dockerをインストール
# ※※最新のバージョンが問題ありますので、17.09をインストールします。※※
curl -O https://download.docker.com/linux/debian/dists/stretch/pool/stable/amd64/docker-ce_17.09.0~ce-0~debian_amd64.deb
sudo dpkg -i docker-ce_17.09.0\~ce-0\~debian_amd64.deb

# カレントユーザーをdockerグループに追加
sudo usermod -aG docker $USER

sudo cgroupfs-mount

# Dockerを起動する
sudo service docker start

環境確認

Apache起動

# Apacheを起動
docker run -p 8080:80 --rm httpd

動作確認

http://localhost:8080/

Proxy設定

社内の環境には、プロキシがほとんどです。
下記の通り、プロキシを設定ください。

# /etc/default/docker
export http_proxy="http://username:passwd@proxyserver:8080"
export https_proxy="http://username:passwd@proxyserver:8080"

参照資料

  1. どうしても Docker on Ubuntu 18.04 on WSL したかった
  2. WSL上でDocker Engineが動くようになっていたっぽいという話