Help us understand the problem. What is going on with this article?

Docker Toolbox がクラサバ環境で稼働している様子を観察してみた

More than 1 year has passed since last update.

プログラマのためのDocker教科書 (第1版) という本を読んだのですが、122 ページにあった以下の言葉で、理解し辛かったモヤモヤが晴れた気がします。

Docker はクライアント/サーバーアーキテクチャーを採用しており、DockerクライアントとDockerサーバーがRemote API経由で接続されています。そのため、docker ps などのコマンドはすべてサーバに送られて処理されます。

実際に確認してみます!

Windows 環境における Docker

Windows 10 Pro を所有する者は幸いである、Docker for Windows を使えるから。

僕は自宅は Windows 10 Home、職場は Windows 7 Pro というイマイチな環境なので、どちらも Docker Toolbox しか使えないんですよね。悲しいです。

というわけで、Docker Toolbox 環境におけるDocker のクライアント・サーバー環境について確認していきましょう。

Docker Toolbox のインストール

Docker Toolbox をインストールすると、以下が導入される模様。

  • Docker Machine を管理する docker-machine コマンド
  • Docker Engine を管理する docker コマンド
  • Docker Compose を管理する docker-compose コマンド
  • Docker GUI の Kitematic (α版)
  • bash 環境 (Git for Windows)
  • Oracle VirtualBox

また以下の環境変数がセットされました。

DOCKER_CERT_PATH=C:\Users\z\.docker\machine\machines\default
DOCKER_HOST=tcp://192.168.99.100:2376
DOCKER_MACHINE_NAME=default
DOCKER_TLS_VERIFY=1
DOCKER_TOOLBOX_INSTALL_PATH=C:\local\dev\Docker Toolbox

Docker クライアント

Docker は以下のショートカット・アイコンで開始します。
image.png
このショートカットに設定されている実行コマンドはこちら。bash で start.sh というシェルスクリプトを実行しています。

C:\local\dev\Git\bin\bash.exe --login -i "C:\local\dev\Docker Toolbox\start.sh"

さて、ショートカットから起動してみましょう。最初の起動にはわりと時間がかかると思いますので、待ちましょう。

起動した Docker 環境がこちら。単なる bash 環境に、Docker の welcome メッセージが表示されているように見えますね。
image.png
そう、それで正解。これは docker 用にパスなど環境変数を事前にセットされた、単なる MinGW 上の bash 環境なのです。システム階層を簡単に表現すると、こんな感じ。

bash.exe
MSYS/Mingw-w64
Windows 10 Home

ただし、先ほどの start.sh というシェルスクリプトには docker-machine コマンドが含まれており、裏でこっそり Docker サーバーを起動しています。最初の起動に時間がかかるのは、裏でサーバーが起動するのを待っているため。

Docker サーバー

さて、裏でこっそり起動される Docker サーバーについて確認しましょう。Oracle VM VirtualBox アイコンで VirtualBox を起動します。
image.png
すると Docker Toolbox インストール時に default という仮想マシンが作成されていることがわかります。これが Docker のサーバー側を担います。
image.png
ちなみにこの仮想マシンの設定を変えれば、Docker 実行環境のスペックが変わりますね。例えば上記ではメモリ量が1024MB=1GBですが、これを変更すればメモリ量を増加できたり。ストレージの容量を変更したり、ストレージを追加したり。

気になったポイントとしては、ユーザーフォルダを共有していること。
image.png

このフォルダ配下には個人的なファイルや、設定ファイルがいろいろ入っていて、セキュリティ的にちょっと不安ですが大丈夫でしょうか… 個人写真を勝手にネットに上げちゃう悪意ある Docker イメージなんて出回っていないですよね。って心配性な自分ですw

まあ、それはさておき。

Linux起動用に boot2docker.iso のディスクイメージと、ストレージ用に disk.vmdk ディスクファイルが設定されていますね。以下のファイルのようです。
image.png
さて、裏でこっそり起動している Docker サーバーとやらを、見てみましょう。といっても簡単、VirtualBox から該当イメージを「通常起動」するだけ。
image.png
ほら、仮想マシン上で boot2docker 環境、つまり Docker 用の Linux 環境が普通に起動してくれます。
image.png
システム階層を簡単に表現すると、こんな感じ?

bash
Docker デーモン
boot2docker ディストリビューション
Linux OS
Oracle VM VirtualBox
Windows 10 Home

まあ、普通はクライアント側で docker-machine ssh default で接続して使えばいいので、わざわざ仮想マシン側を表に出して起動する意味はありませんが。
image.png

ちょっとした遊び

docker-machine コマンドか、VirtualBox のほうで default 仮想マシンを終了しておきます。ここで Docker クライアントを起動すると、起動に時間がかかるわけなのですが…

VirtualBox のほうも起動しておくと、裏でサーバーとなる仮想マシン default がこっそり起動していて、それをクライアントが待っている様子がよくわかります。一度、並べて見てみてくださいw
image.png

というわけで

Docker Toolbox をインストールして起動してみた、だけのネタだったりします。

ただ自分としては Docker がクラサバ環境で動いている、という情報が新鮮だったので、それを実際に試してみた、のでわりと面白かったです。

さーて、本は読んだし、モヤモヤも晴れたし、これから Docker について何か試してみますかね。

ではでは!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした