Windows 10に、Docker for Windows入れると結局Hyper-Vに仮想サーバーとしてのLinuxが動くのと変わらないのでメモリを結構食ってしまいます。
8GBのメモリを積んでいるPCですが、ブラウザなど開いていると動かすのが厳しくて運用をあきらめました。
ほかにWindowsでコンテナを動かすいい方法ないかなあと思って、思いついた方法をメモします。
概略
下記を最短距離で駆け抜けます。
・Windows Subsystem for Linux(WSL)をインストールする
・その上にUbuntu 18.04 LTSをインストールする
・Ubuntu上に、dockerをインストールする
方法
Windows Subsystem for Linux(WSL)をインストールする
1. Windows PowerShell(管理者)を起動する。
2. コマンドにてWindows Subsystem for Linuxを利用可能にする(一行)。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
※Anniversary Update(バージョン 1607)以降で導入可能
3. 再起動が求められるので、再起動する。
Ubuntuをインストールする
4. Microsoft Storeを開き、"Ubuntu 18.04"で検索する
5. アイコンをクリックし、「入手」ボタンを押す。
6. インストールが完了すると、スタートメニューからUbuntuが選べるようになる。これを起動する。初回起動時は少しだけ時間がかかる模様。
7. 新規に作成するユーザー名とパスワードを設定する。何でもいい。
8. これでubuntuを使う準備は整った。
なお、ルートディレクトリーを見るとわかるのですが、ちゃんとした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
こんな感じです。
Ubuntuを管理者モードで起動する
11. (重要)Ubuntuを管理者モードで起動する
※管理者モードじゃないとDockerが動きませんでした。
Dockerサービスの起動
12. これでいよいよDockerを起動し、コンテナを実行できます。
$ sudo service docker start
$ sudo docker run hello-world
この通り!
結果
ということで、WSL上でDockerが実行できるようになりましたし、メモリ使用量もDocker for windowsより随分節約できます。Hyper-Vを動かさなくても実行できますし、ピュアなUbuntu上での実行なのでPowerShell上のDockerよりもいろいろ考えなくて楽です。どうぞお試しください。
追記
この記事を書いた後いろいろ試していますが、docker-composeができないことが壁になっています。この件、いろいろな方がここで行き詰まっていますのでご留意ください。単に1つのコンテナを動かすだけなら問題ないのですが・・。状況が変わったらアップデートしていく方針です。惜しいなあ・・。