yan's Handicraft

作成したフリーソフトを公開
Home » PC/システム開発 » Docker » WindowsでDocker(Docker for Windows)

WindowsでDocker(Docker for Windows)

3月 28th, 2015 Posted in Docker, PC/システム開発
このエントリーをはてなブックマークに追加
はてなブックマーク - WindowsでDocker(Docker for Windows)
Facebook にシェア
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]

かつて、Windowsマシン上でDockerを使用するには、
Vagrant、VirtualBox、DockerをプロキシするLinux(coreos など)を 自力で組み合わせて環境構築する必要がありました。

「Docker for Windows Installer」(Docker公式)を使うと、それだけでDockerが利用できるようになった模様です。

メンバーに同じテスト環境を配布できたらうれしいので、ちょっとやってみます。

「Docker for Windows Installer」 インストール

  • Docker公式サイトで配布されている 「Docker for Windows Installer」 をつかってインストールする。
    最新版にたどり着くためには 「Windows用インストーラの説明サイト」 から”Docker for Windows Installer”のリンクをたどってインストーラを探すのがよいかと思う。
  • インストーラ docker-install.exe を実行して、インストールウィザードに従うと、 「Boot2Docker For Windows本体」「VirtualBox」「MYSYS-git」 がセットでインストールされる。
    「VirtualBox」「MYSYS-git」がすでにインストール済の場合は、 インストールしなおすかそのまま使うか選択できる。
  • インストールが完了すると、 「Boot2Docker Start」というショートカットがデスクトップにできる。

boot2docker 最新化

Windowsのコマンドとして、以下を実行。 (コマンドプロンプトやPowerShellのプロンプトで実行)

boot2docker download

boot2docker の開発は活発で、はまだまだ頻繁にアップデートされそう。たまにったほうがよさそう。

ちなみに、 boot2docker コマンドは、「Docker for Windows Installer」 によって、Windowsの環境変数にパスが通る。

Dockrのホスト役のVM作成・起動・停止

Dockrのホスト役のVM boot2docker-vm を作成する

C:\hoge > boot2docker init

VMのディスクサイズを指定したければ以下 (単位はMB。あまり巨大なサイズを指定すると時間がかかる傾向にある)

C:\hoge > boot2docker init --disksize=100000

init により、Virtualbox にVMが作成される。

boot2docker-vm を起動する

boot2docker start

(20015-03-28 時点 C:\Users が VM上の /c/Users/ としてアクセスできるように共有設定されていた)

boot2docker-vm を停止する

boot2docker stop

boot2docker-vm を削除するする

作った boot2docker-vm を作り直したかったら以下を実行。

boot2docker delete

Boot2Dockerで使用するターミナルについて

boot2docker を使用するにあたっては、「Windows のコマンド」、 「ssh コマンドで Linux VM に接続」 「Linux ターミナル内で、linux のコマンド操作」と 色々なコマンド操作が必要になる。

私は、「GitHubForWindows のシェル」だけで、全部操作してしまうのをお奨めする。
(別途 GitHubForWindows をインストールする必要あり)

以下、使えそうなターミナルの特徴をいくつかご紹介する。

  • GitHubForWindows のシェル (PowerShellのターミナルベース)

    • 「windows コマンド」・・・
    • ssh接続 ・・・
      • boot2docker ssh とするとssh接続できる。
      • ssh接続してしまえば、linux コマンドが普通に操作できる
  • コマンドプロンプト

    • 「windows コマンド」・・・
    • ssh接続 ・・・ 不可
  • MYSIS GIT Bash

    • 「windows コマンド」・・・ 一部可。 (boot2docker コマンドは使用できる)
    • ssh接続 ・・・
      • boot2docker ssh とするとssh接続できる。
      • ssh接続してしまえば、linux コマンドが普通に操作できる
  • ターミナルソフト (“teraterm”、”putty” など)

    • 「windows コマンド」・・・ 不可
    • ssh接続 ・・・
      • %USERPROFILE%\.ssh\id_boot2docker にboot2docker用の秘密鍵が 作成されているので、これを使ってSSH接続する。
      • IPアドレスは boot2docker ip で調べられる。
      • linuxターミナルに限った使い勝手としては、一番良いと思われる。
  • Boot2Docker Start (boot2dockerをインストールするとデスクトップにできるショートカットから起動)

    • 「windows コマンド」・・・ 不可
    • ssh接続 ・・・
      起動すると、ssh接続した状態になる。このターミナルからは、 boot2docker-vm を停止させられない。 いけてない。

Dockeコンテナ動作確認

GitHubForWindows のシェルを使用するのを前提に以下説明します。 別のターミナルを使う場合は適当に読み替えてください。

Docker が用意しているサンプルイメージ hello-world を使って動作確認。

C:\hoge > boot2docker ssh

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
511136ea3c5a: Pull complete
31cbccb51277: Pull complete
e45a5af57b00: Pull complete
hello-world:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should n
ot be relied on to provide security.
Status: Downloaded newer image for hello-world:latest
Hello from Docker.
This message shows that  ... 以降省略 ...

問題なければ上ようにdockerのimageがダウンロードされて動作し、 Hello from Docker. が表示されるはず。

Docker Compose について

複数の DockerコンテナをYAMLファイルで管理するツール。 (Docker Compose は fig の後継)

2015-03-28 時点では、boot2docker-vm 上で動かすことができない。
使用したい場合は、別途 Linux VM を立てて、 Docker Composeをインストールする必要があると Docker の issue 管理の回答では述べられている。 VM boot2docker-vm に色々ライブラリをインストールしてやると、動かせるかもしれないが不明。 (Docker Compose は fig の後継) 今後に期待。

関連URL

  • Docker Compose — http://docs.docker.com/compose/
  • Fig — http://www.fig.sh/
  • 動かないことを説明している issue
    • https://github.com/docker/compose/issues/1032
    • https://github.com/docker/compose/issues/599
  • 「Windows で動かしたいね」という issue
    • https://github.com/docker/compose/issues/1085

感想

  • 同じ環境を何度も簡単に作り直せそう。
    • Doker hub には、Docker公式のイメージもたくさんあり、使えそう。
  • Docker Compose が現時点使えないので、 複数サーバを組み合わせた環境を作るには面倒。意図通りのテスト環境を配布するのは少し苦労しそう。
    (Vagrant の Provider を利用して dockerコンテナを作る方法も検討したい。)

おしい。


特記事項: プロキシ

プロキシが必要な環境では、 docerコンテナがインタネットアクセスする際に失敗してまう。 以下対応策。

  • boot2docker-vm にsshログインして作業する。
$ sudo vi /var/lib/boot2docker/profile
  • 設定する内容
export HTTP_PROXY=http://your.proxy.url:8080
export HTTPS_PROXY=http://your.proxy.url:8080

http://your.proxy.url:8080 部分はご自分の環境の値に設定してください。

  • 設定後、Dockerコンテナを再起動
$ sudo /etc/init.d/docker stop
$ sudo /etc/init.d/docker start
  • 参考
    /etc/init.d/docker スクリプト内で、 /var/lib/boot2docker/profile を実行するようになっている。
    このため、これで解決できるのは、docker コンテナからのアクセスだけ。 VM boot2docker-vm から直接、インターネットアクセスするには、 いちいち環境変数設定したり、プロキシーのパラメータを設定しないと解決しない。

Leave a Reply

*