こんにちは、ヤスタカです。
シンゴジラの DVD が販売開始されて 5 回目の鑑賞を終えたところです。「無人在来線爆弾!」というセリフは、何度聞いても胸が高鳴りますね。
さて前回の「絶対に挫折しない Docker 入門」では そもそも Docker って何? おいしいの? ってところからインストールの手順、起動までを実践しました。
絶対に挫折しない!オープンソースソフトウェア「Docker」入門編
今回は、もう一歩踏み込んだ段階までご説明します。
前回までのおさらい
それでは、前回のおさらいから始めていきましょう!
まずは「コンテナ」「イメージ」「プロセス」の 3 つがなんだったか思い出していきましょう。この 3 つは今後もずっと出てくる概念なので、しっかりと覚えておいてください。
次にコンテナの起動の仕方です。
docker run ubuntu echo 'Hello, world'
Docker for Mac をインストールして起動後、上記コマンドをターミナル上で実行するとイメージがない場合はリポジトリから取得して、その後コンテナを起動、’hello, world’ の出力を実行してくれるのでした。
今回はこの Docker を操るコマンドをいろいろと紹介していきたいと思います。
Docker には Docker run 以外にもたくさんのコマンドがあり、主要なコマンドをひとつずつみていきたいと思います。やや単調になってしまうかもしれませんが、どんなコマンドがあるかを知っておかないと そもそもやりたいことができないので、少し我慢してお付き合いください。
それでは、次々に紹介していきましょー!
Dockerを操るコマンド群
Docker のコマンドは大まかに分けて「イメージ操作」「コンテナ操作」の 2 つに分けられます。
まずはじめに、イメージ操作を行うコマンドを見ていきましょう。
※[ ]内のコマンドは省略可能です。
Docker イメージを操作するコマンド群
イメージの取得[Docker pull]
以前紹介した Docker run というコマンドは「イメージの取得」「コンテナの生成」「コンテナの起動」までを一気に行ってくれる便利なコマンドでしたが、イメージだけを取得するということも勿論できます。イメージの取得には、こちらのコマンドを使います。
docker pull [オプション] イメージ名[:タグ名]
例えば ubuntu のイメージだけを取得する場合、
docker pull ubuntu
とすれば、イメージの取得だけを行います。また既にイメージが取得済みの場合は何もしません。イメージにタグ名まで指定して実行すると、そのタグが付与されているイメージを取得してきます。タグ名を省略した場合はデフォルトの latest(最新バージョン)を取得します。
イメージ一覧表示[docker images]
取得済みのDockerイメージを一覧表示したいときにはこちら。
docker images [オプション] [リポジトリ名]
-a オプションをつけると、中間イメージもすべて表示されます。
- 中間イメージとは
- Docker イメージにはベースのイメージを修正する形で、いくつかのイメージが重なってひとつの Docker イメージになっているものがあります。その途中段階のイメージも、実はひとつのイメージとして取得されてきています。
イメージの検索[docker search]
Docker のイメージを Docker Hub から検索したいときは
docker search [オプション] 検索キーワード
です。
nginx で検索した結果はこんな感じでした。
% docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 5802 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 999 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 367 [OK]
jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as... 167 [OK]
million12/nginx-php Nginx + PHP-FPM 5.5, 5.6, 7.0 (NG), CentOS... 77 [OK]
webdevops/php-nginx Nginx with PHP-FPM 77 [OK]
h3nrik/nginx-ldap NGINX web server with LDAP/AD, SSL and pro... 38 [OK]
bitnami/nginx Bitnami nginx Docker Image 26 [OK]
evild/alpine-nginx Minimalistic Docker image with Nginx 15 [OK]
webdevops/nginx Nginx container 7 [OK]
blacklabelops/nginx Dockerized Nginx Reverse Proxy Server. 4 [OK]
1science/nginx Nginx Docker images that include Consul Te... 4 [OK]
ixbox/nginx Nginx on Alpine Linux. 3 [OK]
frekele/nginx docker run --rm --name nginx -p 80:80 -p 4... 3 [OK]
servivum/nginx Nginx Docker Image with Useful Tools 2 [OK]
dock0/nginx Arch container running nginx 2 [OK]
drupaldocker/nginx NGINX for Drupal 2 [OK]
xataz/nginx Light nginx image 2 [OK]
xutongle/nginx nginx http 1 [OK]
tianon/nginx DEPRECATED; use nginx:* 1 [OK]
tozd/nginx Dockerized nginx. 1 [OK]
unblibraries/nginx Baseline non-PHP nginx container 0 [OK]
c4tech/nginx Several nginx images for web applications. 0 [OK]
funkygibbon/nginx nginx + openssl automated build, customisa... 0 [OK]
watsco/nginx nginx:1.11-alpine 0 [OK]
stars はお気に入り数になるので、イメージを選択するときの参考までに。
イメージの削除[docker rmi]
取得してきたイメージを削除する場合は、こちらをお使いください。
docker rmi [オプション] イメージ名
Dockerコンテナを操作するコマンド
コンテナを操作するコマンドの説明に入る前に、コンテナのライフサイクルについて理解しておきましょう。その方が、コマンドで何をしようとしているかイメージがつきやすいかもしれません。
Docker のコンテナはイメージからの生成、起動、停止、削除というライフサイクルがあり、それぞれのコマンドが用意されています。
コンテナ一覧表示[docker ps]
コンテナの一覧を表示します。
docker ps [オプション]
そのままだと稼働しているコンテナしか表示してくれませんが、-a オプションを付けると起動中・停止中のコンテナすべてを表示してくれます。
コンテナの生成[docker create]
イメージを取得後、そのイメージからコンテナを生成するには、こちらのコマンドを使います。
docker create [オプション] イメージID [コマンド][引数]
docker run とは違い、コンテナを生成するだけで起動はしません。
コンテナの起動[docker start]
コンテナの生成が終わったら、生成されたコンテナを起動しましょう。
docker start [オプション] コンテナID
コンテナの生成&起動[docker run]
上記の create や start と比較して、コンテナの生成と起動を同時に行ってくれます。結局こっちのコマンドの方が便利なので、よく使うことが多いかと思います。
docker run [オプション]イメージ名[タグ名][引数]
オプションで -d を指定するとバックグラウンドで実行してくれます。
コンテナの停止[docker stop]
起動したコンテナを停止するコマンドです。
docker stop [オプション] コンテナID
コンテナの削除[docker rm]
コンテナを削除するコマンドです。
docker stop [オプション] コンテナID
複数あるコンテナをまとめて全部削除したいときは、こちらのコマンドを使ってください。
docker rm $(docker ps -aq)
これはなにをやっているかというと、docker rm の引数に docker ps -aq( Docker コンテナの一覧表示 -a オプションは起動中・停止中含めてすべてのコンテナを表示、-q オプションはコンテナ ID のみ表示)の結果をひとつずつ渡して実行しているのです。そのため、すべての Docker コンテナが削除されることになるのです。
まとめ
後半どんどんコマンドの説明が雑になってきましたね……。
でも大丈夫。よくわからなかったときは公式ドキュメントを読みましょう。(丸投げ……)
今回紹介した Docker イメージとコンテナを操作するコマンドはどれも基本的なものなので、とりあえずすべて覚えておきましょう。余裕があれば、きめ細かい Docker の設定ができるようになると思います。
Dockerコマンドのドキュメント
次回の絶対に挫折しない Docker 入門 その3では、docker run のオプション設定あれこれやをご紹介していきます!
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。