Docker Machine入門

October 30, 2015
Docker

前回の記事でMacにDockerをインストールしてhello world的なことをやったけど、あれだけだとよくわからないので改めてDocker Machineに入門する

https://docs.docker.com/machine/get-started/

Docker Machineで仮想マシンを作成する

docker-machine createで仮想マシン(VM)を作成する

ここではVirtualBoxにdevという名前で作成する

$ docker-machine create --driver 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

DockerデーモンがインストールされているLinuxディストリビューションをダウンロードして、VMを作って起動している。

docker-machine lsで確認できる

$ docker-machine ls

NAME   ACTIVE   DRIVER       STATE     URL                         SWARM
dev             virtualbox   Running   tcp://192.168.99.101:2376   

Dockerを動かしてみる

$ docker ps

Get http:///var/run/docker.sock/v1.20/containers/json: dial unix /var/run/docker.sock: no such file or directory.
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?

Docker Machineは複数のVMを管理できるため、どのVMでDockerを実行するかを指定する必要がある。

環境変数を設定する

envコマンドで各VMの環境変数が確認できるので、これを使って指定する

$ docker-machine env dev
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.101:2376"
export DOCKER_CERT_PATH="/Users/satoshi/.docker/machine/machines/dev"
export DOCKER_MACHINE_NAME="dev"
# Run this command to configure your shell:
# eval "$(docker-machine env dev)"

コメントにあるようにevalを実行する

$ eval "$(docker-machine env dev)"

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

設定する前はDockerデーモンが動いていないと怒られたけど、今回は問題なく実行できている。

Nginxを動かす

$ docker run -d -p 8000:80 nginx

Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx

Digest: sha256:b24651e86659a5d1e4103f8c1ea49567335528281c1678697783ae7569114e1e
Status: Downloaded newer image for nginx:latest
dec39bfb13c9bffd960cde439833a727ccd70560f6dff80442182d8a45686d49

前回のhello-worldと同じようにDocker HubからNginxのイメージをロードしている

プロセスを確認するとコンテナが作成されている

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                           NAMES
dec39bfb13c9        nginx               "nginx -g 'daemon off"   3 minutes ago       Up 3 minutes        443/tcp, 0.0.0.0:8000->80/tcp   desperate_leakey

0.0.0.0:8000->80にあるようにVMの8000番ポートがコンテナの80番にポートフォワードされている

VMのIPを調べてブラウザでアクセスする

$ echo $(docker-machine ip dev)
192.168.99.101

ハローワールド

VMを使い終わったらstopで停止して、再度使う場合はstartで起動する

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

まとめ

前回は、Docker Quickstart Terminalを使ったのでDocker Machineって何って感じだったけど、これで多少は理解できた気がします。

comments powered by Disqus