読者です 読者をやめる 読者になる 読者になる

aspec7's garage

エンジニア生活の中で学んだことの備忘録

Docker for Windows Private beta も使えるようになったので早速使ってみた!(ただし仮想環境で)

f:id:aspec7:20160318095017j:plain

Docker for Windows

Docker for Macと同じprivate beta版です。
Docker for Mac についての記事は、こちらをどうぞ

Windows10 Pro環境がParallels Desktop 10にあったので、これにbeta番入れて動かしてみました。

インストール

これは、普通にインストーラーをポチポチしていけばOKです。
Hyper-Vも使えるようにしてくれます。
(インストール時にWindowsのBuildが古いと、インストーラが注意してくるのでWindows Updateしないといけません。)

Docker起動!

Hyper-VでAlpine Linuxが裏で動くんですが、Mac版と違いものすごい不安定です・・
ちなみにDocker runningの状態になるまでも時間がかかります。(1分くらい待たされる)
そしてコマンドは、コマンドプロンプトかPower Shell経由のみみたいです。

とりあえず動かせるようになったので、psしてみました。

C:\Users\hoge>docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

そして、version

C:\Users\hoge>docker version
Client:
 Version:      1.11.0
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   4dc5990
 Built:        Wed Apr 13 19:36:04 2016
 OS/Arch:      windows/amd64

Server:
 Version:      1.11.0
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   a5315b8
 Built:        Thu Apr 14 10:01:32 2016
 OS/Arch:      linux/amd64

タスクバーのクジラさん

タスクバーにMac版と同じようにクジラさんが常駐します。
でもちょっとメニューが違います。
Kitematic使えないみたいですね。 beta8から使えるようになりました!

  • beta7
    f:id:aspec7:20160416181026p:plain

  • beta8
    f:id:aspec7:20160421070041p:plain
    f:id:aspec7:20160421070107p:plain

Settingsの中も違います。

f:id:aspec7:20160416181045p:plain

マウントするボリュームは選択しないとダメみたいです。
toolbox版ではスラッシュ2本//必要でしたが、不要になったみたいですが試せず・・

f:id:aspec7:20160416181057p:plain

Factory Resetはこんな感じの画面が開きます。

f:id:aspec7:20160416181110p:plain

コンテナを動かしてみるものの・・

hello-worldはとりあえず動きました。

C:\Users\hoge>docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
03f4658f8b78: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7
Status: Downloaded newer image for hello-world:latest

Hello from Docker.
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker Hub account:
 https://hub.docker.com

For more examples and ideas, visit:
 https://docs.docker.com/userguide/

imageも保存されてます。

C:\Users\hoge>docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              690ed74de00f        6 months ago        960 B

しかし!
ubuntuイメージは、pull直後でsegmentation faultで落ちます・・

C:\Users\hoge>docker run -it ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
759d6771041e: Extracting [==================================================>] 65.69 MB/65.69 MB
8836b825667b: Download complete
c2f5e51744e6: Download complete
a3ed95caeb02: Download complete
docker: failed to register layer: Untar re-exec error: signal: segmentation fault: output: .
See 'docker run --help'.

C:\Users\hoge>

もうこうなると、ホストOSのAlpine Linuxもダメになるようで、もう一度実行すると、コネクションエラーに。
この状態だともうdockerコマンドは全て同じコネクションエラーで使えなくなりました・・

C:\Users\hoge>docker run -it ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu

759d6771041e: Extracting [===>                                               ] 5.014 MB/65.69 MB
8836b825667b: Download complete
c2f5e51744e6: Download complete
a3ed95caeb02: Download complete
docker: Error response from daemon: dial tcp 10.0.75.2:2375: connectex: No connection could be made because the target machine actively refused it..
See 'docker run --help'.

C:\Users\hoge>

どうにかならないのか

Windowsを再起動すれば、またDockerコマンド使えるようになったりすることもあるんですが、ダメな時もありその時はもうSettingsからReset to factory defaults..してあげないとダメでした。
他にnginxやpostgresqlのイメージも復旧しては試してみたものの、やはりどれもpull直後にsegmentation faultになる始末。

まとめ

  • コマンドプロンプト(or PowerShell)からdockerコマンドが使える!
  • けど動くのhello-worldだけだった・・
  • Bash on Ubuntu on Windowsからはコマンド認識せず
  • Dockerの起動は結構時間かかる
  • 一回不調になるとリセットしないと動かなくなる
  • つまり使い物にならなかった・・・
  • 仮想環境だからだったりするのかな・・?