用GitLab的「容器注册表」免费保存docker compose的镜像到私有存储

初次见面的朋友,久违的朋友,早上好/晚上好。我是N的人。

Twitter(现在称为X)被冻结了,已经过去了半年。
现在我在BlueSky上活跃,如果可以的话,请关注我!
https://bsky.app/profile/nnahito.com

开场白(建议跳过阅读)

最近,我有一段时间没有管理我自己的博客” https://nnahito.com/”,所以在这个机会之下,我想进行一些改变,于是开始探索”Containerization”的概念,并着手学习这个技术。

如果我们要做,就希望尽可能地免费!让我们实现这样的梦想吧。

好的,那让我们开始吧。

目标人群

由於這是一個帳戶註冊的步驟,我們將跳過詳細的流程,以下是這篇文章的目標讀者。

    • GitLabのアカウントを持っている

「GitLab?いやいやエンジニアならGitHubだろwww」とかいう訳のわからないこだわりのない人

dockerの操作をある程度わかっている
git関連の操作をある程度わかっている

不安な方は、 https://qiita.com/nnahito/items/565f8755e70c51532459 あたりを見ましょう

Nな人の記事が好き

GitLab的容器注册表

在创建合适的存储库之后,它位于图像的位置上。

スクリーンショット 2023-12-09 17.14.10.png

创建一个项目

我们立即准备一个适当的docker-compose项目。
因为我们已经在GitHub上准备好了示例代码,所以您可以使用它。

示例环境
https://github.com/nnahito/gitlab-container-samplecode

为了注册图像,登录到注册表中。

也许本来应该注册到由Docker官方准备的仓库中,
但这次我们将保存在GitLab的私有镜像仓库中,
因此需要登录到GitLab。

所以,请执行以下命令,并登录到GitLab。

$ docker login registry.gitlab.com

※ 被要求的ID/PASS是用于登录GitLab的。

图像标记

我们给图像添加标签。
执行以下命令。

$ docker tag コンテナ名:コンテナのバージョン GitLabのコンテナレジストリのパス:コンテナのバージョン

样本

$ docker tag container-test-app:latest registry.gitlab.com/nnahito/container-test:0.01

推送图像

将标签附加到本地代码后,请在GitLab上进行推送。
执行如下命令。

$ docker push GitLabのコンテナレジストリのパス:コンテナのバージョン 

我认为只要去Container Registry页面,就能立刻看到”GitLab容器注册表的路径”。

样本

$ docker push registry.gitlab.com/nnahito/container-test:0.01

恭喜!您现在可以进行推送了。

image.png

层次不同 (jiē cé bié kè)

如果使用docker-compose,将存在多个容器。
然而,使用上述方法只会推送最后构建的映像。

按照一个容器一个服务(一个进程)的推荐方式,是这样……的吧?
可能吧。不太清楚呢。

如果你想儲存多個容器,應該將它們分開放在不同的層級中。

分层

您可以使用熟悉的方式,对其进行层次分组。

请注意,以下是基于我提供的示例代码使用的示例命令。

首先我们需要构建容器。

$ docker compose build docker-compose.ymlで指定しているサービス名 

然后进行标签注册。

$ docker tag コンテナ名:コンテナのバージョン GitLabのコンテナレジストリのパス/階層名:コンテナのバージョン

样本

# コンテナイメージのビルド
$ docker compose build app1

# Registory用にTagを発行
$ docker tag container-test-app:latest registry.gitlab.com/nnahito/container-test/app1:0.02
# コンテナイメージのビルド
$ docker compose build app2

# Registory用にTagを発行
$ docker tag container-test-app:latest registry.gitlab.com/nnahito/container-test/app2:0.02

准备工作已经完成了。我们可以开始推进了。

$ docker push GitLabのコンテナレジストリのパス/階層名:コンテナのバージョン 

样本

# app1のコンテナイメージをPush
$ docker push registry.gitlab.com/nnahito/container-test/app1:0.02

# app2のコンテナイメージをPush
$ docker push registry.gitlab.com/nnahito/container-test/app2:0.02

可以使用GitLab在多層次结构中存放多个图像。

使用自己编写的图像

让我们尝试使用之前创建好的映像。
虽然这样说,但普通地pull下来就能使用。

拉 (lā)

$ docker pull リポジトリのパス:バージョン

样本

# app1のコンテナイメージをPull
$ docker pull registry.gitlab.com/nnahito/container-test/app1:0.02

# app2のコンテナイメージをPull
$ docker push registry.gitlab.com/nnahito/container-test/app2:0.02

启动容器

$ docker run -it リポジトリのパス:バージョン

样本

# app1のコンテナを起動
$ docker run -it registry.gitlab.com/nnahito/container-test/app1:0.02

# app2のコンテナを起動
$ docker run -it registry.gitlab.com/nnahito/container-test/app2:0.02

以上。

结束

可以通过这种方式免费将容器进行私密管理,感觉很好。

顺便提一下,据说 GitHub 也有类似的功能,但是我没有详细调查过,所以以后另找机会再说吧。

如果我的回答让您稍微受益,觉得有所帮助的话,请给一个赞或者收藏一下,非常感谢。

下次再见!

bannerAds