前回は docker run コマンドで nginx のコンテナを簡単に実行することができました。これが可能なのは、作成済みの Docker イメージがインターネット上に共有されており、これをダウンロードして使えるようになっているためです。この Docker イメージを共有する仕組みが Docker Hub です。Docker Hub には誰でもアカウントを作ることができ無料で自作の Docker イメージをホストすることができます。イメージは基本的にはパブリックであり、プライベートイメージは1つだけホストすることができます。、2個以上のイメージをプライベートでホストしたい場合は有料のプランがあります。詳しくは「Billing & Plans - Docker Hub」をご覧ください。
Docker Hub には様々な Docker イメージがホストされており検索できるようになっています。前回までに利用していた nginx のイメージも Docker Hub でホストされています。リンク先を見ると nginx のイメージにどのようなバージョンがあるか分かり、簡単な使い方が書いてあります。前回までに nginx コンテナの起動時にネットワークポートの指定やディレクトリの共有などいくつか設定を行いましたが、これらはこのページを参考に設定しました。このように、多くのイメージのページには使い方等が書いてあるため利用時に参考にすると良いでしょう。
Docker ではイメージのバージョンを tag で管理します。nginx の Tags ページを見てみましょう。1.15 のようなバージョン番号のものの他に 1.15-alpine のようなバージョンも存在します。Docker ではイメージのtagには任意の文字列を指定できるため、バージョン管理はイメージの管理者に委ねられます。
nginx の Tags ページを見ると脆弱性の情報の記載があることに気づくかと思います。これは、イメージをスキャンし、古い脆弱性の残っているバージョンのライブラリなどを使っている場合に表示する Docker Hub の機能です。もちろん脆弱性のないイメージを使うのが一番ですが、残念ながらオールグリーンのイメージは多くありません。イメージをクリックするとスキャン結果を見ることができるので参考にしてください。多くのイメージでは実際には実行しないツール群も含めている場合があり、必ずもイメージの実行に脆弱性があるわけではありません。あまり神経質になる必要はありませんが、サービスを構築する際はイメージを使っても大丈夫か検討する際に脆弱性もチェックしてみてください。
docker run は Docker Hub からイメージを探してダウンロードするように設定されています。またイメージを検索するための docker search コマンドもあります。
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 9873 [OK]
STARS を見れば人気のイメージがどれだか分かりますし、OFFICIAL は公式のイメージなので安心感があります。たくさんのイメージが登録されているので使ってみたいアプリケーションを探して見ると良いでしょう。
ただし、前述したように Docker Hub は誰でもアカウントを作成できるサービスなので、アップロードされているイメージが誰が作ったものか注意する必要があります。イメージによっては脆弱性が多く残っていたり、悪意のあるプログラムが仕込まれている可能性もあります。実行するだけであれば問題になることはほとんどありませんが、Googleなどの認証情報を求めるようなイメージの利用には十分注意してください。特に気になるようであれば OFFICIAL のイメージを使うようにしてください。