追記(2018/10/25)
この記事で紹介している Docker Toolbox ですが、Legacy desktop solution となっています。Docker for Mac の利用を推奨します。
https://docs.docker.com/toolbox/
下記の内容は古いですが、一応残しておきます。
はじめに
Docker Toolbox を使って macOS 上に Docker 環境を構築する手順を紹介します。とはいえ、公式ページがよくまとまっているため、正確な情報はこちらをご参照ください。
[Install Docker Toolbox on macOS] (https://docs.docker.com/toolbox/toolbox_install_mac/)
Docker Toolbox で入手できるもの。できること。
まずは Docker Toolbox とは何? というところから。以下のコンポーネントから構成されています。
入手できるもの | できること |
---|---|
Docker CLI client | コンテナに関する各種操作(コンテナ作成、起動、ログインなど) |
Docker Machine | Docker Engine が稼働する VM を作成したり、管理するツール |
Docker Compose | 複数コンテナを使用するDockerアプリを定義、実行するツール |
Kitematic | GUI で docker を使用するためのツール |
Docker QuickStart shell | macOS上のターミナルから VM 上の Docker Engine を操作するための環境整備 |
Oracle VM VirtualBox | VM作成用 |
公式ページには、これらコンポーネントについて、以下の説明が(英語で)されています。
どうして VM を立てるかというと、Docker Engine のデーモンが Linux の特定カーネルの機能を使うため。よって、macOS からネイティブに Docker Engine を起動できず、代わりに docker-machine コマンドを使って小さな VM を作成します。この VM を Docker Engine として使用します。
Docker Toolbox のインストール
[公式URL] (https://docs.docker.com/toolbox/toolbox_install_mac/) からインストーラを入手します。「DockerToolbox.pkg」がインストーラです。インストーラを起動し、画面の指示に従って進めていきます。
Docker
Launchpad などから「Docker Quick Start」アイコンをクリックします。
するとターミナルが起動し、Docker を使うための環境を整えてくれます。
- Docker Engine を動作させる VM を作成
- この VM 上の Docker Engine を使用するように、ターミナルの環境変数をセット
しばらく待つと、次の画面が表示されます。これで、Docker を使用できるようになりました!
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ 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
Hello World
お試し実行用に Hello World コンテナを起動します。
$ docker run hello-world
Docker QuickStart Shell が何をやってくれているか
「default」という名の VM を作成してくれます。Docker Engine が動作する VM です。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.100:2376 v17.12.0-ce
VM の正体
VM 「default」にログインしてみましょう。
$ docker-machine ssh default
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 17.12.0-ce, build HEAD : 378b049 - Wed Dec 27 23:39:20 UTC 2017
Docker version 17.12.0-ce, build c97c6d6
boo2docker とは、Docker コンテナの起動に特化した軽量 Linux Distribution の事です。
[参考: boot2docker] (http://boot2docker.io/)
OS の情報は下記の通りでした。
$ cat /etc/os-release
NAME=Boot2Docker
VERSION=17.12.0-ce
ID=boot2docker
ID_LIKE=tcl
VERSION_ID=17.12.0-ce
PRETTY_NAME="Boot2Docker 17.12.0-ce (TCL 8.2.1); HEAD : 378b049 - Wed Dec 27 23:39:20 UTC 2017"
ANSI_COLOR="1;34"
HOME_URL="http://boot2docker.io"
SUPPORT_URL="https://github.com/boot2docker/boot2docker"
BUG_REPORT_URL="https://github.com/boot2docker/boot2docker/issues"
プロセスを確認すると以下のように tcp 2376/tcp ポートで待ち受けるデーモンが起動しています。TLS が有効になっています。
root 3043 1 0 01:42 ? Sl 0:04 /usr/local/bin/dockerd -D ¥
-g /var/lib/docker -H unix:// -H tcp://0.0.0.0:2376 ¥
--label provider=virtualbox ¥
--tlsverify --tlscacert=/var/lib/boot2docker/ca.pem ¥
--tlscert=/var/lib/boot2docker/server.pem ¥
--tlskey=/var/lib/boot2docker/server-key.pem -s aufs
[参考: dockerd] (https://docs.docker.com/engine/reference/commandline/dockerd/)
macOS ホスト上の環境変数
macOS ホスト上のターミナルでは、下記の通り環境変数がセットされています。
$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/user/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env default)
この変数がセットされていることで、VM 上の dockerd に接続して、docker に関する諸々の操作ができるようになっているわけです。
参考URL
[公式: Install Docker Toolbox on macOS] (https://docs.docker.com/toolbox/toolbox_install_mac)
[Mac OS X へのDockerのインストール方法] (https://qiita.com/hshimo/items/e24b1fbfbf775ec7c941)