Mac OS X¶
注釈
今回の Docker のリリース(1.9)から、Boot2Docker コマンドライン・ツールに換わり、Docker Toolbox (ツールボックス)が採用されています。Docker Toolbox を使い、Docker Machine のような Docker ツールをインストールします。
Docker を Docker Toolbox を使いインストールします。Docker Toolbox には次の Docker ツールが含まれます。
- Docker Machine を動かす
docker-machine
バイナリ - Docker エンジンを動かす
docker
バイナリ - Docker Compose を動かす
docker-compose
バイナリ - Docker GUI の Kitematic (カイトマティック)
- Oracle VM VirtualBox(バーチャルボックス)
Docker デーモンは Linux 固有の kernel 機能を使う為、OS X 上で Docker をネイティブに実行できません。そのかわり docker-machine
を使い、仮想マシン(VM)の作成と接続が可能です。このマシンは Linuxの仮想マシンであり、自分の Mac 上の Docker ホストとなります。
インストール前に重要な概念を学ぶ¶
Linux 上への Docker のインストールにおいて、自分の物理マシンとはローカルホストと Docker ホストの両方を意味します。ネットワークでは、ローカルホストは自分のコンピュータを意味します。Docker ホストはコンテナを実行するためのコンピュータです。
典型的な Linux インストールは、自分のローカルホスト上で直接 Docker クライアント、Docker デーモン、そして、あらゆるコンテナを動かします。つまり、Docker コンテナは localhost:8000
や 0.0.0.0:8376
のような一般的なポートを割り当てて使います。
OS X でのインストールは、 default
という名前の Linux 仮想マシン内で docker
デーモンを実行します。 default
とは軽量な Linux 仮想マシンであり、とりわけ Mac OS X 上で Docker デーモンを実行するために作られました。仮想マシンは RAM から実行され、24MB 程度をダウンロードし、起動まで約5秒です。
OS X では、Docker ホストのアドレスは Linux VM のアドレスです。仮想マシンを docker-machine
で開始すると、IP アドレスが割り当てられます。コンテナを起動すると、コンテナ上のポートは仮想マシン上のポートに割り当てられます。このページの練習を通して、この仕組みに慣れましょう。
インストール¶
VirtualBox を実行中の場合、インストーラを実行する前に停止する必要があります。
- Docker Toolbox のページに移動します。
- インストーラのリンクをクリックします。
- Docker Toolbox をインストールするために、パッケージをダブルクリックするか、右クリックして出てくるポップアップ・メニューから「開く」を選びます。
インストーラは「Docker Toolbox のインストール」ダイアログを開きます。
- 「続ける」を押して Toolbox をインストールします。
インストーラは標準インストールに対するカスタマイズ用オプションを提供しています。
デフォルトは、標準 Docker Toolbox の標準インストールです。
- Docker ツールのバイナリを
/usr/local/bin
にインストールします。 - バイナリを全てのユーザが使えるようにします。
- VirtualBox をインストールします。あるいは、インストール済みであればバージョンアップを行います。
変更したい場合は「カスタマイズ」や「インストール先を変更」します。
- 「インストール」を押すと、標準インストールが始まります。
システム・プロンプトがパスワード入力を促します。
- インストールを続けるには、パスワードを入力します。
完了すると、インストーラは一般的な作業に関する表示を行います。
- 「閉じる」をクリックすると終了します。
Docker コンテナの実行¶
Docker コンテナを実行するには、次のようにします。
- 新しい Docker 仮想マシンを作成(あるいは、既存のものを開始)
- 環境を新しい仮想マシンに切り替え
docker
クライアントを使ってコンテナの作成・読み込み・管理
マシンを作成してしまえば、好きなときに再利用できます。VirtualBox の仮想マシンのように、用途に応じた設定で使い分けます。
インストールしたツールを使うには2つの方法があります。Docker Quickstart Terminal (クイックスタート・ターミナル)を使うか、 シェル で操作します。
Docker Quickstart Terminal から使う¶
- 「アプリケーション」フォルダから「Launchpad」を開きます。
- Docker Quickstart Terminal を探し、クリックして起動します。
アプリケーションは次の動作をします:
- ターミナル用のウインドウを開く
default
仮想マシンが無ければ作成し、仮想マシンを起動- ターミナルの環境がこの仮想マシンを示す
起動が完了すると、Docker Quickstart Terminal は次のように表示します。
これで docker
コマンドが実行できます。
- セットアップの成功を確認するため、
hello-world
コンテナを実行します。
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
511136ea3c5a: Pull complete
31cbccb51277: Pull complete
e45a5af57b00: Pull complete
hello-world:latest: The image you are pulling has been verified.
Important: image verification is a tech preview feature and should not be
relied on to provide security.
Status: Downloaded newer image for hello-world:latest
Hello from Docker.
This message shows that your installation appears to be working correctly.
このメッセージ表示にあたり、Docker は次のステップを踏んでいます。
- Docker クライアントは Docker デーモンに接続します。
- Docker デーモンは「hello-world」イメージを Docker Hub から取得します(まだローカルにイメージがないのを想定しています)。
- そのイメージを使い、Docker デーモンは新しいコンテナを作成します。コンテナを実行すると、先ほど見たような出力をします。
- Docker デーモンは Docker クライアントに出力を流し込み、自分のターミナル上に送ります。
では、期待を持ちながら Ubuntu コンテナを実行しましょう。
$ docker run -it ubuntu bash
更なる例や考え方については、 ユーザガイド をご覧ください。
もう1つの典型的な Docker ツールを使う方法が、通常のシェル・コマンドラインからです。
シェルから使う¶
このセクションでは、Bash シェルの実行を想定しています。C シェルのような別のシェルでも、コマンドは同じです。
- 新しい Docker 仮想マシンを作成します。
$ docker-machine create --driver virtualbox default
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
To see how to connect Docker to this machine, run: docker-machine env default
ここでは VirtualBox に新しい default
仮想マシンを作成します。
また、このコマンドはマシンの設定を ~/.docker/machine/machines/default
ディレクトリに作成します。必要なのは、実行時に create
コマンドを一度実行するだけです。あとは、 docker-machine
を使って開始、停止、問い合わせできます。それだけでなく、コマンドライン上から仮想マシンを管理します。
- 利用可能なマシン一覧を表示します。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
default * virtualbox Running tcp://192.168.99.101:2376
廃止予定の Boot2Docker アプリケーションをインストールしているか、あるいは Docker Quickstart Terminal を実行している場合は dev
仮想マシンが同様に表示されます。 default
仮想マシンを作成したら、 docker-machine
コマンドを通して仮想マシンへの接続方法を確認します。
- 新しい仮想マシンに対応する環境変数を取得します。
$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.101:2376"
export DOCKER_CERT_PATH="/Users/mary/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval "$(docker-machine env default)"
- シェルから
default
マシンに接続します。
$ eval "$(docker-machine env default)"
hello-world
コンテナを実行し、セットアップが正常かどうか確認します。
$ docker run hello-world
Toolbox のインストールを学ぶ¶
Toolbox は Docker エンジンのバイナリをシステム上にインストールします。Docker Quickstart Terminal を使うか、 default
仮想マシンを(Docker Machine で)手動で作成すると、Docker Machine はシステム上の ~/.docker/machine/machines/default
ディレクトリを更新します。このディレクトリに、仮想マシンに関する設定が置かれます。
Docker Machine を使い、システム上に複数の仮想マシンを作成できます。つまり、いくつも仮想マシンを作成すると、複数の仮想マシン用のディレクトリが作られます。仮想マシンを削除するには、 docker-machine rm <マシン名>
コマンドを使います。
Boot2Docker からの移行¶
これまで Boot2Docker を使っていた場合は、既に Dockerの boot2docker-vm
仮想マシンがローカルシステム上に存在しています。Docker Machine で古い仮想マシンを管理する場合は、移行が必要です。
- ターミナルか、システム上の Docker CLI を開きます。
- 次のコマンドを実行します。
$ docker-machine create -d virtualbox --virtualbox-import-boot2docker-vm boot2docker-vm docker-vm
docker-machine
コマンドを使い、対話式に仮想マシンを移行します。
docker-machine
サブコマンドは、boot2docker
サブコマンドと若干の違いがあります。次の表は docker-machine
サブコマンドとの互換性を比較したものです。
boot2docker |
docker-machine |
docker-machine の説明 |
---|---|---|
init | create | 新しい docker ホストの作成 |
up | start | 停止しているマシンの起動 |
ssh | ssh | コマンドの実行やマシンとの双方向 ssh セッション |
save | ー | 利用不可 |
down | stop | 実行中のマシンの停止 |
poweroff | stop | 実行中のマシンの停止 |
reset | restart | 実行中のマシンの再起動 |
config | inspect | マシン設定詳細の表示 |
status | ls | マシン一覧と状態の表示 |
info | inspect | マシンの詳細を表示 |
ip | ip | マシンの IP アドレスを表示 |
shellinit | env | シェルがマシンと対話するために必要なコマンドの表示 |
delete | rm | マシンの削除 |
download | ー | 利用不可 |
upgrade | uppgrade | マシン上の Docker クライアントを最新安定版に更新 |
Mac OS X の Docker 実行例¶
このセクションを通して、仮想マシン上に実践的なコンテナ・タスクに挑戦しましょう。この時点では、仮想マシンが実行中であり、シェル上から接続している状態でしょう。確認するには、次のコマンドを実行します。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
default * virtualbox Running tcp://192.168.99.100:2376
ACTIVE
なマシン、この例では default
に対する環境変数が指定されています。
コンテナのポートに接続¶
- DOCKER_HOST 上で NGINX コンテナを開始します。
$ docker run -d -P --name web nginx
通常の docker run
コマンドは、コンテナを起動し、実行して、終了します。 -d
フラグは docker run
コマンドを実行したあとも、バックグラウンドでコンテナを実行し続けます。 -P
フラグはコンテナ内の露出用ポートをローカルのホスト上に公開します。つまり、自分の Mac からアクセスできるようにします。
- 実行中のコンテナを
docker ps
コマンドで表示します。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5fb65ff765e9 nginx:latest "nginx -g 'daemon of 3 minutes ago Up 3 minutes 0.0.0.0:49156->443/tcp, 0.0.0.0:49157->80/tcp web
今まさに nginx
がデーモンとして実行中なのが分かります。
- コンテナのポートを表示します。
$ docker port web
443/tcp -> 0.0.0.0:49156
80/tcp -> 0.0.0.0:49157
この表示の意味は、 web
コンテナのポート 80
番を Docker ホスト側のポート 49157
に割り当てています。
- ブラウザで
http://localhost:49157
アドレス(localhost
は0.0.0.0
)を開きます。
これは動作しません。理由は、 DOCKER_HOST
のアドレスはローカルホストのアドレス(0.0.0.0)ではないためです。そのかわり Docker 仮想マシンのアドレスを使います。
default
VM のアドレスを取得します。
$ docker-machine ip default
192.168.59.103
- ブラウザのアドレスに
http://192.168.59.103:49157
を入力します。
成功です!
- 実行している
nginx
コンテナを停止・削除するには、次のように実行します。
$ docker stop web
$ docker rm web
コンテナにボリュームをマウント¶
コンテナを実行すると、自動的に /Users/ユーザ名
ディレクトリを仮想マシンと共有します。この共有ポイントを使い、コンテナの中にディレクトリとしてマウントできます。以下の例では、実際に動くのを確認します。
$HOME
ディレクトリに移動します。
$ cd $HOME
- 新しく
site
ディレクトリを作成します。
$ mkdir site
site
ディレクトリに移動します。
$ cd site
- 新しく
index.html
ファイルを作成します。
$ echo "my new site" > index.html
- 新しく
nginx
コンテナを開始し、html
ディレクトリをsite
ディレクトリに置き換えます。
$ docker run -d -P -v $HOME/site:/usr/share/nginx/html \
--name mysite nginx
mysite
コンテナのポートを取得します。
$ docker port mysite
80/tcp -> 0.0.0.0:49166
443/tcp -> 0.0.0.0:49165
- サイトをブラウザで開きます。
$HOME/site
ディレクトリに新しいページをリアルタイムに追加します。
$ echo "This is cool" > cool.html
- 新しいページをブラウザで開きます。
- 実行している
mysite
コンテナを停止・削除します。
$ docker stop mysite
$ docker rm mysite
Docker Toolbox のアップグレード¶
Docker Toolbox をアップグレードするには、 Docker Toolbox インストーラ をダウンロードし、再度実行します。
Docker Toolbox のアンインストール¶
アンインストールは次のように行います。
- マシン一覧を表示ます。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
dev * virtualbox Running tcp://192.168.99.100:2376
my-docker-machine virtualbox Stopped
default virtualbox Stopped
- 各マシンを削除します。
$ docker-machine rm dev
Successfully removed dev
マシンの削除とは、VirtualBox から自身の仮想マシンを削除し、 ~/.docker/machine/machines
からも削除します。
- Docker Quickstart Terminal と Kitematic を「アプリケーション」フォルダから削除します。
/usr/local/bin
ディレクトリからdocker
、docker-compose
、docker-machine
を削除します。
$ rm /usr/local/bin/docker
- システム上の
~/.docker
ディレクトリを削除します。
更に詳しく¶
docker-machine help
を実行すると、Docker Machine の全てのコマンド一覧を表示します。SSH や SCP で仮想マシンにアクセスするなど詳細な情報は、 Docker Machine ドキュメント をご覧ください。
Docker ユーザガイド を読み続けられます。 Kitematic GUI の使用に興味があれば、 Kitematic ユーザガイド をご覧ください。
参考
- Installation on Mac OS X
- https://docs.docker.com/engine/installation/mac/