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

Windows Subsystem for Linux + Docker for Windows を使えるようにするまでメモ

More than 3 years have passed since last update.

参考 URL

Win10 で Windows Subsystem for Linux

  1. 「Windows 10 Fall Creators Update」の更新を充てる
  2. 管理者モードでPowerShellウィンドウを起動して以下のコマンドを実行する(実行後、再起動が要求されると解説されていたがされなかった)

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
    
  3. 「Microsoft Store」から "Windows Subsystem for linux" で検索してディストリビューションを見つける

  4. ディストリビューションを「入手」でインストールする

  5. この 「Ubuntu」を起動すると実際の WSL へのインストールが行われ、Ubuntu のプロンプトウィンドウが起動する

    スクリーンショット 2018-01-25 10.13.24.png
    ユーザー名とパスワードを入力して、作業ユーザーを作成してセットアップ完了する

注意点

どうも「Windows 10 Fall Creators Update」をインストールすると、MS 謹製の sshd がインストールされ勝手に(Windows のサービスとして)起動する状態になる様なので注意。

殺しておかないと、VirtualBox や WSL 側の sshd に入れないのでハマる。

デフォルトでパスワード認証設定の様なのでセキュリティー的にも好ましくない。

Docker

Docker for Windows のインストール方法は省略する。

Ubuntu への Docker のインストール方法は公式のインストール方法を参照。

現時点では参考URL “Docker for Windowsで快適な環境を得るまでの そこそこ長い闘い - Qiita” の「Bash on WindowsでDockerのインストール」の内容と同じ。

古い Docker がインストール済みの場合削除しておく必要があるので注意

準備

apt パッケージインデックスの更新

$ sudo apt-get update

apt が HTTPS を通してパッケージをインストール出来るようにする

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

Docker の公式 GPG キーを追加する

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

GPG キーの目視ベリファイ(DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88

$ sudo apt-key fingerprint 0EBFCD88

pub   4096R/0EBFCD88 2017-02-22
      Key fingerprint = 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid                  Docker Release (CE deb) <docker@docker.com>
sub   4096R/F273FCD8 2017-02-22

Docker の apt-get リポジトリを stable リポジトリとしてセットアップする

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Docker CE のインストール

aptのパッケージインデックスを更新する。( Docker の apt リポジトリをセットしたので)

$ sudo apt-get update

インストール

$ sudo apt-get install docker-ce

バージョンを指定する場合は以下のコマンドで利用可能なバージョンを確認して

$ apt-cache madison docker-ce

バージョン指定インストール

$ sudo apt-get install docker-ce=<VERSION>

Hellow World テスト

$ sudo docker run hello-world

→ この段階では動かない

Docker for Windows との協調設定

以下二項の設定を行う事により、 WSL 側 Docker クライアントが Win 側の Docker engine を使用する様になってくれる模様。

Ubuntu on WSL

~/.bashrc に以下を書き込んでおく

export DOCKER_HOST='tcp://0.0.0.0:2375'

Docker for Windows の設定

  • 「Settings」 の 「General」 で「Expose daemon on tcp://localhost:2375 without TLS」にチェックする
  • 「Shared Drives」で WSL にマウントするボリュームをチェックする

パーミッションの問題

WSL + Ubuntu では自動的に C ドライブを /mnt/c にマウントしてくれる。

etc/fstab などに記述されているわけではないので VirtualBox の自動マウントのような仕組みと思われる。

/mnt/c の制約

  • パーミッション・オーナーが root:root の 0777
  • パーミッション変更不可

Virtual Box + Ubuntu のボリュームマウントの制約と同じで意味が無い

じゃあどうするか

によれば普通に mount コマンドでマウントできると書かれているので、任意のディレクトリを任意のパーミッションでマウントできるかやってみる。

$ sudo mount -t drvfs -o uid=tettekete,gid=tettekete C:\Users\tettekete\wsl_share /mnt/wsl_share
mount: wrong fs type, bad option, bad superblock on C:\Users\tettekete\wsl_share,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

→ ディレクトリをマウントすることはできない(ドライブ単位でしか出来ない模様)

samba という選択

Win 側ディレクトリを好きなパーミッションでマウントできないなら WSL 側ディレクトリを共有すればいいじゃない、

と Samba の中の人も考えたらしい。

が、これ以上のキメラ環境は精神衛生上好ましくないのでおとなしく Docker for mac を使った方が良い気がする。

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