2017年5月4日木曜日

基本的な使い方を学ぶために速習Docker的なことをしました

MacでDockerを使うために基本的な使い方を学習しました。
下記を読みながら、適宜読み替えたりググったりしてコマンドを実行してみました。


Dockerエキスパート養成読本[活用の基礎と実践ノウハウ満載!] (Software Design plus)

Docker実行環境の構築

brew install docker
brew install docker-machine
brew install docker-compose

Dockerマシンを作成しようとして失敗

TearTheSky-MacBook:~ TearTheSky$ docker-machine create --driver virtualbox test-docker
Running pre-create checks...
(test-docker) You are using version 4.3.26r98988 of VirtualBox. If you encounter issues, you might want to upgrade to version 5 at https://www.virtualbox.org
Error with pre-create check: "VirtualBox is configured with multiple host-only adapters with the same IP \"192.168.33.1\". Please remove one."
TearTheSky-MacBook:~ TearTheSky$

VirtualBox上のDockerマシンの確認

TearTheSky-MacBook:~ TearTheSky$ docker-machine ls
NAME          ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
test-docker   -        virtualbox   Running   tcp://192.168.99.100:2376           v17.04.0-ce
TearTheSky-MacBook:~ TearTheSky$

Dockerコンテナを確認しようとして失敗

TearTheSky-MacBook:~ TearTheSky$ docker ps
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
TearTheSky-MacBook:~ TearTheSky$

対処法

yoshida-no-MacBook-Pro:~ TearTheSky$ eval "$(docker-machine env test-docker)"
TearTheSky-MacBook:~ TearTheSky$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
TearTheSky-MacBook:~ TearTheSky$

Dockerコンテナの作成

TearTheSky-MacBook:~ TearTheSky$ docker run -d -p 80:80 --name webserver nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
6d827a3ef358: Pull complete
f8f2e0556751: Pull complete
5c9972dca3fd: Pull complete
451b9524cb06: Pull complete
Digest: sha256:e6693c20186f837fc393390135d8a598a96a833917917789d63766cab6c59582
Status: Downloaded newer image for nginx:latest
61d1da7ae17cf573ceb51a99b213cb5e315150ce92ee8c23686898e28d603946
TearTheSky-MacBook:~ TearTheSky$

Dockerコンテナの確認

TearTheSky-MacBook:~ TearTheSky$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
61d1da7ae17c        nginx               "nginx -g 'daemon off"   15 seconds ago      Up 14 seconds       0.0.0.0:80->80/tcp, 443/tcp   webserver
TearTheSky-MacBook:~ TearTheSky$

Nginxの起動確認

ブラウザで「192.168.99.100」にアクセスするとNginxデフォルトページが表示される。
「192.168.99.100」はVirtualBox上のDockerコンテナホスト。

Dockerコンテナの削除

TearTheSky-MacBook:~ TearTheSky$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
61d1da7ae17c        nginx               "nginx -g 'daemon off"   25 minutes ago      Up 25 minutes       0.0.0.0:80->80/tcp, 443/tcp   webserver
TearTheSky-MacBook:~ TearTheSky$
TearTheSky-MacBook:~ TearTheSky$
TearTheSky-MacBook:~ TearTheSky$
TearTheSky-MacBook:~ TearTheSky$ docker rm webserver
Error response from daemon: You cannot remove a running container 61d1da7ae17cf573ceb51a99b213cb5e315150ce92ee8c23686898e28d603946. Stop the container before attempting removal or force remove
TearTheSky-MacBook:~ TearTheSky$
TearTheSky-MacBook:~ TearTheSky$ docker stop webserver
webserver
TearTheSky-MacBook:~ TearTheSky$
TearTheSky-MacBook:~ TearTheSky$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
TearTheSky-MacBook:~ TearTheSky$
TearTheSky-MacBook:~ TearTheSky$
TearTheSky-MacBook:~ TearTheSky$ docker rm webserver
webserver
TearTheSky-MacBook:~ TearTheSky$

VirtualBox上のDockerマシンの停止と削除

TearTheSky-MacBook:~ TearTheSky$
TearTheSky-MacBook:~ TearTheSky$ docker-machine ls
NAME          ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
test-docker   *        virtualbox   Running   tcp://192.168.99.100:2376           v17.04.0-ce
TearTheSky-MacBook:~ TearTheSky$
TearTheSky-MacBook:~ TearTheSky$ docker-machine kill test-docker
Killing "test-docker"...
Machine "test-docker" was killed.
TearTheSky-MacBook:~ TearTheSky$ docker-machine ls
NAME          ACTIVE   DRIVER       STATE     URL   SWARM   DOCKER    ERRORS
test-docker   -        virtualbox   Stopped                 Unknown
TearTheSky-MacBook:~ TearTheSky$
TearTheSky-MacBook:~ TearTheSky$
TearTheSky-MacBook:~ TearTheSky$ docker-machine rm test-docker
About to remove test-docker
Are you sure? (y/n): y
Successfully removed test-docker
TearTheSky-MacBook:~ TearTheSky$
TearTheSky-MacBook:~ TearTheSky$ docker-machine ls
NAME   ACTIVE   DRIVER   STATE   URL   SWARM   DOCKER   ERRORS
TearTheSky-MacBook:~ TearTheSky$

Docker for Macのインストールと利用

インストール

Docker Machine でコンテナを立てたような感じでコンテナを立てる

TearTheSky-MacBook:~ TearTheSky$ docker run -d -p 80:80 --name webserver nginx
TearTheSky-MacBook:~ TearTheSky$ docker ps

Nginxの起動確認

ブラウザで「localhost」にアクセスするとNginxデフォルトページが表示される。
VirtualBoxには仮想マシンが存在しない。

Docker Machine と Docker for Mac の違い

Docker Machine は 書籍上の Boot2Docker と同じ立ち位置で、Mac上にVirtualBoxを使って仮想マシンのLinuxを起動し、それをコンテナサーバとして、その中にコンテナを立てる。
Docker for Mac は Macbook 自身がコンテナサーバになる。
なのでVirtualBox上に仮想マシンは不要だし、起動されない。
なるほどなるほど。 基本の使い方は理解できました。