2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-11-20

プログラマのための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 について何か試してみますかね。

ではでは!

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?