DRYな備忘録

Don't Repeat Yourself.

Docker for Macのインストールと複数VMをつくるまで

インストールのログ

f:id:otiai10:20170523100821p:plain

f:id:otiai10:20170523100650p:plain

f:id:otiai10:20170523100724p:plain

f:id:otiai10:20170523100952p:plain

f:id:otiai10:20170523101108p:plain

% which docker
/usr/local/bin/docker
% docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
% docker-machine ls
NAME   ACTIVE   DRIVER   STATE   URL   SWARM   DOCKER   ERRORS
% docker-compose ps
ERROR:
        Can not find a suitable configuration file in this directory or any
        parent. Are you in the right directory?

        Supported filenames: docker-compose.yml, docker-compose.yaml

%

docker-machinedocker-composeも入ってるやん?VM複数つくっていいのかな。VirtualBoxではなくHyperkitという差はある。

まずは適当になんか立てる

% docker-machine ls
NAME   ACTIVE   DRIVER   STATE   URL   SWARM   DOCKER   ERRORS

docker toolbox的に言えば、machineがひとつも立ってないんだからdockerホストいなくね?っていう気持ちだけど、とりあえずやってみる。自作のOCRサーバ立ててみる。

% docker run --rm -p 8080:8080 otiai10/ocrserver
Unable to find image 'otiai10/ocrserver:latest' locally
latest: Pulling from otiai10/ocrserver
386a066cd84a: Pull complete
75ea84187083: Pull complete
88b459c9f665: Pull complete
a31e17eb9485: Pull complete
1b272d7ab8a4: Pull complete
eca636a985c1: Pull complete
08158782d330: Pull complete
fb9f7b3131a3: Pull complete
fcf51ff1519d: Pull complete
afdc21dc8865: Pull complete
2e81650bd01b: Pull complete
Digest: sha256:221d7ffd1ca2daa2dd2bff6e8d888873302f7031c05df5c2bd61c2d73cd14326
Status: Downloaded newer image for otiai10/ocrserver:latest
[ocrserver] listening on port :8080

f:id:otiai10:20170523102435p:plain

動いとる。いい感じ。別ターミナルから

% docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                    NAMES
0c2091fcfda3        otiai10/ocrserver   "/bin/sh -c /go/bi..."   About a minute ago   Up About a minute   0.0.0.0:8080->8080/tcp   stupefied_tesla
% docker-machine ls
NAME   ACTIVE   DRIVER   STATE   URL   SWARM   DOCKER   ERRORS
% docker kill 0c2091fcfda3
0c2091fcfda3
% docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
%

いい感じ。

プロジェクトごと別々のDockerホストを扱う

% docker-machine create --help
Usage: docker-machine create [OPTIONS] [arg...]

Create a machine

Description:
   Run 'docker-machine create --driver name' to include the create flags for that driver in the help text.
% docker-machine create foo
Creating CA: /Users/otiai10/.docker/machine/certs/ca.pem
Creating client certificate: /Users/otiai10/.docker/machine/certs/cert.pem
Running pre-create checks...
Error with pre-create check: "VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path"

まあそうだよな。VirtualBox入れてないもん。じゃあHyperkitかな?

% docker-machine create --driver hyperkit foo
Driver "hyperkit" not found. Do you have the plugin binary "docker-machine-driver-hyperkit" accessible in your PATH?
%

なぬ?hyperkitのdocker-machineドライバー無いのか。

Currently, there is no docker-machine create driver for HyperKit, so you will use virtualbox driver to create local machines.

今んとこ、複数Dockerホスト立てる場合は、docker for macが立てたhyperkitのvmではなく、docker-machine経由で、VirtualBoxVMを立てる必要があるっぽい。ということで、掲題の目的を達成するためには

  1. VirtualBoxのインストー
  2. docker-machine createする
  3. docker-machine envをevalする
  4. そこに向けてdocker runする

という今までのおなじみのワークフローをすればよいっぽい。

それにしても、エラーメッセージの docker-machine-driver-hyperkit っていうのはちょっと気になる。

README読むほどに、まあ無理してこれ使わんでも、VirtualBoxでdocker-machineで立てればいいか、という気持ちになるので、放置でよいかと思った。とりあえずMacのHyperkitのホストに対してdocker/docker-composeでプロジェクトごとに分ける運用で十分かという結論。

DRYな備忘録として

Docker入門

Docker入門