Dockerリポジトリとは?
Dockerは、コンテナ型仮想化を実現するプロダクトです。仮想化とは、ホストOS上に別のマシンを仮想的に立ち上げることを指します。従来のホスト型仮想化とは異なり、Dockerはコンテナ型仮想化を提供しています。
Dockerによるコンテナ仮想化を構成するものとして、レジストリ、リポジトリ、イメージなどが挙げられます。これらの関係は、簡単に言えばリポジトリはイメージの集合であり、レジストリはそれらのイメージを格納・管理する場所と言えます。
■ レジストリ レジストリは、コンテナイメージやリポジトリを格納・管理する場所です。主なレジストリには、Docker HubやAWS ECRなどがあります。
■ リポジトリ リポジトリは同じ名前のDockerイメージの集まりであり、タグによって異なるイメージを識別します。GitHubのリポジトリとタグをイメージするとわかりやすいです。リポジトリ名は同じでも、異なるタグを持つイメージが含まれています。
■ イメージ Dockerイメージは、Dockerコンテナの動作環境となるテンプレートファイルです。OSやアプリケーション、アプリケーションの実行に使われるコマンド、メタデータまで含まれます。
Dockerコンテナを実行するためには、Dockerイメージが必要で、クラウド上のレジストリ「Docker Hub」からダウンロードしたり、自分で作成したりできます
【参考】:Docker Hub 上のリポジトリ |Docker-docs-ja 24.0 ドキュメント
そもそもDockerとは
DockerはDocker社が開発している、コンテナ型の仮想環境を作成したり、配布・実行したりするためのプラットフォームのことです。コンテナとは物流で利用される、荷物をひとまとめにして運ぶ大きな箱のイメージをサーバ上で実現したものです。
サーバにはOSがあり、OSの上にコンテナを動かすためのDockerがあります。コンテナはユーザ領域とほぼ同じです。通常、ユーザ領域は1つのOSに対して1つ存在しますが、Dockerではユーザ領域をコンテナ化することで、いくつも設定することが可能です。
仮想マシン環境と似ていますが、仮想マシンでは、ホストマシン上でハイパーバイザを利用して複数のゲストOSを立て、その上でミドルウェアなどを動かします。
このハイパーバイザーに対し、コンテナはホストマシン上のカーネルを利用し、ゲストOSを立てずに、プロセスやユーザなどを隔離して、あたかも異なるマシンが動いているかのように動作させることができます。そのため、軽量かつ高速に起動や停止を行えるのです。
これらを図にすると以下のようになります。
【参考】:What is a Container? | Docker 【参考):Windows 10 の Hyper-V の概要 | Microsoft Learn
Dockerの仕組み
Dockerはコンテナによる仮想環境構築のツールです。ホストマシン(Windows、Mac、Linuxなど)の上に「コンテナ」と呼ばれる仮想環境を構築し、その中でアプリケーション、ミドルウェア、OSなどを動かすことができます。
その中で重要な役割を担うDockerリポジトリとはどのような仕組みなのか、Dockerリポジトリのメリットについても見ていきましょう。Dockerを使いこなすために、これらの要素を理解しておくと良いでしょう。
Dockerリポジトリの仕組み
Dockerを理解するには、リポジトリの仕組みを理解しておくことが必要です。
■ Dockerイメージ Dockerコンテナを実行するためのテンプレートファイルです。このイメージには、OSやアプリケーションからアプリケーションの実行に使われるコマンド、メタデータまで含まれます。Dockerイメージは共有され、Dockerリポジトリに格納されます。
■ Dockerコンテナの実行 Dockerコンテナを実行するためには、Dockerイメージが必要です。Dockerイメージは、クラウド上のレジストリ「Docker Hub」からダウンロードして使うことができる他、自分で作成することもできます。
■ Dockerレジストリ Dockerイメージを保管・提供する場所とサービスのことです。有名なものにはDocker Hubがあります。Dockerレジストリはセキュリティを重視し、TLSと基本認証をサポートしています。
また、通知システムを提供しており、ウェブフック(HTTPを用いたイベント通知)の呼び出しやログ記録、ルーティングメトリックの収集が簡単に行えます。レジストリとリポジトリ、イメージとタグ、Dockeコンテナとの関係は次の図のようになっています。
レジストリーサービスの概要
レジストリーサービスにおけるレジストリ、リポジトリ、イメージの関係を見てみましょう。レジストリにはイメージの管理や共有を行うために、主として2つの役割があります。
▪️イメージの登録と共有 ▪️イメージへのアクセス管理(認証や権限付与)
これらを図にすると以下のようになります。
ここまでで、レジストリの中にリポジトリがあり、リポジトリからイメージを展開することが分かりました。このイメージを実行するとDockerコンテナが生成されて、アプリケーションを実行できます。
DockerイメージとDockerコンテナの違い
DockerイメージとDockerコンテナが分かりにくいため、ここではその違いについて確認しておきましょう。
■ Dockerイメージ Dockerコンテナを動作させるためのテンプレートファイルを指します。1つのDockerイメージを実行すると1つのDockerコンテナが作成されます。Dockerイメージは、クラウド上のレジストリからダウンロードして使うことも、自分で作成して使うこともできます。
以下は、Dockerイメージを操作する基本コマンドです。
▪️docker images:ローカル環境のDockerイメージの一覧を表示する ▪️docker pull [イメージ名]:構築済みのDockerイメージをレジストリからダウンロードする ▪️docker push [イメージ名]:ローカルに作成したDockerイメージをレジストリにアップロードする ▪️docker build:Dockerfileから独自のイメージをビルドする ▪️docker rmi [イメージ名]:指定した1つ、もしくは複数のDockerイメージを削除する
■ Dockerコンテナ テンプレートファイルに基づいてアプリケーションを実行する環境・インスタンスです。Dockerイメージを走らせることによって実行環境であるDockerコンテナが生成され、アプリケーションが実行されます。
Dockerイメージを作成してDockerコンテナに適用する手順は、まず設計書にあたる「Dockerfile」を作成し、それをbuildしてDockerイメージを作成し、さらにrunしてDockerコンテナを作成します。
Dockerイメージは複数のイメージレイヤによって構成されており、ミドルウェアのインストールなどで新しいレイヤが追加されます。Dockerを使いこなすために、これらの要素を理解しておくと良いでしょう。
Dockerのメリットとデメリット
Dockerリポジトリを利用することはDockerコンテナそのものを利用することです。Dockerはアプリケーション作成、デプロイ、実行を簡単にするツールであり、多くの開発環境で活用されています。Dockerを利用するメリットとデメリットには何があるのでしょうか。
メリット
Dockerのメリットとしては、主に次の3つが挙げられます。1つずつ見ていきましょう。
1.環境共有できる Dockerを使用することで、ソフトウェアの実行環境をどのような環境でも簡単に共有・管理できます。開発者が異なるOSやソフトウェア環境を使用していても、Dockerイメージを共有することで一貫性を保ち、アプリケーションの正常な動作を確保できます。
2.軽量性に優れる Dockerのコンテナ型仮想化は、従来のホスト型仮想化よりも圧倒的に軽量に動作します。プログラムの実行環境を管理するための仕組みとしてDockerがあり、それを共有するための仕組みとしてDockerHubなどのサービスがあります。
3.効率的なリソース利用が可能 サーバ内で各コンテナを動作させ、実行環境を分離することで、リソースの効率的な利用が可能になります。
デメリット
前記のようなメリットがある一方、Dockerにはいくつかのデメリットも存在します。以下にDockerの主なデメリットを示します。
1. 同一のOS(カーネル)を利用する DockerコンテナはホストOSのカーネルを共有することで同一のカーネル上で実行されるため、カーネルに対する構成変更操作は個別に行えません。異なるOSバージョンやカーネルを利用したい場合、制約が生じることがあります。
2. 提供できるホストの種類が少ない Dockerは特定のホストOSで動作します。一部のホスト環境ではDockerを利用できないことがあるため、ホストの選択肢が限られることがあります。
3. 習得に時間がかかる Dockerは強力で柔軟なツールですが、学習コストがかかることがあります。特に初めて利用する場合、コンテナの概念やDockerfileの作成方法などを理解する必要があります。これらのデメリットを理解した上で、Dockerを適切に活用することが重要です。
Dockerリポジトリを利用するための手順
ここではDocker Desktopのインストール、Dockerリポジトリの作成方法について紹介します。システム環境はWindows11Pro、メモリーは16GBです。(8GB以上を推奨)
Docker DesktopはWindowsやMacOS上で簡単にDocker環境を構築できるツールであり、コンテナ作成や管理、Dockerイメージの管理ができます。Dockerを利用する方はインストールしておきましょう。
Docker Hubアカウントの作成
Docker Hubにアクセスして、[Sign up]からアカウントを作成します。既にDockerアカウントを持っている方は、Sign inからログインしてください。
【参考】:Docker Hub Container Image Library | App Containerization
Docker Desktopのダウンロードとインストール
Docker Desktopをインストールするために、Dockerのウェブサイトからインストーラーをダウンロードします。ページを開いて、【Download for Windows】(Windows用をダウンロード)をクリックします。
【参考】:Get Started | Docker
ダウンロードが完了したら、ファイルが「ダウンロード」フォルダに保存されますので、エクスプローラーで「ダウンロード」フォルダを開き、【Docker Desktop Installer】をクリックしてインストールを開始します。
インストール中に「ユーザーアカウント制御」の警告画面が表示される場合は、「はい」を選択して進めます。インストールが完了したら、PCを再起動してください。再起動すると自動的にWSL2(Windows Subsystem for Linux 2)がインストールされます。
【参考】:WSL のインストール | Microsoft Learn
PC再起動後のセットアップ
再起動後、自動的にDocker Desktopが起動します。「Docker Subscription Service Agreement」が表示されます。これはサブスクリプションの使用許諾に関するもので、内容を確認して「Accept」(受け入れる)をクリックします。
次に、WSL2の自動更新をするか手動更新を行うかを選択します。特に理由がなければ、そのまま「Finish」をクリックします。
Dockerの利用開始
「Welcome to Docker Desktop」(Docker Desktop へようこそ)画面が表示されます。Docker Hubのアカウントを持っている場合は「Sign up」をクリックしてログインできます。アカウントを持っていない場合は「Continue without signing in」(サインインせずに継続)をクリックします。
Docker Desktopが正常にインストールされ、利用できる状態になります。
画面上のショートカットキー[Ctrl+K]を実行すると、以下のようにPullが可能なイメージが表示されます。
インストールしたDockerのバージョンを確認します。Windows PowerShellを起動し、docker version コマンドを実行するとバージョンなどの情報を確認できます。今回は「25.0.3」と分かります。
Dockerリポジトリの作成
リポジトリの作成はDockerアカウントを用いて、Docker HubのWeb画面で行えます。さきほどのDocker HubにSign inしたら、ヘッダーメニューの[Repositories]をクリックし、画面右に表示された[Create repository]をクリックします。
遷移した画面で、「Repository Name」欄にリポジトリ名を入力します。Visibilityでは作成するリポジトリの属性を「Public」か「Private」かのいずれかを選択し、「Create」ボタンをクリックします。公開しない場合は「Private」を選択しましょう。
今回はリポジトリ名を「myrepository」としましたので、次のような画面が表示されていれば、リポジトリの作成は終了です。
イメージのアップロード
イメージは自作もできますが、Docker Hubからプルすることも可能です。
作成したイメージをDocker Hubにアップロードする場合は、Power Shellで以下のコマンドを実行します。以下はリポジトリ名は仮にmyrepository、イメージ名をmyimageとした場合の例です。
>docker login
>docker push myrepository/myimage
これらの手順を実行することで、Dockerリポジトリを作成し、イメージをアップロードできます。
Dockerリポジトリを活用しよう
ここまでDockerリポジトリの概要、Dockerリポジトリの仕組み、メリットやデメリット、Dockerリポジトリの作成方法などについて入門者向けに紹介しました。Dockerリポジトリは、コンテナイメージの保存と共有に便利です。
公開リポジトリでコミュニティと共有したり、プライベートリポジトリでチーム内で管理したりできるため、さまざまなメリットを得られます。Dockerアカウントには無料プランもありますので、ぜひ利用してみましょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから