今年の5月に、 GitLab 8.8のリリースがリリースされました。 このリリースの一部は、組み込みのDocker Container Registryの起動でした。 以下は、これに関する5月の記事の翻訳です。
最近、CIサポートがさらに優れたGitLabバージョン8.8をリリースしました。 GitLabでパイプラインを構築して、アセンブリ、テスト、展開、およびソフトウェアのライフサイクルのその他の段階を視覚化できるようになりました。 今日は、次のステップであるGitLab Container Registryを紹介します。
GitLab Container Registryは、 オープンソースソフトウェアで開発されたDockerイメージ用の安全なプライベートレジストリです 。 GitLab Container RegistryはGitLabに完全に統合されています。
GitLabの主要な機能は、開発プロセスの継続性とさまざまな要素の相互統合です。 これらの原則は、レジストリを操作するときに維持されます。 これで、GitLab Container Registryを使用して、GitLab CIにDockerイメージを使用したり、個々のタグやブランチに特別なイメージを作成したりできます。
GitLab Container Registryは、Gitリポジトリ管理システムに完全に統合された最初のDockerレジストリであることに注意してください。 さらに、GitLab Container RegistryはGitLab 8.8の一部であるため、個別にインストールする必要はありません。 これを使用すると、画像を簡単にダウンロードしてGitLab CIにアップロードできます。 また、無料です。
GitLab Container Registryの使用を有効にする方法については、管理者向けのドキュメントを参照してください。
Dockerの基本
Dockerの主要な作業単位は、アプリケーションの実行と実行に必要なすべてを含むイメージです。 多くの場合、画像は継続的な統合プロセスの一部として自動的に作成されます。つまり、コードが変更されるたびに更新されます。 画像を共有用に作成する場合は、どこかに保存する必要があります。 このために、画像のレジストリが使用されます。
レジストリを使用すると、さらに再利用するために画像を保存し、タグを使用して画像を分類できます。 会社内でのみ使用されるプライベートイメージ、またはたとえば、テストの実行および実行用のイメージを格納するレジストリを作成することをお勧めします。 GitLab Container Registryを使用する場合、追加のサービスを構成および保守したり、パブリックレジストリを使用したりする必要はありません。
GitLabとの緊密な統合
GitLab Container RegistryはGitLabに完全に統合されているため、開発者はGitLab CIまたはその他のDocker互換ツールを使用してDockerイメージを簡単に作成、テスト、実行できます。
- 認証とアクセス制御には、GitLabインスタンスのユーザーとグループが使用されます。
- レジストリを操作するために追加のリポジトリを作成する必要はありません-レジストリはGitLabのプロジェクトの一部です。
- プロジェクトに新しいコンテナレジストリタブが表示され、このプロジェクトに関連するすべての画像が一覧表示されます。
- 各プロジェクトには、独自の画像のレジストリを設定できます(オプション、個々のプロジェクトに対して無効にできます)。
- GitLab CIに画像を簡単にダウンロードしてアップロードできます。
- 追加のソフトウェアをダウンロードしてインストールする必要はありません。
ワークフローを合理化する
GitLab Container Registryの操作は簡単で安全です。 GitLab Container Registryを使用して、ソフトウェアの開発と展開のプロセスを簡素化する方法の例を次に示します。
- GitLab CIを使用してDockerイメージを構築し、GitLab Container Registryに保存します。
- 画像をブランチ、ソースコードタグにバインドするか、開発プロセスに適した他の方法を使用します。 作成した画像は、GitLabにすばやく簡単に保存できます。
- レジストリに保存されている独自のアセンブリイメージを使用して、アプリケーションをテストします。
- チームの他のメンバーも画像の開発に参加しましょう。 彼らが慣れているのと同じワークフローが使用されるので、これは彼らからの追加の努力を必要としません。 GitLab CIを使用すると、自分から継承したイメージを自動的に構築できます。これにより、チームが使用するベースイメージに修正や新機能を簡単に追加できます。
- GitLab Container Registryから直接イメージを使用するようにCaaSを構成し、継続的なコード展開プロセスを実現します。 これにより、イメージを収集またはテストするたびに、アプリケーションをクラウド(Docker Cloud、Docker Swarm、Kubernetesなど)に自動的にデプロイできます。
どこから始めますか?
まず、 管理者のドキュメントの説明に従って、システム管理者にGitLab Container Registryの接続を依頼します。
その後、プロジェクトでContainer Registryオプションを有効にできます。
レジストリの使用を開始するには、最初にログインする必要があります。
docker login registry.example.com
その後、GitLabで画像を簡単に収集してプッシュできます。
docker build -t registry.example.com/group/project . docker push registry.example.com/group/project
GitLabは、コンテナーを管理するためのシンプルなインターフェイスも提供します。 プロジェクトのContainer Registryをクリックします。開いたウィンドウで、リポジトリ内のすべてのタグが表示され、それらのタグを簡単に削除できます。
詳細については、 GitLab Container Registryユーザーガイドを参照してください 。
GitLab CIで使用する
CI GitLabを管理するための組み込みインターフェースを使用して、作成されたイメージをビルド、プッシュ、およびデプロイできます。
警告:これにはGitLab Runner 1.2が必要です。
注: DockerイメージでDockerを使用するには、Runnerの構成で特権フラグを設定する必要があります。これまでのところ、これは GitLab.comの共有(共有)ランナーでは実行できません 。近い将来このフラグを追加する予定ですが、現時点では独自のランナーを使用する価値があります。
GitLab CI構成ファイル( .gitlab-ci.yml
)の例を次に示します。このファイルは、イメージを収集し、テストを実行し、成功した場合にタグをビルドに割り当て、ビルドをイメージレジストリにアップロードします。
build_image: image: docker:git services: - docker:dind script: - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.example.com - docker build -t registry.example.com/my-group/my-project . - docker run registry.example.com/my-group/my-project /script/to/run/tests - docker push registry.example.com/my-group/my-project:latest only: - master
タスクを4つのステージに分割し、2つのテストを並行して実行する、より複雑なイメージの例。 ビルドはイメージのレジストリに保存され、後続の段階で使用され、必要に応じてイメージを自動的にダウンロードします。 masterブランチへの変更にはlatest
タグが割り当てられ、その後、アプリケーション固有のスクリプトを使用してこれらの変更がデプロイされます。
image: docker:git services: - docker:dind stages: - build - test - release - deploy variables: CONTAINER_TEST_IMAGE: registry.example.com/my-group/my-project:$CI_BUILD_REF_NAME CONTAINER_RELEASE_IMAGE: registry.example.com/my-group/my-project:latest before_script: - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.example.com build: stage: build script: - docker build -t $CONTAINER_TEST_IMAGE . - docker push $CONTAINER_TEST_IMAGE test1: stage: test script: - docker run $CONTAINER_TEST_IMAGE /script/to/run/tests test2: stage: test script: - docker run $CONTAINER_TEST_IMAGE /script/to/run/another/test release-image: stage: release script: - docker pull $CONTAINER_TEST_IMAGE - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE - docker push $CONTAINER_RELEASE_IMAGE only: - master deploy: stage: deploy script: - ./deploy.sh only: - master
まとめると
GitLab Container Registryは、GitLabソフトウェア開発サイクル用の組み込みツールキットへの最新の追加です。 このアドオンは、 GitLabバージョン8.8以降で利用可能です。 この機能を使用すると、Dockerイメージのテストと展開がはるかに簡単になりました。 GitLab Container Registryは、追加費用なしでGitLab CEおよびGitLab EEにバンドルされており、GitLab用に構成したのと同じインフラストラクチャ上にインストールされます。
Container RegistryはGitLab.comで入手できます。完全に無料であり、すぐに使用を開始できます。
重要 :DockerイメージでDockerを使用するには、Runnerの設定で特権フラグを設定する必要があります。とりあえず、 これは GitLab.comの一般的なランナーではできません 。このフラグはすぐに追加する予定です。すべてはすでに大丈夫です。
PSコメントで使用の経験を共有することは素晴らしいことです。
英語からの翻訳は、翻訳チーム「Brain and Partners」、 http://nadmosq.ruによって行われました。 Sgnl_05は翻訳に取り組みました。