mfjt diary


2019-01-04(金)

_ WSL 上の Docker CLI から Docker for Windows を使う

2 年前に買った本で Docker の勉強を始めた。仕事だけだと最近の技術をキャッチアップできず、さすがに危機感を覚えてきた。

できれば WSL だけで完結する環境にしたいけど、WSL を管理者権限で起動させる必要があるのが嫌だったので、WSL に Docker CLI を入れて、そこから Docker for Windows を操作するようにした。これを書いている時点は以下のバージョンだった。

  • Windows 10 Pro 1803
    • Docker for Windows 2.0.0.0-win81
  • Ubuntu 18.04 LTS on WSL
    • Docker CLI 18.09.0

Docker for Windows のインストール

基本的にインストーラを起動してそのまま進めるだけで OK。インストール後は、WSL の CLI から触れるように、Settings > General にある Expose daemon on tcp://localhost:2375 without TLS にチェックを付けておく。

また、Windows コンテナを使用すると、ホストの起動時に MobyLinuxVM の起動で待たされたり、何もしてないときでも MobyLinuxVM にメモリが食われることがなくなるというメリットがあるので、自分は Windows コンテナで動かしている。Linux コンテナとの違いは理解していないが、今のところ困ってはいない。Windows コンテナで動かすには、インストール途中の Use Windows containers instead of Linux containers にチェックを付けておくか、後から変更したい場合はタスクトレイの Docker アイコンを右クリックし、Switch to Windows containers... (戻すときは Switch to Linux containers...) を選ぶ。

ただし、そのままだと docker: Error response from daemon: operating system on which parent image was created is not Windows. というエラーで Linux のイメージを動かせないので、Settings > Daemon から Experimental を有効にする必要がある。

Docker CLI のインストール

公式ドキュメント通りでもいいけど、どうせ CLI しか使わないので、docker-ce ではなく docker-ce-cli を指定した。

あとは WSL 側の環境変数に DOCKER_HOST=tcp://0.0.0.0:2375 を設定してやると、WSL の Docker CLI からホスト Docker を操作できる。

参考

その他

2 年積ん読している間に 2 版が出てしまった…… 2 年経つとさすがに 1 版の内容は所々古くなってしまっている。

プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化
WINGSプロジェクト阿佐 志保/山田 祥寛
翔泳社
(no price)