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

WSLでDockerを使う

More than 1 year has passed since last update.

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切って使うつもりですけど、とりあえずは、これで十分かな!

Why not register and get more from Qiita?
  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
No 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
ユーザーは見つかりませんでした