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
{
"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 ホストの更新が行える。これは大変楽で嬉しい。
$ 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...