Knowlbo 開発者ブログ

株式会社Knowlboの開発者ブログです。

Docker for Windows 1.13.0 が出たので Linux コンテナと Windows コンテナの切り替え機能を試してみる

開発部の本橋です。

Docker 1.13.0 の安定版がリリースされました。それに伴って Docker for Windows 1.13.0 の安定版もリリースされています。

Docker for windows

従来 Linux コンテナと Windows コンテナの共存は「出来なくはないがとても面倒」な状況でしたが、Docker for Windows 1.13.0 では簡単に共存、そして切り替えが出来るようになりました。ということで早速使ってみました。

コンテナの切り替え

タスクトレイの Docker アイコン右クリックすると「Switch to Windows Containers…」 または 「Switch to Linux Containers…」 というメニューが出て来るのでクリックします。

f:id:knowlbodev:20170125174820p:plain

数秒時間がかかりますが、「Docker is switching…」のアイコンが消えれば完了です。

f:id:knowlbodev:20170125174829p:plain

どっちのコンテナを使っているか?

docker version の出力の Server の OS/Arch でわかります。

Linux コンテナの場合は「linux/amd64」となっています。

> docker version
Client:
 Version:      1.13.0
 API version:  1.25
 Go version:   go1.7.3
 Git commit:   49bf474
 Built:        Wed Jan 18 16:20:26 2017
 OS/Arch:      windows/amd64

Server:
 Version:      1.13.0
 API version:  1.25 (minimum version 1.12)
 Go version:   go1.7.3
 Git commit:   49bf474
 Built:        Wed Jan 18 16:20:26 2017
 OS/Arch:      linux/amd64
 Experimental: true

Windows コンテナの場合は「windows/amd64」となっています。

>docker version
Client:
 Version:      1.13.0
 API version:  1.25
 Go version:   go1.7.3
 Git commit:   49bf474
 Built:        Wed Jan 18 16:20:26 2017
 OS/Arch:      windows/amd64

Server:
 Version:      1.13.0
 API version:  1.25 (minimum version 1.24)
 Go version:   go1.7.3
 Git commit:   49bf474
 Built:        Wed Jan 18 16:20:26 2017
 OS/Arch:      windows/amd64
 Experimental: true

Linux コンテナ

ごく普通に使えます。

> docker pull debian
> docker run -it debian /bin/bash
(ここからコンテナ)
# uname -a
Linux 9c4b258fd680 4.9.4-moby #1 SMP Wed Jan 18 17:04:43 UTC 2017 x86_64 GNU/Linux

Windows コンテナ

こちらもごく普通に使えますね。

> docker pull microsoft/windowsservercore
> docker run -it microsoft/windowsservercore cmd
(ここからコンテナ)
> systeminfo
Host Name:                 E631F61C1E29
OS Name:                   Microsoft Windows Server 2016 Datacenter
OS Version:                10.0.14393 N/A Build 14393
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Standalone Server
(略)

images とか ps

docker imagesdocker ps で見えるイメージやコンテナの一覧は現在有効な方しか表示されないようです。

> docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
debian              latest              e5599115b6a6        8 days ago          123 MB

(ここで切り替え)

> docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
microsoft/aspnet              latest              e761eca2f8df        6 days ago          10.1 GB
microsoft/windowsservercore   latest              4d83c32ad497        2 weeks ago         9.56 GB

コンテナが動いている時に切り替えると?

ステータスが「Up」のコンテナがあるときに切り替えても「Exited」になったりはしないようです。ただし docker ps してもコンテナは見えません。

> docker run -d -p 8081:80 nginx

(ブラウザで http://localhost:8081 にアクセスすると nginx がちゃんと返してくれる)

(ここで切り替え)

(切り替え後も nginx はちゃんと返してくれる)
(ただし ps しても nginx は見えない)
> docker ps
CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS              PORTS               NAMES
e631f61c1e29        microsoft/windowsservercore   "cmd"               11 minutes ago      Up 10 minutes                           festive_boyd

Linux コンテナも Windows コンテナも両方気軽に使えるようになりました!