初老のボケ防止日記

おっさんのひとりごとだから気にしないようにな。

Docker for Windowsを試してみた

Dockerんと景気よくやってみた

3月末にニュースで知って登録していたDocker Private Beta、すっかり忘れていたけれどもGW中にメールが来ていた。

japan.zdnet.com

何が違うの

以下、公式より抜粋

Docker for Mac and Docker for Windows are faster, more reliable alternatives to Docker Toolbox for running Docker on these platforms. Here are some highlights of the new products.

  • Faster and more reliable - No more VirtualBox! On Mac, the Docker Engine runs in an xhyve Virtual Machine (VM) on top of an Alpine Linux distribution. The VM is managed by the native Docker application. On Windows, the Docker Engine is running in a Hyper-V VM. You do not need Docker Machine (docker-machine) to run Docker for Mac and Docker for Windows.

https://beta.docker.com/docs/features-overview/

VirtualBox使わなくてよくなったぜ!

というのがウリ

インストール

ということで、インストールしてみた。
なお、2016/5/10時点はBETA版なので登録後にメールで送られてくるトークンがないと使えません。

f:id:osa030:20160510080048j:plain

上記でダウンロードしたインストーラを実行して普通にインストール。

f:id:osa030:20160510080059j:plain

こんなにかわいいアイコンができます。

f:id:osa030:20160510080054j:plain

起動すると、「Hyper-Vが必要だから有効にするかい?」と聞いてくるので「Install & Restart」で有効化して再起動。

f:id:osa030:20160510080103j:plain

今度はメールのトークンを入力して「Submit」

f:id:osa030:20160510080107j:plain

起動しました。

f:id:osa030:20160510080114j:plain

タスクバーの通知エリアにDocker美(仮名)が。

f:id:osa030:20160510080110j:plain

Docker美を右クリックでメニューがでる。

試してみた

インストールしたので何かしてみる。なお、今回はGitのbashで試す。

OS Windows10 10.0.10586
bash Git version 2.8.0

CLIを試す。Docker for Windowsにはdocker-composeとdocker-machineも含まれている。

Docker Compose
Docker Machine

  • docker
$ docker version
Client:
 Version:      1.11.1
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   5604cbe
 Built:        Wed Apr 27 00:34:20 2016
 OS/Arch:      windows/amd64

Server:
 Version:      1.11.1
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   8b63c77
 Built:        Fri Apr 29 14:13:26 2016
 OS/Arch:      linux/amd64

go-lang製だ

  • docker-compose
$ docker-compose version
docker-compose version 1.7.0, build 0d7bf73
docker-py version: 1.8.0
CPython version: 2.7.11
OpenSSL version: OpenSSL 1.0.2d 9 Jul 2015

python製だ

  • docker-machine
$ docker-machine version
docker-machine.exe version 0.7.0, build a650a40

Windowsネイティブなのかな?

チュートリアルにしたがって何かしてみる。

Hello world in a container

$ docker run ubuntu /bin/echo 'Hello world'
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu

6d28225f8d96: Pull complete ================================================>] 48.35 MB/48.35 MBB
166102ec41af: Pull complete ================================================>]    755 B/755 BB
d09bfba2bd6a: Pull complete ================================================>]    519 B/519 BB
c80dad39a6c0: Pull complete ================================================>]    677 B/677 BB
a3ed95caeb02: Pull complete ================================================>]     32 B/32 BB
Digest: sha256:5718d664299eb1db14d87db7bfa6945b28879a67b74f36da3e34f5914866b71c
Status: Downloaded newer image for ubuntu:latest
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Container command 'C:/MyApp/Git/usr/bin/echo' not found or does not exist..

突然のエラー!

実はこれはGit bashのせい。"/bin/echo"を自分のコマンドと勘違いしているだけ。adbの時にハマったやつ。

stackoverflow.com

ということで、スラッシュで始まるパス文字列の先頭にスラッシュをつけると回避できる。

$ docker run ubuntu //bin/echo 'Hello world'
Hello world

ハローワールド

$ docker run -t -i ubuntu //bin/bash
root@001eda79ed21:/# pwd
/
root@001eda79ed21:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@001eda79ed21:/# uname -a
Linux 001eda79ed21 4.4.6-moby #1 SMP Fri Apr 29 14:12:19 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
root@001eda79ed21:/#

コンテナ上でbash起動

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
001eda79ed21        ubuntu              "//bin/bash"        39 seconds ago      Up 36 seconds                           compassionate_bell

bash起動中のコンテナ確認

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              c5f1cf30c96b        5 days ago          120.8 MB

イメージも普通に見えている

とりあえず簡単に触っただけであるけれども、Linux上にインストールしたのと変わらない。ボリュームのマウントとかポート転送とかはBETA版なので色々とありそうだけれども、とりあえずは普通に使えて父さん感動しました。

プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化

プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化

Docker 実践ガイド (impress top gear)

Docker 実践ガイド (impress top gear)