はじめに
開発環境を用意するとき、ソフトウェアのインストールや設定を一人ずつ行っていると、手順の抜けやバージョンの違いが生じることがあります。
Dockerでは、実行に必要なファイルや設定をイメージにまとめ、そのイメージからコンテナを起動できます。イメージを共有すれば、利用する人が環境構築の作業を繰り返す負担を減らせます。
この記事では、Docker Hubの役割と、イメージを共有することで環境構築がどう変わるのかを説明します。
Docker Hubとは
Docker Hubは、Dockerイメージを保存・共有するためのサービスです。公開されているイメージを探し、手元のDocker環境で利用できます。
例えば、Nginxのようなソフトウェアを含むイメージを利用すると、そのソフトウェアをコンテナとして動かせます。利用者が一から同じインストール作業を行う必要はありません。
Docker Hubは、コンテナを動かす場所そのものではありません。イメージを受け渡す場所であり、取得したイメージからコンテナを起動するのは、利用者側のDocker環境です。Docker Docs
配布するイメージと、動かすコンテナの違い
イメージとコンテナは、役割が異なります。
| 用語 | 役割 |
|---|---|
| Dockerイメージ | コンテナを作るためのファイルや実行設定をまとめたもの |
| コンテナ | イメージをもとに作成し、アプリケーションを実行する環境 |
| Docker Hub | イメージを保存し、ほかの環境から取得できるようにするサービス |
共有の中心になるのはイメージです。作成者のPCで動いているコンテナを相手がそのまま操作するのではなく、受け取った側がイメージから自分のコンテナを起動します。Docker Docs
Dockerの基本操作は、Docker入門で確認できます。
イメージを共有するまでの考え方
自分で作ったイメージをほかの人に使ってもらう場合も、基本的な考え方は同じです。
- 必要なソフトウェアやファイルを含むイメージを用意する
- Docker Hubなどを通じて、そのイメージを共有する
- 利用者がイメージを取得する
- 利用者のDocker環境でコンテナを起動する
作成者は利用する環境をイメージとして用意し、利用者はそのイメージをもとに実行します。
自分のファイルを含むイメージの作成方法は、Dockerfile入門で解説しています。
イメージを共有するメリット
環境構築の手間を減らせる
必要なソフトウェアを個別に導入する方法では、利用者ごとに同じ準備が必要になります。
準備済みのイメージを利用できれば、手順を最初から繰り返す負担を減らせます。新しいメンバーが開発に参加するときも、環境を用意しやすくなります。
使用する環境をそろえやすい
同じアプリケーションでも、利用するソフトウェアのバージョンや設定が違うと、動作に差が出ることがあります。
共通のイメージを利用すれば、各自が別々に構築する場合より、実行環境をそろえやすくなります。ただし、Dockerを使うだけですべての環境差がなくなるわけではありません。
公開されているソフトウェアを試しやすい
Docker Hubには、さまざまなソフトウェアのイメージが公開されています。
自分でイメージを作る前に、公開イメージを利用して動作を試すこともできます。用途に合うものを選べば、ソフトウェアを試すための準備を減らせます。さくらのナレッジ
公開イメージは提供元も確認する
公開されているイメージを利用するときは、名前だけで選ばず、誰が提供しているか、どのような使い方を想定しているかを確認しましょう。
Docker HubにはDocker Official Imagesとして整理されているものや、さまざまな提供者が公開するものがあります。利用するイメージの説明を読み、自分の目的に合っているかを確かめることが大切です。docs.docker.com
まとめ
Docker Hubは、Dockerイメージを保存・共有するためのサービスです。
イメージを共有すると、利用者はそれを取得し、自分のDocker環境でコンテナを起動できます。環境構築の繰り返しを減らし、チームで使用する環境をそろえやすくなります。
Dockerfileでイメージを作ることと、そのイメージをほかの環境で利用することをつなぐと、Dockerを使う利点が見えてきます。