20151123_Docker_toolbox_image

モチベーション

最速でMacOSXのDocker環境を構築する。

Docker Toolboxとは?

Docker ToolboxとはDocker社が公式で提供しているWindowsやMacなどのPCでDocker環境を簡単に構築するパッケージのこと。手元のPCで試しにDockerを動かしてみたいときはとりあえずこれを入れれば良い。

Docker Toolboxが含むDockerツール群

Docker Toolboxでは以下のツールがインストールされる。

ツール名称 役割
Docker Client WindowsやMacからdockerコマンドを実行できるようにする
Docker Machine Docker Engineが動くホストをローカルやリモートに構築する (旧boot2docker)
Docker Compose 複数のコンテナをYAMLで管理する
Docker Kitematic GUIでコンテナを管理する。VM管理におけるVirtualboxのような位置づけ
VirtualBox Dockerを動かすVMの構築をする

これらのツールは下図のような相関になる。

20151123_docker_tools_relation (参考:http://devcenter.magellanic-clouds.com/learning/docker-toolbox.html)

Docker Toolboxのインストール

それではDocker Toolboxをインストールする。公式のDocker ToolboxからMac OSX用のイメージをダウンロードする。ダウンロードしたDockerToolbox-X.Y.Z.pkg(X,Y,Zはバージョンを表す数字) を実行すると、インストレーションガイドが始まる。

20151123_docker_toolbox_installation01

これに従いDocker Toolboxをインストールする。

20151123_docker_toolbox_installation02

Docker Toolboxのダウンロードからここまで10分。

Kitematicを使ってみる

コンテナをGUIで管理できるKitematicを使ってみる。spotlightでkitematicを検索実行する。

20151123_search_ketematic

初回実行時は以下のような画面が表示されDocker MachineでVirtualbox上にDockerホストを構築する。

20151123_build_host_vm_with_docker_machine(boot2docker)

VMの構築が終わるとDocker Hubへの連係画面が出て来るが、今回は連係しないで使うため、SKIP FOR NOWをクリックする。

201512_finish_build_docker_host

KitematicのGUIが表示されコンテナの操作が可能になる。Docker Hubのパブリックなコンテナイメージを使ってもコンテナを作れるみたいなので、今回はhello-world-nginxコンテナを作ってみる。CREATEをクリックする。

20151123_images_on_Dockerhub

CREATEをクリックしてからものの10秒くらいでコンテナが起動する。nginxで表示されるindex.htmlを確認するためにWEB PREVIEWのボタンをクリックする。

20151123_open_web

すると、nginxのコンテナが起動しているというメッセージがブラウザで表示される。

20151123_docker_nginx_hello_world

また、EXECボタンを押すことでコンテナ内のshellに接続できる。

20151123_open_shell

20151123_shell

コンテナ版のVirtualboxだ。

Docker Quickstart Terminalを使ってみる

今度はCUIでDockerを操作する。spotlightでDocker Quickstart Terminalを検索して実行する。すると、ターミナルが自動で開き、192.168.99.100のVM上でDockerホストが構築されたというメッセージが表示される。


➤  bash --login '/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh'
Machine default already exists in VirtualBox.
Setting environment variables for machine default...


                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/


docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com

そのまま、Dockerコンテナを構築するコマンドを実行する。すると、PC上にコンテナイメージがない場合はDocker Hubから取得後、コンテナが構築される。


➤  docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world

b901d36b6f2f: Pull complete
0a6ba66e537a: 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/

構築したコンテナのIDを調べる。

➤  docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
bf9a641aa50b        hello-world         "/hello"            6 minutes ago       Exited (0) 6 minutes ago                       silly_hopper

構築したコンテナを削除するには以下を実行する。

➤  docker rm bf9a641aa50b
bf9a641aa50b

➤  docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

これでDocker環境がMacに導入された。

おまけ:Docker Toolboxのアンインストール

2015.11.23現在はDocker Toolboxのインストーラにアンインストール機能は無いようだ。Github上のDocker Toolboxのレポジトリを見ると、アンインストール用のスクリプトが用意されているがVirtualboxのインストールはされないみたい。

参考