19
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WSLでDockerを使う

Last updated at Posted at 2017-10-25

Windows10のWindows Subsystem for LinuxでDockerを使う

何かリンクされたみたいと思ったら、こんな時代になってるそうでした。

2018/07/06 WSL上でDocker Engineが動くようになっていたっぽいという話 - Qiita
元ネタ docker is running natively on wsl reddit

なんと、WSL から直接 docker 動いた! でも、ちゃんと使おうとするとまだまだ制限がきついかな。(上記 reddit に書いてあるのと同じ現象で詰まった)やっぱり、まだまだ辛いですね。

以下、元々の記事です。

Windows10のFall Creators Updateが一般提供開始され、Windows 10 Homeでも WSL (Windows Subsystem for Linux) で Ubuntu (他にもあるけど) を使えるようになりました。持っている Atom ベースの UMPC で、Ubuntu の Docker を動かしたいと思っていたのですが、VirtualBox に入れた Ubuntu では重くてどうしたものかと考えていました。

そこで、WSL があるのですが、docker入れてもdocker serverが動かない。Windows 10 Pro なら、Hyper-Vを有効化してDocker for Windows入れれば、WSLからも使えるのですが、ここは Home で何とかしたいです。

ということで、VirtualBoxに入れたUbuntuをDocker Serverとしてヘッドレスモードで動かして、WSLから使うことにしてみました。

#1. VirtualBoxのUbuntuにDockerをインストール

まずVirtualBoxにUbuntuをインストールする時点で、ネットワークアダプター#2にホストオンリーアダプターを追加して使えるようにしておきます。IPアドレスを固定化しておくと良いかもです。

これには、Docker公式の手順でリポジトリを設定してdocker-ceをインストールします。

前提ソフトウェアのインストールができていれば。

$ 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 \
   $(lsb_release -cs) \
   stable"

としてリポジトリを設定して、docker-ceをインストールします。

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

#2. docker serverの待ち受け

docker serverがWSLからのリクエストを受け付けるように設定しておきます。

$ cd /etc/systemd/system/multi-user.target.wants
$ sudo vi docker.service
ExecStart=/usr/bin/docker -H fd:// -H tcp://192.168.56.xxx:2375
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

ここでは、ホストオンリーアダプターのIPアドレスとポート番号を2375にしてみました。

3. WSLにdockerをインストール

VirtualBoxのUbuntuと同様にしてdocker-ceをインストールします。この時点では、docker versionしてもクライアント情報しか表示されません。

VirtualBoxのUbuntuで稼働しているdocker serverに接続するために、.bashrcに環境変数を追加します。

$ vi .bashrc
export DOCKER_HOST='tcp://192.168.56.xxx:2375'

これで無事に使えるようになりました。

#4 docker server の起動/停止

VirtualBoxを使用していますから、スタートアップフォルダにVBoxManageコマンドでインスタンスを起動するショートカットを作成してみました。もちろん、ヘッドレスモードで起動しています。

Windowsのログインで無事に自動起動できるようになったのですが、シャットダウンする際に一々確認メッセージが出ています。もともと、非力な UMPC で動かすつもりですから使いたい時にだけ起動していれば十分です。

そこで、WSL側からVBoxManageコマンドを使って起動/停止することにしました。起動は、こうなります。

`/mnt/c/Program Files/Oracle/VirtualBox/VBoxManage.exe' startvm Ubuntu --type headless

ここではUbuntuとしていますが、VirtualBoxに作成した仮想マシン名になります。

停止は、こんな感じです。

`/mnt/c/Program Files/Oracle/VirtualBox/VBoxManage.exe` controlvm Ubuntu acpipowerbutton

既に起動済みかどうかも確認できます。

`/mnt/c/Program Files/Oracle/VirtualBox/VBoxManage.exe` list runningvms

実際にはalias切って使うつもりですけど、とりあえずは、これで十分かな!

19
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?