試纏

ためしてまとめる〜色々なトピックやテーマについて試してみたり、まとめてみたりするブログです。

Docker for Macインストール&入門実践記録

当エントリは下記"学習記録まとめ"に引き続いての入門記事実践記録のまとめエントリとなります。内容的には被る部分が大半でしたが、Mac上でスムーズに作業が行えるのはやはり便利ですし魅力的ですね。

参考にしたページは以下の内容となります。

Docker for Mac導入に際してのシステム要件:

Docker for Macを利用する際は環境的に以下の条件を満たしている必要があるようです。

  • Macのモデルが2010もしくはそれより新しいものであること。
  • macOSのバージョンが10.10.3(Yosemite)もしくはそれより新しいものであること。
  • 最低4GBのRAM。
  • VirtualBoxのバージョンが4.3.30以上であること。

これらの要件を満たしていない場合、別の手段として『Docker Toolbox』を使って環境を導入する事が可能となっているようです。当エントリでは『Docker for Mac』を使った環境設定を進める為Toolboxの手順については割愛します。

Docker for Mac インストール手順

手順は下記ドキュメントに纏められていますので、手順に従い作業を進めて行きます。

Step1.Docker for Macのインストール及び実行

インストーラを公式サイトより入手します。下記サイトの『Download Docker for Mac』の項より、"Stable channel"下の[Get Docker for Mac [stable]]を押下、インストーラをダウンロード。

f:id:shinyaa31:20170108111157p:plain:w700

ダウンロード完了後に起動。Docker.appをApplicationフォルダ配下にドラッグアンドドロップし、

f:id:shinyaa31:20170108110811p:plain:w450

Applicationフォルダ配下のDocker.appをダブルクリックして起動させます。

f:id:shinyaa31:20170108110815p:plain:w700

ウェルカムメッセージの表示。[Next]押下。

f:id:shinyaa31:20170108110817p:plain:w450

Dockerを実行するには権限が必要な旨メッセージが表示されます。この後OSのユーザーパスワードを求められるので手順に従い入力して先に進めます。

f:id:shinyaa31:20170108110819p:plain:w450

Dockerの起動を示すダイアログが表示されました。[Got it!]押下。

f:id:shinyaa31:20170108110821p:plain:w300

メニューバーのクジラアイコンを展開、[About Docker]を選択してみます。

f:id:shinyaa31:20170108110824p:plain:w300

Dockerのバージョンが表示されました。2017/01/08時点でのバージョンは1.12.5となっている様です。

f:id:shinyaa31:20170108110826p:plain:w450

Step2.導入済みDocker構成要素の各種バージョンを確認

Docker Engine, Compose, and Machineのバージョンをdocker --versionコマンドでそれぞれ確認してみます。Engine, Compose, Machineそれぞれについては以下ドキュメントを参照。

$ docker --version
Docker version 1.12.5, build 7392c3b

$ docker-compose --version
docker-compose version 1.9.0, build 2585387

$ docker-machine --version
docker-machine version 0.8.2, build e18a919 

ちなみに指定無しだとこのような形でClient/Server双方のバージョン情報が表示されます。

$ docker version
Client:
 Version:      1.12.5
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   7392c3b
 Built:        Fri Dec 16 06:14:34 2016
 OS/Arch:      darwin/amd64

Server:
 Version:      1.12.5
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   7392c3b
 Built:        Fri Dec 16 06:14:34 2016
 OS/Arch:      linux/amd64

Step3.アプリケーションの探索とサンプルの実行

コマンドラインターミナルを開き、Dockerが期待通りの挙動を示すかどうか確認してみます。docker versionコマンドでDockerのインストール自体の確認は行えたので、以降ではdocker psdocker runを使ってDockerが起動するかどうかを試してみます。

docker runコマンドを用い、以下の形で処理実行。起動したばかりで手元にimageは存在していませんが、docker runコマンド実行時に対象イメージがローカルにない場合、イメージの取得(docker pull)も併せて行ってくれるようです。

$ docker run -d -p 80:80 --name webserver nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx

75a822cd7888: Pull complete 
0aefb9dc4a57: Pull complete 
046e44ee6057: Pull complete 
Digest: sha256:fab482910aae9630c93bd24fc6fcecb9f9f792c24a8974f5e46d8ad625ac2357
Status: Downloaded newer image for nginx:latest
5b3132df3096a61dbe70184afb3e1c5a38e0998e4dffaa51ed93a1af6c5a3c43

docker psコマンドで稼働中のコンテナを表示出来ます。上記で実行したものが稼働している様です。

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
5b3132df3096        nginx               "nginx -g 'daemon off"   5 minutes ago       Up 5 minutes        0.0.0.0:80->80/tcp, 443/tcp   webserver
$ 

この設定では、nginxによりWebサーバがポート:80で稼働する様になっています。[http://localhost/]のURLでアクセスするとブラウザ上にnginxのWelcomeページが表示されました。コンテナの稼働についても問題無さそうです。

f:id:shinyaa31:20170108112308p:plain:w600

確認が取れたので、稼働中のコンテナとイメージを停止・削除します。

ユーザーがコンテナを停止または削除するまで、上記のnginxによるWebサーバーはコンテナ上で指定のポートにて稼働し続けます。

Webサーバを止めたい場合はdocker stop webserverを実行します。再び起動させたい場合はdocker start webserverを実行します。

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
5b3132df3096        nginx               "nginx -g 'daemon off"   5 minutes ago       Up 5 minutes        0.0.0.0:80->80/tcp, 443/tcp   webserver
$ docker stop webserver
webserver

稼働を止めたコンテナはdocker psでは表示されなくなります(稼働中のコンテナのみ表示させるコマンドのため)。停止しているものも含めた全てのコンテナを表示するにはdocker ps -aとオプションを付与してdocker psコマンドを実行します。

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
5b3132df3096        nginx               "nginx -g 'daemon off"   6 minutes ago       Exited (0) 5 seconds ago                       webserver

上記稼働中のコンテナの停止&削除を1回で行う場合はdocker rm -f webserverで対応可能です。このコマンドを実行するとコンテナは削除されますが、イメージは残ります。

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
5b3132df3096        nginx               "nginx -g 'daemon off"   6 hours ago         Up 4 seconds        0.0.0.0:80->80/tcp, 443/tcp   webserver

$ docker rm -f webserver
webserver

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              01f818af747d        11 days ago         181.6 MB

取得済みイメージの一覧はdocker imagesで確認出来ます。また、不要になったイメージの削除はdocker rmiで行えます。イメージIDもしくはイメージ名を指定する事で削除する形となります。今回の例で言えばdocker rmi nginxを実行する事でイメージの削除を行う形となります。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              01f818af747d        11 days ago         181.6 MB
$ docker rmi nginx
Untagged: nginx:latest
Untagged: nginx@sha256:fab482910aae9630c93bd24fc6fcecb9f9f792c24a8974f5e46d8ad625ac2357
Deleted: sha256:01f818af747d88b4ebca7cdabd0c581e406e0e790be72678d257735fad84a15f
Deleted: sha256:473ebc9bec6f78c39877b6655ff7c464271d36464442ed27b10be957201e364a
Deleted: sha256:1802fbcbaa5e7496944e22a9fd0cb72051515a66e382b7148cf4098a92571221
Deleted: sha256:b6ca02dfe5e62c58dacb1dec16eb42ed35761c15562485f9da9364bb7c90b9b3
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

まとめ

以上の内容で『Get started with Docker for Mac』の手順は終了となります。ドットインストールで実践していた内容の振り返りという感じですね。何の違和感も無く手順を進める事が出来ました。

Docker for Macで紹介されている参考情報・学習のための情報源としては以下のものが挙げられています。日本語ドキュメントとして既に展開されているものがありますので、『例で学ぶ』の部分などはそのまま読み進めながら実践して行く事で一通りの基本的な部分は把握して行く事が出来そうです。

AWS Batchに興味アリ→AWS Batchってコンテナ使えるらしいぞ、から2つのエントリを経てDockerに入門してみた訳ですけれども、これでDockerではどういう事が出来るのか、という部分について雰囲気を掴む事が出来ました。

Dockerの効果的な使い方は?どういうユースケースで使うのが良いのか?という部分が次に気になる所ではあります。公式サイトに以下『Use Cases』というページがあり、CI/CD, DevOps, Infrastructure Optimizationと3つのケースが挙げられています。この辺りはなるほど確かにそうだよねという思いですが、AWS Batchで使う時の様なバッチ処理、またはビッグデータ周りの部分でDockerコンテナ(Amazon ECR含めて)技術をどういう風に活用して行くのが良いのかなという部分についてはまだしっくり来ていない部分もあったりします。今後はこの辺り情報収集して行ければと思っております。