投稿者:大島

こんにちは、大島です。 皆様Docker利用されてますか?
弊社でも案件でDockerを使う事が増えてきましたが、多分世の中のIT担当者のPCはまだWindowsの32bit環境が多いのではないでしょうか?
32bit環境でDockerを利用する場合は、ちょっと準備が必要となりますので、今回はDockerが利用できるまでの環境構築方法を紹介したいと思います。
 

用語説明

環境準備の前に用語を記載しておきたいと思います。用語についてはDocker本家のドキュメントより拝借しております。

  1. コンテナ=Dockerコンテナ

    • コンテナ(container)は docker イメージ を実行するときの実体(runtime instance)です
  2. イメージ

    • Docker イメージは コンテナ の元です
  3. ホスト=Dockerホスト

    • コンテナーを実行するための実行環境のこと。コンテナを実行するためにはDocker Engineが必要
  4. Docker Engine=エンジン

    • ホスト上で動く docker デーモンのプロセスであり、イメージとコンテナを管理します
  5. machine=Docker machine

    • Machine (マシン)は Docker ホストを簡単に作成できるようにするツールであり、クラウド・プロバイダ上やデータセンタでも利用できます。Machine はサーバを作成し、そこに Docker をインストールし、Docker クライアントで通信できるように設定します。

出典:http://docs.docker.jp/glossary.html#container, 2018/03/16
 

前提知識

コンテナーを動かすためにはDocker Engineが必要になりますが、このEngineが今のところWindows32bit環境では動かない仕様になってます(残念)。
なので、32bitのWindowsでDockerを動かそうと思うと、実はDocker Engineに対応しているOSをWindows32bit上に仮想構築として構築しないとだめです。 この仮想環境がDockerホストとなり、イメージだと以下のような図になるかと思います。

001.jpg

Google先生に「windows 32bit docker 構築」と聞いてみるとよく「Vagrant+Virtualbox」で環境を構築している記事があるかと思いますが、これはVirtualboxが仮想化ソフトでVagrantがVirtualbox上で動く仮想環境とDocker Engine部分の構築をさくっと準備してくれているイメージになります。

002.jpg

今回ですが、なるべくDocker公式で提供されているツールを使って環境を準備出来ないかと調べていた所、Vagrantが担っている仮想環境構築部分をDocker machineという公式ツールが簡単に行ってくれる事がわかりましたので、Docker machineでの環境準備方法をご紹介したいと思います。

003.jpg
 

作業前にローカルPCにインストールが必要な物

作業を始める前に以下のツールをインストールして下さい

  1. chocolatey - https://chocolatey.org/

    • apt-getのようなwindows版パッケージ管理システムです
    • これでDocker-machineをWindowsにインストールします(あえてchocolateyを使うのは、2018年03月時点ですとDocker公式サイトから直接Docker-machineをインストールした場合、仮想環境構築に失敗したからです。chocolateyでインストールしたDocker-machineだと環境構築に無事成功しましたが、私が使用しているPCがだめなのか、最新のDocker-machineバージョンだとだめなのかは分からずじまいでした)
  2. Virtualbox

作業手順

  1. chocolateyを使ってDocker-machineをインストール
$ choco install docker-machine -y
  1. docker-machineコマンドでdockerホスト環境をvirtualbox上に構築
$ docker-machine create --driver virtualbox dockerhost
Running pre-create checks...
Creating machine...
<<省略>>
Docker is up and running!
To see how to connect Docker to this machine, run: docker-machine env dockerhost

$ docker-machine ls
NAME         ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
dockerhost   -        virtualbox   Running   tcp://192.168.99.100:2376           v17.12.1-ce

$ docker-machine ssh dockerhost
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 17.12.1-ce, build HEAD : 42357fc - Wed Feb 28 17:52:00 UTC 2018
Docker version 17.12.1-ce, build 7390fc6
docker@dockerhost:~$

※boot2docker: Docker コンテナの実行に特化した Linux ディストリビューションです

以上です、以外に簡単にできてしまいましたね。
このdockerhostという環境の上で他人のDockerイメージをpullして実行してみたら、自分でコンテナーを作成して動かしてみたり等できますので皆さんガリガリ開発してみてください。

次回は、コンテナーを使ってnode.js開発環境を準備する方法をご紹介したいと思います。
 

紹介

弊社エンジニアが執筆した「IBM Bluemixクラウド開発入門」が技術評論社様より出版されております。是非、お手にとってご覧下さい。

http://gihyo.jp/book/2017/978-4-7741-9084-6

9784774190846.jpgのサムネイル画像