CoreOSで、独自のDockerレジストリをセットアップする

私たちは皆、アプリケーションコンテナーを作成、管理、および複数のマシンに分散するプラットフォームであるDockerを知っています。Docker Inc.は、「Docker Registry」と呼ばれるgitリポジトリのように、ダウンロード(またはプル)されるオープンソースコンテナーをホストするサービスを提供します。DockerコンテナーのGitHubのようなものと考えてください。

しかし、公共のレジストリから分離された独自のレジストリをホストしたい場合はどうでしょうか?Docker Inc.は、GitHubでレジストリアプリケーションをオープンソース化しています。

このチュートリアルでは、新しいVPSでCoreOSを使用してプライベートDockerレジストリを設定するプロセスについて説明します。

CoreOS + Docker

このチュートリアルの範囲外であるため、DockerとCoreOSでできることを正確に説明するのに大量の時間を費やすことはありません。基本的に、CoreOSは大規模なサーバークラスター向けに設計されており、小型で高速で、定期的なセキュリティ更新を自動的に取得します。ルートファイルシステムも読み取り専用です。つまり、基本インストールに含まれていないあらゆる種類のソフトウェアを実行するには、Dockerを使用する必要があります。

これにより、Core OSはDockerの完璧なホストシステムになります。

最新のレジストリを取得して実行する

Docker Inc.はレジストリをトップレベルのイメージとして提供しています。これは、シンプルな方法でレジストリをプルダウンできることを意味します。

docker pull registry

接続速度によっては、数分かかる場合があります。

最上位の画像であることのプラスは、定期的なサポートと更新を受けることも意味します。

次に、レジストリをテストします。レジストリイメージを使用して新しいコンテナを作成できます。

docker run -p 5000:5000 -d --name=basic_registry registry

Dockerをあまり使用していない場合、-pフラグはをPORT意味します。つまり、コンテナーからポート5000をホストポート5000に公開しています。

-dフラグの略daemonこれはコンテナがバックグラウンドで実行し、現在のSSHセッションへの出力を印刷しないようになります、我々はまた、使用して、この基本的なテストコンテナの名前にしたい--name、我々は後で簡単に管理できるようにオプションを選択します。

基本レジストリコンテナがを使用して実行されていることを確認してくださいdocker ps。出力は次のようになります。

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                    NAMES
edfb54e4a8c4        registry:0.8.1      "/bin/sh -c 'exec do   7 seconds ago       Up 6 seconds        0.0.0.0:5000->5000/tcp   basic_registry

また、http://YOUR_IP:5000Webブラウザーでにアクセスすると、次のようなメッセージが表示されます。

"docker-registry server (dev) (v0.8.1)"

dev括弧内の単語に注意してください。これは、サーバーが現在dev configを実行していることを意味します。近いうちに、さらに多くの設定を確認します。

これで、独自の(非常に基本的な)コンテナーレジストリが実行されます。しかし、まだ終わっていません。

多分あなたはこれを覗き見からプライベートにしたいかもしれません、あるいは多分ローカルストレージの代わりにAmazon S3にあなたのイメージを保存したいでしょう。次のセクションでは、さまざまな構成オプションについて説明します。

次に進む前に、競合するポートにぶつからないようにテストコンテナを強制終了します。

docker kill basic_registry

レジストリ構成

設定をDockerレジストリに渡すには2つの方法があります。1つは環境変数を新しいコンテナに渡す方法で、もう1つは構成ファイルを追加する方法です。

以下は、使用する一般的な構成オプションの一部です。

  • loglevel-コンソールに記録する情報の最小量。デフォルトはinfoです。
  • standalone-このレジストリは単独で機能する必要がありますか?(公開レジストリを照会しないでください。)デフォルトはtrueです。
  • index_endpoint-スタンドアロンでない場合、他にどのようなインデックスをクエリしますか?デフォルトindex.docker.io
  • cacheおよびcache_lru-小さなファイルのRedisキャッシュの使用に関するオプション。これについては後で触れます。
  • storage-このサーバーにはどのストレージバックエンドを使用する必要がありますか?(このチュートリアルでは、ローカルを使用します)。
  • storage_path -ローカルストレージを使用する場合、ファイルを保持するためにどのディレクトリを使用すればよいですか?

構成を操作する前に、操作するベースファイルが必要です。GitHubのDockerレジストリリポジトリからのファイルは問題なく動作します。

wget https://raw.githubusercontent.com/docker/docker-registry/0.8/config/config_sample.yml

ファイルは次のような出力で正常に保存されるはずです。

2014-09-14 14:09:01 (156 MB/s) - 'config_sample.yml' saved [5384/5384]

すごい!これで、このファイルを必要に応じて変更できます。

Core OSに付属する唯一のテキストエディターはですがvim、これまでに使用したことがない場合でも心配はいりません。これにより、編集する内容とその方法が段階的に説明されます。

vim config_sample.yml

ファイルを開いたらI、を押すと右下隅が表示さ-- INSERT --れます。挿入モードの場合。矢印キーを使用してファイルの一番下までスクロールすると、というラベルの付いたセクションが表示されprodます。

2行を変更します。変更は以下のとおりです

prod:
    <<: *local
    storage_path: _env:STORAGE_PATH:/data

ここではprodlocalセクションではなくセクションから派生するように構成を変更していますs3。次に、新しいコンテナ内のstorage_pathパスを使用するようにを上書きしました/data

すべての変更が正しいことを確認したら、を押してESC挿入モードと入力を終了します:wq(つまり、変更をファイルに書き込み、vimを終了します)。

ファイルの名前をただに変更しましょう config.yml

mv config_sample.yml config.yml

Redisキャッシング(オプション)

コンテナーレジストリを高速化するた���にredisを使用したい場合は、パブリックレジストリから新しいコンテナーをプルし、数行の構成を追加するだけです。

まず、Redisの最上位の画像を取得します。

docker pull redis

イメージが正常にプルされたら、テストレジストリで行ったように、イメージを実行して名前を付けることができます。

docker run -d --name registry-redis redis

redisはメモリ内にあるため、後の手順でレジストリコンテナーにリンクするため、redisを構成する必要はありません。

もう一度、次を使用して実行されていることを確認しdocker psます。

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
54f65641eccf        redis:2.8           "redis-server"      2 seconds ago       Up 1 seconds        6379/tcp            registry-redis

今すぐ再オープンconfig.ymlvimし、ちょうど我々はそれを編集した初めてのように、挿入モードに入ります。

prodセクションの下に次の行を追加し、適切にインデントするようにします。今回はとのみを追加cachecache_lruます。

cache:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 0

cache_lru:
    host: _env:REDIS_PORT_6379_TCP_ADDR
    port: _env:REDIS_PORT_6379_TCP_PORT
    db: 1

環境変数REDIS_PORT_6379_TCP_ADDRREDIS_PORT_6379_TCP_PORTRedisのコンテナとの連携時にレジストリコンテナに渡されます。

これで、レジストリコンテナーと連携して機能するRedisコンテナーがセットアップされました。今度はレジストリを構築します!

コンテナを構築する

すべての設定が完了し、準備が整ったので、実際のレジストリコンテナを構築する必要があります。

起動vim Dockerfileして、新しいDockerfileを作成します。挿入モードに入り、以下の編集に従います。

FROM registry:latest

# Add the custom configuration file we made 
ADD ./config.yml /docker-registry/config/config.yml

# Create the data directory
RUN mkdir /data

# Set the configuration file to config.yml
env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml

# Make sure we use the prod configuration settings 
env SETTINGS_FLAVOR prod

上記で行ったことは、基本的にレジストリイメージを拡張して、構成ファイルと設定を使用することです。Dockerfileは、Dockerが読み取ってビルドするための一連のビルド手順です。Dockerfileとその構文の詳細については、Dockerサイトの公式ドキュメントをご覧ください。

次に、使用するコンテナを構築する必要があります。

docker build -t my_registry .


Sending build context to Docker daemon 13.82 kB
Sending build context to Docker daemon 
Step 0 : FROM registry
 ---> e42d15ec8417
Step 1 : ADD ./config.yml /docker-registry/config/config.yml
 ---> 4339f026d459
Removing intermediate container 2d5138fbcd34
Step 2 : RUN mkdir /data
 ---> Running in a090f0bdbfd1
 ---> 8eb27ba6e12a
Removing intermediate container a090f0bdbfd1
Step 3 : env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml
 ---> Running in 565b5bfb2b22
 ---> 914462e46dc0
Removing intermediate container 565b5bfb2b22
Step 4 : env SETTINGS_FLAVOR prod
 ---> Running in 31a92847b851
 ---> b5949575c374
Removing intermediate container 31a92847b851
Successfully built b5949575c374

これで実行の準備ができました!

ホストシステムにディレクトリを作成し、/dataボリュームとしてコンテナにマウントします。

mkdir registry-data

これで、新しいコンテナを起動できます。Redisキャッシュを使用する場合は、以下の2番目のコマンドを使用します。

# For a non-Redis cache registry
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg my_registry

# For a Redis cached registry (Must have followed Redis Caching section above)
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg --link registry-redis:redis my_registry

サーバーが正しく実行されていることを確認するには、にアクセスしてくださいhttp://YOUR_IP:5000。次のメッセージが表示されます。

"docker-registry server (prod) (v0.8.1)"

(prod)設定の変更が成功したという意味に注意してください!

ローカルのDockerクライアントを構成する

これで、独自の実行レジストリが作成されたので、ローカルマシンのDockerクライアントがそれを使用できるようにします。通常は次のコマンドを使用しますがdocker login、ここでは、ログインコマンドに引数を1つ追加する必要があります。

docker login YOUR_IP:5000

ユーザー名とパスワードを入力し(新しいアカウントを作成する場合など)、アクティブ化する必要があることを示すメッセージは無視してください。

次に、ストックイメージをプルして、独自のリポジトリにプッシュします。

# Pull the busybox image from the public registry
docker pull busybox

# Tag it with our IP/URL
docker tag busybox YOUR_IP:5000/busybox

# Push it to our newly made registry
docker push YOUR_IP:5000/busybox

すべてが正しくプッシュされた場合、最終的なメッセージは次のようになります。

Pushing tag for rev [a9eb17255234] on 

おめでとう!独自のDockerリポジトリをセットアップしました。

次は何ですか?

ここでは、新しいプライベートレジストリを改善する方法に関するいくつかのアイデアを示します。

  • NginxまたはApacheを使用してリバースプロキシを配置し、単純なHTTP認証などの追加のセキュリティをその前に配置します。
  • サーバーのドメインを取得してセットアップし、registry.mysite.comのようなものでレジストリにアクセスできるようにします。
  • コンテナーに機密情報が含まれている場合は、SSL証明書を購入(または自己署名)してさらに保護を強化します。


Leave a Comment

RancherOSにRancherサーバーをインストールする

RancherOSにRancherサーバーをインストールする

概要RancherOSは、システムサービスを実行するためのPID 0としてシステムDockerデーモンを実行する、信じられないほど軽量なオペレーティングシステム(わずか約60 MB)です。

Ubuntu 18.04にDocker CEをインストールする

Ubuntu 18.04にDocker CEをインストールする

はじめにDockerは、コンテナーとして実行されるプログラムをデプロイできるアプリケーションです。それは人気のあるGoプログラミング言語で書かれました

Ubuntu 14.04へのDockerのインストール

Ubuntu 14.04へのDockerのインストール

別のシステムを使用していますか?Dockerは、コンテナーとして実行されるプログラムをデプロイできるアプリケーションです。それは人気のある囲碁programminで書かれました

Dockerを使用してNode.jsアプリケーションをデプロイする

Dockerを使用してNode.jsアプリケーションをデプロイする

この記事では、Dockerコンテナー内にノードアプリケーションをデプロイする方法を示します。注:このチュートリアルでは、Dockerがインストールされており、

Alpine Linux 3.9.0でDocker Swarmを作成する

Alpine Linux 3.9.0でDocker Swarmを作成する

はじめにこのガイドでは、複数のAlpine Linux 3.9.0サーバーとPortainerを使用してDockerスウォームを作成および構成する方法について説明します。ご注意ください

CentOS 7にHarbourをインストールする方法

CentOS 7にHarbourをインストールする方法

Harbourは、Dockerイメージを格納および配布するオープンソースのエンタープライズクラスのレジストリサーバーです。HarbourはオープンソースのDockerディストリビューションを拡張しますb

CentOS 7でKubernetesを使ってみる

CentOS 7でKubernetesを使ってみる

Kubernetesは、サーバーのクラスタ全体でコンテナ化されたアプリケーションを管理するためにGoogleが開発したオープンソースのプラットフォームです。それは10年に基づいて構築され、

Ubuntu 16.04にRancherをインストールする

Ubuntu 16.04にRancherをインストールする

別のシステムを使用していますか?はじめにRancherは、コンテナーを実行し、プライベートコンテナーサービスを構築するためのオープンソースプラットフォームです。牧場主がベース

CentOS 7にKubeadmを使用してKubernetesをデプロイする

CentOS 7にKubeadmを使用してKubernetesをデプロイする

概要この記事は、kubernetesクラスターをkubeadmですぐに稼働できるようにすることを目的としています。このガイドでは、2台のサーバーを

CoreOSへのdocker-composeのインストール

CoreOSへのdocker-composeのインストール

この記事では、CoreOSにdocker-composeをインストールする方法について説明します。CoreOSでは、/ usr /フォルダーは不変なので、標準の/ usr / local / binパスは使用できません。

CentOS 7にRancherをインストールする

CentOS 7にRancherをインストールする

別のシステムを使用していますか?はじめにRancherは、コンテナーを実行し、プライベートコンテナーサービスを構築するためのオープンソースプラットフォームです。牧場主がベース

Docker-composeを使用してPHPアプリケーションをデプロイする

Docker-composeを使用してPHPアプリケーションをデプロイする

PHPアプリケーションは通常、Webサーバー、リレーショナルデータベースシステム、および言語インタープリター自体で構成されます。このチュートリアルでは、レバラギンになります

CentOS 7へのDockerのインストール

CentOS 7へのDockerのインストール

別のシステムを使用していますか?Dockerは、仮想コンテナー内でのソフトウェアのデプロイメントを可能にするアプリケーションです。それは囲碁プログラムで書かれました

Ubuntu 14.04でのLXCコンテナの安全なデプロイと管理

Ubuntu 14.04でのLXCコンテナの安全なデプロイと管理

LXCコンテナー(Linuxコンテナー)は、単一のホスト上で複数の分離されたLinuxシステムを実行するために使用できるLinuxのオペレーティングシステム機能です。テス

Ubuntu 16.04でDockerを介してSentryをセットアップする

Ubuntu 16.04でDockerを介してSentryをセットアップする

別のシステムを使用していますか?はじめにSentryは、エラー追跡のためのオープンソースのソリューションです。Sentryは例外やその他の有用なメッセージをあちこちで追跡します

Debian 9でのDocker Swarm(CE)とのスティッキーセッション

Debian 9でのDocker Swarm(CE)とのスティッキーセッション

別のシステムを使用していますか?はじめにDocker Swarmは、個々のサーバーをコンピューターのクラスターに変えます。スケーリング、高可用性、

Dockerの使用方法:最初のDockerコンテナーの作成

Dockerの使用方法:最初のDockerコンテナーの作成

このチュートリアルでは、Dockerの基本的な使い方について説明します。Dockerがすでにインストールされていると思います。このチュートリアルの手順は、

Dockerによる負荷分散

Dockerによる負荷分散

Webアプリケーションを実行する場合、通常、マルチスレッドを使用するようにソフトウェアを変換することなく、リソースを最大限に活用したいと思いますo

Dockerを使用してCentOS 7でSQL Server 2017(MS-SQL)を開始する

Dockerを使用してCentOS 7でSQL Server 2017(MS-SQL)を開始する

前提条件Dockerエンジン1.8以降。最低4GBのディスク容量。4GB以上のRAM。ステップ1. DockerをインストールするSQL-Serverをインストールするには、Docker mus

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

最近、Appleは問題を修正するための補足アップデートであるmacOS Catalina 10.15.4をリリースしましたが、このアップデートにより、Macマシンのブリックにつながる問題がさらに発生しているようです。詳細については、この記事をお読みください

原子力が必ずしも悪ではないことを証明する5つの例

原子力が必ずしも悪ではないことを証明する5つの例

原子力は、過去の出来事のために私たちが決して尊重しないことを常に軽蔑していますが、それは必ずしも悪ではありません。詳細については、投稿をお読みください。

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

これを読んで、人工知能が小規模企業の間でどのように人気を博しているか、そして人工知能がどのように成長し、競合他社に優位に立つ可能性を高めているかを理解してください。

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

私たちのコンピューターは、ジャーナリングファイルシステムと呼ばれる組織化された方法ですべてのデータを保存します。これは、検索を押すとすぐにコンピューターがファイルを検索して表示できるようにする効率的な方法です。https://wethegeek.com/?p = 94116&preview = true

ビッグデータは人工知能をどのように変えていますか?

ビッグデータは人工知能をどのように変えていますか?

ビッグデータと人工知能は流行語ですが、それらがどのように相互に関連しているか知っていますか?さて、この記事を最後まで読んで、同じことを知ってください。

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

HTTPライブストリーミング(HLS)は、Apple Inc.によって実装された非常に堅牢なストリーミングビデオプロトコルです。HLSは、ファイアウォール、プロキシ、