LoginSignup
8

More than 5 years have passed since last update.

周回遅れのDocker 1: Docker Toolbox を使って Docker を使えるようにする

Last updated at Posted at 2015-07-02

2015-08-17 追記

Docker 1.8 と共に Docker Toolbox がリリースされ、OSX, Windows 上で Docker を利用する際にはこれを利用する方がより楽&共通的になったので、Homebrew による導入手順から移行&若干の説明文の変更を行いました。


はじめに

いい加減、Docker の使用方法を最初から学習しつつ、ある程度有効活用できるようにする。まずはプライベートな環境や用途のあれこれを Docker ベースで考えて利用可能にするのが目標。

ローカルマシンへ Docker 環境を作る

Docker 公式サイトにて、Docker 稼働環境を1からすべて用意してくれる Docker Toolbox というアプリケーションがあるので、これをローカルマシンへインストールする。

現在のところ Docker Toolbox には次のようなソフトウェアが梱包されている。

  • Docker (Docker クライアント)
  • Docker Machine (Docker Engine が稼働するホストを作ってくれる)
  • Docker Compose (定義ファイルに基づく Docker イメージ作成 & 稼働, OSX のみ)
  • Docker Kitematic (Docker 管理 GUI アプリケーション)
  • VirtualBox (仮想マシン)

インストールが終わると「Quick start」と題したヒントなどが掲載されるが、ひとまずこれは置いておいて CLI コマンドで進めてみる。

ファーストステップ

docker-machine create コマンドで virtualbox 環境に対してホストを作成する。

$ docker-machine create -d virtualbox dev

Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
To see how to connect Docker to this machine, run: docker-machine env dev


virtualbox をみるとホストが起動していることが確認できる。

docker-machine で作られたマシン (docker ホスト) を確認。仮にいくつかのホストを create しているならば、ここに複数並ぶはず。

$ docker-machine ls
NAME   ACTIVE   DRIVER       STATE     URL                         SWARM
dev             virtualbox   Running   tcp://192.168.99.100:2376

docker-machine config コマンドを使うと、docker のホストオプションのための値を出力してくれる。docker 実行時には、これを利用する。

$ docker-machine config dev
--tlsverify --tlscacert="/Users/kumakura/.docker/machine/machines/dev/ca.pem" --tlscert="/Users/kumakura/.docker/machine/machines/dev/cert.pem" --tlskey="/Users/kumakura/.docker/machine/machines/dev/key.pem" -H=tcp://192.168.99.100:2376%

ひとまず docker を実行してみる。 (echo hello world)

$ docker $(docker-machine config dev) run busybox echo hello world

Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
cf2616975b4a: Pull complete
6ce2e90b0bc7: Pull complete
8c2e06607696: Pull complete
Digest: sha256:df9e13f36d2d5b30c16bfbf2a6110c45ebed0bfa1ea42d357651bc6c736d5322
Status: Downloaded newer image for busybox:latest
hello world

Docker ホスト環境変数の登録と削除。

$ eval `docker-machine env dev`
$ eval `docker-machine env dev -u`

docker-machine による dokcer ホストの起動と停止。

$ docker-machine start dev
$ docker-machine stop dev

docker-machine による docker ホストへの ssh.

$ docker-machine ssh dev
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC 2015
Docker version 1.8.1, build d12ea79
docker@dev:~$

docker-machine inspect コマンドで docker ホスト情報を確認。
下半分の内容はまだよく分からないが、docker-machine 0.3 で新たに入った Features の初期値などと思われる。

$ docker-machine inspect dev
inspect
{
    "ConfigVersion": 1,
    "Driver": {
        "IPAddress": "192.168.99.100",
        "SSHUser": "docker",
        "SSHPort": 50291,
        "MachineName": "dev",
        "CaCertPath": "/Users/kumakura/.docker/machine/certs/ca.pem",
        "PrivateKeyPath": "/Users/kumakura/.docker/machine/certs/ca-key.pem",
        "SwarmMaster": false,
        "SwarmHost": "tcp://0.0.0.0:3376",
        "SwarmDiscovery": "",
        "CPU": 1,
        "Memory": 1024,
        "DiskSize": 20000,
        "Boot2DockerURL": "",
        "Boot2DockerImportVM": "",
        "HostOnlyCIDR": "192.168.99.1/24"
    },
    "DriverName": "virtualbox",
    "HostOptions": {
        "Driver": "",
        "Memory": 0,
        "Disk": 0,
        "EngineOptions": {
            "ArbitraryFlags": [],
            "Dns": null,
            "GraphDir": "",
            "Env": [],
            "Ipv6": false,
            "InsecureRegistry": [],
            "Labels": [],
            "LogLevel": "",
            "StorageDriver": "",
            "SelinuxEnabled": false,
            "TlsCaCert": "",
            "TlsCert": "",
            "TlsKey": "",
            "TlsVerify": true,
            "RegistryMirror": [],
            "InstallURL": "https://get.docker.com"
        },
        "SwarmOptions": {
            "IsSwarm": false,
            "Address": "",
            "Discovery": "",
            "Master": false,
            "Host": "tcp://0.0.0.0:3376",
            "Image": "swarm:latest",
            "Strategy": "spread",
            "Heartbeat": 0,
            "Overcommit": 0,
            "TlsCaCert": "",
            "TlsCert": "",
            "TlsKey": "",
            "TlsVerify": false,
            "ArbitraryFlags": []
        },
        "AuthOptions": {
            "StorePath": "",
            "CaCertPath": "/Users/kumakura/.docker/machine/certs/ca.pem",
            "CaCertRemotePath": "",
            "ServerCertPath": "/Users/kumakura/.docker/machine/machines/dev/server.pem",
            "ServerKeyPath": "/Users/kumakura/.docker/machine/machines/dev/server-key.pem",
            "ClientKeyPath": "/Users/kumakura/.docker/machine/certs/key.pem",
            "ServerCertRemotePath": "",
            "ServerKeyRemotePath": "",
            "PrivateKeyPath": "/Users/kumakura/.docker/machine/certs/ca-key.pem",
            "ClientCertPath": "/Users/kumakura/.docker/machine/certs/cert.pem"
        }
    },
    "StorePath": "/Users/kumakura/.docker/machine/machines/dev"
}

docker-machine upgrade コマンドで docker ホストの更新が行える。これは大変楽で嬉しい。

upgrade
$ docker-machine upgrade dev

Stopping machine to do the upgrade...
Upgrading machine dev...
Downloading https://github.com/boot2docker/boot2docker/releases/download/v1.8.1/boot2docker.iso to /Users/kumakura/.docker/machine/cache/boot2docker.iso...
Starting machine back up...
Starting VM...

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
8