Docker に入門する
OSX 上で Docker を動かす時の仕組みについて
Docker は、Linux カーネルの機能を使っているので、OSX の上に直接 Docker コンテナを作成することはできない。 なので、OSX 上で Linux VM を起動し、Linux VM 上に Docker コンテナを作成する。
起動した Linux VM には、自動的にIPアドレスが割り当てられる。 また、Linux VM 上に作成した Docker コンテナと Linux VM 間のポートフォワーディングも自動的に設定される。
Linux VM を作成したり、Linux VM の中の Docker コンテナを操作したりする機能が、Docker Toolbox をインストールすることによって使用可能となる。
Docker Toolbox のインストール
Docker Toolbox とは、Docker を使うためのツールセット。
VirtualBox がインストールされていることが前提。
https://www.docker.com/docker-toolbox
上記からインストーラをダウンロードしてインストールする。
Linux VM を起動する
Docker Toolbox のインストールが完了すると、Docker Quickstart Terminal がアプリケーションとして登録されているので実行する。
Linux VM が存在しなければ作成し、起動していなければ起動し、起動していればターミナルが立ち上がるだけとなる。
Creating Machine default... ... Setting environment variables for machine default... ## . ## ## ## == ## ## ## ## ## === /"""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\_______/ docker is configured to use the default machine with IP 192.168.99.100 For help getting started, check out the docs at https://docs.docker.com
以上のように表示されれば完了。default
という名前の Linux VM が作成され、 docker
コマンドが使用可能になる。
docker-machine コマンドで Linux VM を操作する
docker-machine
コマンドを使うと Linux VM の操作を行うことができる。
Linux VM を作成する場合は、
% docker-machine create --driver virtualbox default
default
は VM の名前。
コマンドで Linux VM を起動する場合は、
% docker-machine start default
停止は、
% docker-machine stop default
VM のリストを確認する場合は、
% docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM default * virtualbox Running tcp://192.168.99.100:2376
状態とIPが確認できるので、困ったら ls
コマンドする。
Docker コンテナを動かす
動作確認用の hello-world
コンテナがあるので、それを動かしてみる。
% docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world b901d36b6f2f: Pull complete 0a6ba66e537a: Pull complete Digest: sha256:8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7 Status: Downloaded newer image for hello-world:latest Hello from Docker. This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker Hub account: https://hub.docker.com For more examples and ideas, visit: https://docs.docker.com/userguide/
Docker イメージがローカルマシン上にない場合、DockerHub https://hub.docker.com から探してきて自動的に Pull してくれる。
nginx コンテナを動かす
hello-world コンテナは、起動、実行してすぐ終了してしまうので、Webサーバーを動かしてみる。
% docker run -d -P --name web nginx
各オプションの意味は以下の通り
オプション | 意味 |
---|---|
-d | コンテナをバックグラウンドで起動した状態にする |
-P | コンテナ 〜 ホスト間のポートフォワーディングの設定を行う |
--name <コンテナ名> | コンテナに名前をつける |
動いているコンテナ一覧を確認する。
% docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8d58d4a468f2 nginx "nginx -g 'daemon off" 7 seconds ago Up 6 seconds 0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp web
だいたいの情報はこれでわかる。
PORTS
の 0.0.0.0:32769
は OSX のポートではなく、VM のポートのことなので気をつけること。
指定のコンテナのポート設定を確認する。
% docker port web 443/tcp -> 0.0.0.0:32768 80/tcp -> 0.0.0.0:32769
VM の ポート32769
が コンテナの ポート80
に設定されている。
Web ブラウザでサーバーが動いているか確認する。
VM の IPアドレスは、docker-machine ip default
で確認できる。
コンテナを停止する
% docker stop web
コンテナを削除する
% docker rm web

プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化
- 作者: WINGSプロジェクト阿佐志保
- 出版社/メーカー: 翔泳社
- 発売日: 2015/11/19
- メディア: Kindle版
- この商品を含むブログを見る

プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化
- 作者: WINGSプロジェクト阿佐志保,山田祥寛
- 出版社/メーカー: 翔泳社
- 発売日: 2015/11/20
- メディア: 大型本
- この商品を含むブログを見る

- 作者: 馬場俊彰(ハートビーツ)
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/12/27
- メディア: Kindle版
- この商品を含むブログを見る

Webエンジニアが知っておきたいインフラの基本 ~インフラの設計から構成、監視、チューニングまで~
- 作者: 馬場俊彰
- 出版社/メーカー: マイナビ
- 発売日: 2014/12/27
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る