Edited at

WindowsのWSL上にDocker開発環境を立ててみる

Qiita初投稿。

エンジニアの出来損ないが、メモ程度に開発日記を書いていきます。

先輩方のご指摘を餌にして育っていくつもりなので思ったことは何でもぶつけてください。

今回は、自宅のwindows PCにdocker開発環境を作ります。

Windowsでもbashを扱うことができるようになっていたので、Windows Subsystem for Linux(WSL)を活用していきます!


目的

幅広にコーディングを楽しむために、快適なDocker環境を自宅PCに構築していきます。

職場ではLinux系サーバにdockerなりk8sなり入れてソイヤソイヤと開発しているのですが、Windowsでのdocker環境構築は初挑戦です。


環境


  • OS


    • Windows10 pro : Version 1709



  • WSL


    • Ubuntu : 16.04.3 LTS



  • Docker


    • Docker for Windows : Version 18.03.0-ce-win59 (16762)




準備


WSL

先人の記事を参考に入れます。

これはサクッと入ります。

Windows 10でLinuxプログラムを利用可能にするWSL(Windows Subsystem for Linux)をインストールする


Docker for Windows

インストーラを公式からダウンロードし、インストール

https://docs.docker.com/docker-for-windows/install/

※stable channelとedge channelがありましたが、今回は安定を選びました


設定


DockerをWSL上で動かせるようにする

WSL内でDockerエンジンを動かすことができないため、Windows上でDocker Engineを起動し、WSLからはDocker daemonへアクセスするように設定します。(詳しくはよくわかりませんが・・・)



  • Docker側の設定


    1. タスクバーのインジゲータからDockerアイコンを右クリック

    2. 設定を開き、全般(General)タブの"Expose daemon on tcp://localhost:2375 without TLS"にチェックを入れる

    setting.PNG




  • WSL側の設定



    • ~/.bashrcに以下を追記

    export DOCKER_HOST=tcp://0.0.0.0:2375
    
    alias docker="DOCKER_HOST=${DOCKER_HOST} docker"
    alias docker-compose="docker-compose -H ${DOCKER_HOST}"



ボリュームマウント

dockerでボリュームマウントオプションを入れてもボリュームマウントができていない問題ハマったので、メモに残します。



  • Docker側の設定


    1. タスクバーのインジゲータからDockerアイコンを右クリック

    2. 設定を開き、"Shared Drives"タブにてマウントしたいディレクトリがあるディスクを選択

    3. "Apply"で設定を適用し、起動中であれば念のためDockerを再起動




  • WSL側の設定

    WSLでは/mnt配下にディスクがマウントされている状態です。

    一方、Docker for Windowsでは/直下にディスクがマウントされているみたいです。

    その環境誤差気づかずにdocker run -v /mnt/c/Path2MntDir <Docker image>を必死に叩いていたため、ボリュームマウントが上手くいかない現象が起きていたようです。

    Githubのissueで解決しました。


    1. mkdir /c

    2. mount --bind /mnt/c /c

    3. docker run -v /mnt/c/Path2MntDir <Docker image>




まとめ


  • インストール自体は簡単

  • WSLがDocker for Windowsのdaemonに疎通できる設定が必要

  • ボリュームマウントがしたい場合はWSLとDocker for Windowsの設定値に注意

快適な開発環境へ向けて第一歩を踏み出せました。