logologo
Dockerリポジトリとは?その概要や仕組みについて理解しよう
thumb_dockerrepository_01

Dockerリポジトリとは?その概要や仕組みについて理解しよう

アンドエンジニア編集部
2024.04.12
この記事でわかること
Dockerはコンテナ型仮想化実現の仕組みで、リポジトリやレジストリ、イメージの理解が必要
Dockerリポジトリは、同じ名前のDockerイメージの集まりで、タグでイメージの違いを識別する
Docker Desktopのダウンロードとインストール、リポジトリの作成方法などが分かる

Dockerリポジトリとは?

img_dockerrepository_01

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を立てずに、プロセスやユーザなどを隔離して、あたかも異なるマシンが動いているかのように動作させることができます。そのため、軽量かつ高速に起動や停止を行えるのです。

これらを図にすると以下のようになります。

img_dockerrepository_02
【図】:仮想化とコンテナ仮想化の概念図

【参考】:What is a Container? | Docker 【参考):Windows 10 の Hyper-V の概要 | Microsoft Learn

Dockerとは?使いどころやメリット・デメリットについて解説!

Dockerの仕組み

img_dockerrepository_03

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コンテナとの関係は次の図のようになっています。

img_dockerrepository_04
【図】:レジストリとリポジトリ、イメージとタグ、Dockerコンテナとの関係
Dockerイメージとコンテナの違いとは?作成の流れ入門
エンジニア初心者でも分かる!Dockerコンテナの超入門!

レジストリーサービスの概要

レジストリーサービスにおけるレジストリ、リポジトリ、イメージの関係を見てみましょう。レジストリにはイメージの管理や共有を行うために、主として2つの役割があります。

▪️イメージの登録と共有 ▪️イメージへのアクセス管理(認証や権限付与)

これらを図にすると以下のようになります。

img_dockerrepository_05
【図】:Docker レジストリサービスの概念図

ここまでで、レジストリの中にリポジトリがあり、リポジトリからイメージを展開することが分かりました。このイメージを実行すると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を使いこなすために、これらの要素を理解しておくと良いでしょう。

【図解】Dockerfileとは?概要や記述方法を詳しく解説!

Dockerのメリットとデメリット

img_dockerrepository_06

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リポジトリを利用するための手順

img_dockerrepository_07

ここでは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

img_dockerrepository_08
【図】:Docker Hub Sign in or Sign up画面
Docker Hubとは?仕組みからアカウント作成方法まで紹介

Docker Desktopのダウンロードとインストール

Docker Desktopをインストールするために、Dockerのウェブサイトからインストーラーをダウンロードします。ページを開いて、【Download for Windows】(Windows用をダウンロード)をクリックします。

【参考】:Get Started | Docker

img_dockerrepository_09
【図】:Docker Desktop for Windows ダウンロード画面

ダウンロードが完了したら、ファイルが「ダウンロード」フォルダに保存されますので、エクスプローラーで「ダウンロード」フォルダを開き、【Docker Desktop Installer】をクリックしてインストールを開始します。

img_dockerrepository_10
【図】:Docker Desktop for Windows インストール中の画面

インストール中に「ユーザーアカウント制御」の警告画面が表示される場合は、「はい」を選択して進めます。インストールが完了したら、PCを再起動してください。再起動すると自動的にWSL2(Windows Subsystem for Linux 2)がインストールされます。

【参考】:WSL のインストール | Microsoft Learn

img_dockerrepository_11
【図】:WSL2(Windows Subsystem for Linux 2)インストール画面
【Dockerインストール】Windows・Linux・MacOS
Windows環境のDockerとWSLの活用方法・手順を解説

PC再起動後のセットアップ

再起動後、自動的にDocker Desktopが起動します。「Docker Subscription Service Agreement」が表示されます。これはサブスクリプションの使用許諾に関するもので、内容を確認して「Accept」(受け入れる)をクリックします。

img_dockerrepository_12
【図】:Docker Subscription Service Agreement 画面

次に、WSL2の自動更新をするか手動更新を行うかを選択します。特に理由がなければ、そのまま「Finish」をクリックします。

Dockerの利用開始

「Welcome to Docker Desktop」(Docker Desktop へようこそ)画面が表示されます。Docker Hubのアカウントを持っている場合は「Sign up」をクリックしてログインできます。アカウントを持っていない場合は「Continue without signing in」(サインインせずに継続)をクリックします。

img_dockerrepository_13
【図】:Welcome to Docker Desktop  画面

Docker Desktopが正常にインストールされ、利用できる状態になります。

img_dockerrepository_14
【図】:Docker Desktop  画面

画面上のショートカットキー[Ctrl+K]を実行すると、以下のようにPullが可能なイメージが表示されます。

img_dockerrepository_15
【図】:Docker Desktop イメージ一覧

インストールしたDockerのバージョンを確認します。Windows PowerShellを起動し、docker version コマンドを実行するとバージョンなどの情報を確認できます。今回は「25.0.3」と分かります。

img_dockerrepository_16
【図】:インストールしたDocker のバージョン確認

Dockerリポジトリの作成

リポジトリの作成はDockerアカウントを用いて、Docker HubのWeb画面で行えます。さきほどのDocker HubにSign inしたら、ヘッダーメニューの[Repositories]をクリックし、画面右に表示された[Create repository]をクリックします。

img_dockerrepository_17
【図】:Docker Hub [Create Repository]画面

遷移した画面で、「Repository Name」欄にリポジトリ名を入力します。Visibilityでは作成するリポジトリの属性を「Public」か「Private」かのいずれかを選択し、「Create」ボタンをクリックします。公開しない場合は「Private」を選択しましょう。

img_dockerrepository_18
【図】:Docker Hub Repository名入力 画面 

今回はリポジトリ名を「myrepository」としましたので、次のような画面が表示されていれば、リポジトリの作成は終了です。

img_dockerrepository_19
【図】:Docker Hub  Repository 確認画面

イメージのアップロード

イメージは自作もできますが、Docker Hubからプルすることも可能です。

作成したイメージをDocker Hubにアップロードする場合は、Power Shellで以下のコマンドを実行します。以下はリポジトリ名は仮にmyrepository、イメージ名をmyimageとした場合の例です。

>docker login
>docker push myrepository/myimage

これらの手順を実行することで、Dockerリポジトリを作成し、イメージをアップロードできます。

Dockerリポジトリを活用しよう

img_dockerrepository_20

ここまでDockerリポジトリの概要、Dockerリポジトリの仕組み、メリットやデメリット、Dockerリポジトリの作成方法などについて入門者向けに紹介しました。Dockerリポジトリは、コンテナイメージの保存と共有に便利です。

公開リポジトリでコミュニティと共有したり、プライベートリポジトリでチーム内で管理したりできるため、さまざまなメリットを得られます。Dockerアカウントには無料プランもありますので、ぜひ利用してみましょう。

【Docker入門】メリットや用途を交えて基本情報を解説!
Dockerの環境構築は?理解を深める作業の流れを解説!
気になる人のXをフォローしよう!
公式LINE
公式YouTube
マイナビITエージェント

編集部オススメコンテンツ

thumb_gptowten_01
ChatGPTの面白い使い方15選!ビジネスや遊び相手になる事例
アンドエンジニア編集部
2024.02.19

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供

カテゴリー

編集部おすすめコンテンツ

アンドエンジニアへの取材依頼、情報提供などはこちらから

logologo
Powered by マイナビ AGENT