logologo
Dockerレジストリとは?その概要や仕組み、基本操作を解説
thumb_dockerrepository_01

Dockerレジストリとは?その概要や仕組み、基本操作を解説

アンドエンジニア編集部
2024.05.12
この記事でわかること
Dockerはコンテナ型仮想化を実現するプロダクトで、レジストリとイメージの関係理解が必要
Dockerレジストリは、同じ名前のDockerイメージの集まりで、タグによってイメージを識別する
Dockerレジストリのコマンドラインによる基本操作、イメージの作成方法などが分かる

Dockerレジストリとは?

img_dockerregistry_01

Dockerはコンテナ型アプリケーション実行環境です。Dockerによって、OSの内部に独立したアプリケーション実行環境(コンテナ)を生成でき、いつでもその環境を立ち上げられるようになります。Dockerはソフトウェアをパッケージ化して、どこでも同じ動きをするようにするツールです。

Dockerは従来のホスト型仮想化とは異なり、コンテナ型仮想化を提供しています。Dockerレジストリは同じ名前のDockerイメージの集合体であり、イメージはそれぞれのタグによって識別されます。

【参考】:Docker レジストリ の理解 | Docker-docs-ja 1.9.0b ドキュメント

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

Docker Hubとは

Docker Hubは、Docker社がクラウド上で提供しているDockerイメージ(コンテナ)の共有サービスです。 Docker HubではさまざまなDockerイメージが公開されており、ユーザはDocker Hubから任意のイメージを取得して、コンテナ化してすぐに様々なアプリケーションを利用できます。

また、Docker Hubには公開リポジトリの他に非公開のプライベートリポジトリも存在し、ユーザは自分で作成したイメージをそれらリポジトリにアップロードして他のユーザと共有することもできます。

 Docker Hubは、開発者やオープンソースのコントリビューターにとって大変便利なツールであり、Dockerイメージの検索、使用、共有を簡単に行えます。

【参考】:Docker Hub Container Image Library | App Containerization

Docker Hubとは?仕組みからアカウント作成方法まで紹介
Dockerイメージとコンテナの違いとは?作成の流れ入門

Docker HubとDockerレジストリ

Docker HubとDockerレジストリは似ており、同一のものだと思いがちですが、同一ではありません。Docker Hubはレジストリとして公開されたパブリックなイメージの基地であり、Dockerレジストリはローカルのプライベートなイメージのための場所です。

Docker Hubでは、Dockerイメージは「レジストリ」と呼ばれるデータベースに登録されます。(Docker公式では、Docker Hubを「クラウド上のレジストリサービス」と称しています。)

以下、それぞれをまとめると、次のようになります。

■ Docker Hub 公開されたDockerイメージのレジストリです。ユーザはDocker Hubからイメージをダウンロードできます。イメージを共有したり、他のユーザと協力したりするために使用されます。

■ Dockerレジストリ プライベートなDockerイメージのレジストリです。組織内でのみアクセス可能です。セキュリティやプライバシーの観点から重要です。

Docker HubとDockerコンテナ

Docker HubはDockerイメージ(コンテナ)の共有サービスだと分かりました。次にDockerコンテナについて確認しておきましょう。DockerコンテナはDockerイメージから作成され、アプリケーションの実行環境として利用されます。この関係を図で示すと次のようになります。

【参考】:What is a Container? | Docker

img_dockerregistry_02
【図】: Docker HubとDockerコンテナ
エンジニア初心者でも分かる!Dockerコンテナの超入門!

Dockerレジストリの特徴とメリット

img_dockerregistry_03

ここでは、Dockerレジストリの特徴とメリットについて見ていきます。さまざまな優れた特徴やメリットが、世界中の開発者たちが利用する理由です。

特徴

Dockerレジストリは、Dockerイメージ(コンテナ)を保存・配信するためのシステムであり、異なるタグを持つバージョンのDockerイメージを保持します。Dockerレジストリには以下のような特徴があります。

1.ストレージとコンテンツ配信システム Dockerイメージの名前を異なるタグで保持します。ユーザはdocker pushとdocker pullコマンドを使ってレジストリと通信できます。

2.ストレージのバックエンド デフォルトのストレージドライバーはローカルのPOSIXファイルシステムであり、開発や小規模環境で扱いやすいです。クラウドベースのストレージ(S3、Microsoft Azure、Ceph Rados、OpenStack Swift、Aliyun OSSなど)もサポートしています。

【参考】:POSIX - Linux技術者認定 LinuC | LPI-Japan

3.セキュリティと通知 TLSと基本認証をネイティブにサポートしています。通知システムを提供し、Webフック呼び出しやログ記録、メトリック収集が簡単にできます。Dockerレジストリは、Dockerイメージの共有と管理に重要な役割を果たしています。

【参考】:SSL と TLS の比較 - 通信プロトコルの違い |AWS

メリット

Dockerレジストリは、イメージの効率的な管理とセキュリティを提供する重要なツールです。では、Dockerレジストリを利用することで、ユーザはどのようなメリットを得られるのかを見ていきましょう。

1. イメージの管理とバージョン管理 Dockerレジストリは、タグ付けされたバージョン管理が可能なイメージを保持します。必要に応じてイメージを取得したり、アップロードしたりできます。

2. アクセス制御とセキュリティ レジストリはTLSと基本認証をネイティブにサポートしており、保管されているイメージに対するアクセスのセキュリティを確保しています。また高度な認証や認証手法を使うことで、大規模なデプロイなどへの拡張も期待できます。

3. 通知システム レジストリは堅牢な通知システムを提供しており、Webフックの呼び出しやログ記録、レポートの拡張、メトリックの収集を簡単にします。

4. ストレージの柔軟性 デフォルトのストレージドライバはローカルPOSIXファイルシステムであり、開発や小さな環境で扱いやすいです。また、クラウドベースのストレージ(S3、Microsoft Azure、Ceph Rados)をサポートしています。

Dockerレジストリの基本操作

img_dockerregistry_04

Dockerレジストリの基本的な操作について紹介します。Dockerレジストリは、Dockerイメージを保存し、異なるタグを持つバージョンを管理するストレージとコンテンツ配信システムでした。

ここでは、Dockerでオープンソースの高機能サーバとして知られるnginx(エンジンエックス)を動かし始めるまでの操作手順を紹介します。

【参考】:nginx(エンジンエックス)|日本公式サイト

Docker Desktopのインストール

まず、Docker Desktopのホームページにアクセスして、Windows用のDocker Desktopをダウンロードします。ダウンロードが完了したら、ダブルクリックしてインストールします。Dockerアカウントがない方は、[Sign up]からアカウント作成を行ってからインストールします。

インストールが済み、PCを再起動すると自動的にプロンプト画面が表示されてにWSL2(Windows Subsystem for Linux 2)がインストールされ、Docker Desktopの使用許諾確認画面が表示されますので、[Accept]を選択してクリックします。これで、Dockerレジストリの利用が可能になります。

【参考】:Docker Hub Container Image Library | App Containerization 【参考】:Get Started | Docker

img_dockerregistry_05
【図】: Docker Desktop for Windows ダウンロード画面
Windows環境のDockerとWSLの活用方法・手順を解説
Linux版Docker Desktopが登場!機能と利用方法を解説

nginxイメージの取得

Docker Hubから公式のnginxイメージを取得します。ターミナルを管理者モードで起動し、以下のコマンドを実行してください。取得したイメージは"Docker images"コマンドでイメージ一覧を表示できます。

>docker image pull nginx

次のように処理が実行されれば、nginxのイメージが取得できています。

img_dockerregistry_06
【図】:nginxのイメージをDocker HUBより取得

nginxコンテナの起動

nginxのコンテナを起動するには、以下のコマンドを入力します。

>docker container run -d -p 8080:80 --name nginx nginx

次のように処理が実行されれば、nginxコンテナは起動しています。

img_dockerregistry_07
【図】:nginxのコンテナを起動

「-p 8080:80」 オプションは、ホスト側のポート番号(8080)とDocker側のポート番号(80)を紐づけています。

-d オプションは、Dockerコンテナをバックグラウンドで実行するためのものです。

--name nginx オプションは、コンテナに名前を付与しています。

nginxサーバの起動を確認

ブラウザで「http://localhost:8080/」にアクセスすると、nginxのデフォルトページが表示されます。

img_dockerregistry_08
【図】:nginxのデフォルトページを表示

コンテナを停止する場合は次のように入力します。

>docker container stop nginx

コンテナを起動する場合は次のように入力します。

>docker container stop nginx

自作HTMLの表示

nginxデフォルトのhtmlファイルを自作のhtmlファイルに変更して表示してみましょう。

nginxのデフォルトのHTMLを編集して、自分のHTMLに変更できます。以下の手順で行います。

① コンテナ内にアクセス

>docker container exec -it nginx bash

② nginx設定ファイルの内容の確認

>cat /etc/nginx/conf.d/default.conf

以下はnginxコンテナに入り、設定内容を確認した際の表示です。

img_dockerregistry_09
【図】:nginxコンテナに入り、設定内容を確認

③ htmlファイルの場所を確認 表示された設定ファイルを確認すると、デフォルトのhtmlは「/usr/share/nginx/html」にあることが分かりました。

④ htmlファイルの編集 以下のコマンドを実行し、「index.html」を編集しましょう。 

>apt-get update

コマンド実行で、次のように表示されます。

img_dockerregistry_10
【図】:Linuxコマンドラインツールのapt-getのアップデート

まず編集用のコマンド(vi)をインストールします。処理中の質問に対しては「Y」を入力します。

>apt-get install vim

次のように表示されます。

img_dockerregistry_11
【図】:Linux 編集用のコマンド(vi)をインストール

「vi」コマンドでhtmlファイルを編集します。「i」キーで編集、編集終了後は「Esc」キーで編集モードを終了し、「:wq」+ [Enter]で上書き保存し、「Exit」で終了します。

>vi /usr/share/nginx/html/index.html

以下、html編集画面です。

img_dockerregistry_12
【図】:htmlフアイル編集画面 

編集が完了したら、ブラウザで再度「http://127.0.0.1:8080」にアクセスして確認してください。Hello world !と表示されていればDockerコンテナが正しく起動されています。

Dockerレジストリを活用しよう

img_dockerregistry_13

ここまでDockerHubやDockerレジストリの概要、Dockerレジストリの特徴やメリット、Dockerレジストリの基本操作について紹介しました。 Docker Hubからnginxのイメージを取得し、nginxコンテナを起動して設定内容を確認し、nginxサーバでWebファイルの確認操作までを実行しました。

Dockerレジストリはチームで開発に利用すると、さまざまなメリットが得られます。ぜひ開発作業で利用してみましょう。

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

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

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

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

お問い合わせ・情報提供

カテゴリー

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

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

logologo
Powered by マイナビ AGENT