orangeitems’s diary

クラウドで働くエンジニアの日々の感想です。

Windows10でDockerを使うための最短コースをご案内

f:id:orangeitems:20190110143035j:plain

 

Windows 10に、Docker for Windows入れると結局Hyper-Vに仮想サーバーとしてのLinuxが動くのと変わらないのでメモリを結構食ってしまいます。

www.orangeitems.com

8GBのメモリを積んでいるPCですが、ブラウザなど開いていると動かすのが厳しくて運用をあきらめました。

ほかにWindowsでコンテナを動かすいい方法ないかなあと思って、思いついた方法をメモします。

 

概略

下記を最短距離で駆け抜けます。

・Windows Subsystem for Linux(WSL)をインストールする
・その上にUbuntu 18.04 LTSをインストールする
・Ubuntu上に、dockerをインストールする

 

方法

Windows Subsystem for Linux(WSL)をインストールする

1. Windows PowerShell(管理者)を起動する。

f:id:orangeitems:20190110122747p:plain

 

2. コマンドにてWindows Subsystem for Linuxを利用可能にする(一行)。

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

※Anniversary Update(バージョン 1607)以降で導入可能

 

3. 再起動が求められるので、再起動する。

f:id:orangeitems:20190110123202p:plain

 

Ubuntuをインストールする

4. Microsoft Storeを開き、"Ubuntu 18.04"で検索する

f:id:orangeitems:20190110123633p:plain

 

5. アイコンをクリックし、「入手」ボタンを押す。

 

6. インストールが完了すると、スタートメニューからUbuntuが選べるようになる。これを起動する。初回起動時は少しだけ時間がかかる模様。

f:id:orangeitems:20190110123850p:plain

 

7. 新規に作成するユーザー名とパスワードを設定する。何でもいい。

f:id:orangeitems:20190110124311p:plain


8. これでubuntuを使う準備は整った。

f:id:orangeitems:20190113173305p:plain

 

なお、ルートディレクトリーを見るとわかるのですが、ちゃんとしたUbuntuです。メモリーの消費量もほとんど上がらないのが素晴らしい。

 

Dockerをインストールする

9. あとはコマンドラインでどんどん進める

 

パッケージの最新化

$ sudo apt-get update

 

前提ソフトウェアのインストール

$ sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common

 

Docker の公式GPGキーを追加する。

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

 

apt用リポジトリー導入

$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

 

Dockerのインストール

$ sudo apt-get update
$ sudo apt-get install -y docker-ce

 

一度、WSLの再起動

10. (重要)一度、WSLを再起動してください。

Windows PowerShell(管理者)を起動する。

以下のコマンドで、WSLの再起動

net stop LxssManager 
net start LxssManager

こんな感じです。

f:id:orangeitems:20190110142016p:plain

  

Ubuntuを管理者モードで起動する

11. (重要)Ubuntuを管理者モードで起動する

f:id:orangeitems:20190110142252p:plain

※管理者モードじゃないとDockerが動きませんでした。

 

Dockerサービスの起動

12. これでいよいよDockerを起動し、コンテナを実行できます。

$ sudo service docker start
$ sudo docker run hello-world

この通り!

f:id:orangeitems:20190113173321p:plain

 

結果

ということで、WSL上でDockerが実行できるようになりましたし、メモリ使用量もDocker for windowsより随分節約できます。Hyper-Vを動かさなくても実行できますし、ピュアなUbuntu上での実行なのでPowerShell上のDockerよりもいろいろ考えなくて楽です。どうぞお試しください。

 

追記

この記事を書いた後いろいろ試していますが、docker-composeができないことが壁になっています。この件、いろいろな方がここで行き詰まっていますのでご留意ください。単に1つのコンテナを動かすだけなら問題ないのですが・・。状況が変わったらアップデートしていく方針です。惜しいなあ・・。