# 容器镜像仓库

既然您已经知道如何使用我们的平台，接下来需要将您的游戏服务器容器化。您需要一个存放容器镜像的地方，以便在部署游戏服务器时可以访问这些镜像。

这就是我们创建 Edgegap 容器注册表的原因。它是一个私有管理的容器仓库，工作方式类似于标准的公共容器注册表，但额外提供了增强的安全性、漏洞扫描等功能！凭借高可用性和仪表板集成，您将花更少时间去学习新工具，并且服务器始终可以立即使用。

### 获取凭证

要推送镜像，您首先需要对我们的注册表进行身份验证，为此您需要凭证。找到 `容器注册表` 选项卡在 `服务` 侧边栏的部分中请求您的凭证。从那里，您可以申请访问我们的注册表。

<figure><img src="/files/8acc372bc53efbd443a076f256c87c7800fd2e85" alt=""><figcaption></figcaption></figure>

在屏幕底部的框中，您将找到连接到注册表并推送容器镜像所需的所有信息。

<figure><img src="/files/4490327abfac4c89a0eac78b36109d6ad065022b" alt=""><figcaption></figcaption></figure>

| 字段  | 说明                           |
| --- | ---------------------------- |
| URL | 我们容器注册表的 URL。在登录和推送镜像时需要使用它。 |
| 项目  | 分配给您的项目名称。您必须在镜像仓库路径中包含它。    |
| 用户名 | 登录注册表时使用的用户名。                |
| 令牌  | 登录注册表时使用的密码。                 |

现在您可以使用自己选择的工具登录到仓库：

#### Linux

```bash
# 在提示时输入您的密码
docker login -u '<REPOSITORY_USERNAME>' registry.edgegap.com
```

#### cmd

```bash
# 在提示时输入您的密码
docker login -u <REPOSITORY_USERNAME> registry.edgegap.com
```

#### Powershell

```bash
# 在提示时输入您的密码
docker login -u '<REPOSITORY_USERNAME>' registry.edgegap.com
```

### Docker 登录警告

```
警告！您的密码将以未加密形式存储在 /home/user/.docker/config.json 中。
```

您可以按照以下方式配置凭证存储 [此设置](https://docs.docker.com/engine/reference/commandline/login/#credentials-store)。请记住，此警告是 Docker 的正常行为。

这很 **重要** 您需要了解您的机器人用户名和私有仓库的令牌已以 base64 编码形式保存在您机器上的此路径中 `$HOME/.docker/config.json`。任何可以访问此文件的人都可以使用 base64 解码器轻松解密您的机器人账户令牌。请确保所使用的环境 `docker login registry.edgegap.com` 是安全的，并且对该文件的访问权限受到限制。

要从此文件中删除凭证，您可以轻松使用 `docker logout registry.edgegap.com` 在每次推送和拉取私有镜像时。

### 向注册表推送镜像

如果您在将项目容器化方面需要帮助，请参阅 [我们关于此主题的文档](/zh/docs/tools-and-integrations/container/docker.md) 以帮助您入门。

首先，您需要为镜像添加与注册表相对应的标签。然后，由于您已登录注册表，您所要做的就是将镜像推送到页面上找到的 URL 和项目：

```bash
docker image tag <IMAGE_NAME>:<TAG> registry.edgegap.com/<PROJECT_NAME>/<IMAGE_NAME>:<TAG>
docker push registry.edgegap.com/<PROJECT_NAME>/<IMAGE_NAME>:<TAG>
```

您可以根据存储允许的数量推送任意数量的镜像，并按您的需要将它们分在不同的仓库中。但在推送过多镜像之前，您应该先阅读“应用模板”部分！

刷新页面后，您将在同一页面上找到您的仓库。

### 对同一构建产物多次打标签（推送重复镜像）

如果您恰好将同一构建产物推送两次，且标签值相同，则不会发生任何更改。

如果您恰好将同一构建产物推送两次，但使用了两个不同的标签值，则不会消耗额外的存储空间，我们的注册表将仅创建指向相同构建产物的新标签。

### 管理您的镜像

在您至少推送过一个镜像后，您可以通过访问同一页面查看您的仓库。

点击其中一个仓库，您可以看到它包含的镜像，按产物进行分组。如果您对同一镜像使用了两个不同的标签并将这些标签推送到注册表，您将看到它们作为相同的产物。

<figure><img src="/files/fb02e75999a0d1977f9b1e376e823f647ecd6acb" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/323af6f1c576d894d5d7f43e337191fe4eb2d194" alt=""><figcaption></figcaption></figure>

标记为 `1.0.1` 和 `1.0.2` 上图中的镜像具有相同的产物。标记为 `1.0.3`的镜像则具有不同的产物。

{% hint style="warning" %}
如果您删除一个产物，也会删除其关联的标签。确认对话框将列出此操作将删除的所有标签，以确保您不会意外删除所需的资源。
{% endhint %}

### 通过 API 删除构建产物

如果仪表板 UI 对您来说太慢，或者您需要一个自动化的持续集成管道来自动删除过时的构建产物以将注册表使用控制在限额内，请考虑使用我们的容器注册表 API。我们的 [容器注册表 API](/zh/docs/api.md) 允许列出给定应用（镜像）的所有标签，以及删除单个标签。由于每个镜像产物（构建）可能同时关联多个标签（例如 `v1.1.0`, `dev`, `latest`等），您需要删除与特定产物关联的所有标签，才能在 Edgegap 容器注册表中释放空间。

### 请求更多存储空间

当您对注册表的访问请求被批准后，您将在注册表中获得一定量的存储空间。

您可以通过单击空间使用指示器旁的“请求更多存储”按钮来申请额外空间。

<figure><img src="/files/cb6c22b18995bf16daffe2918be3202753f684cd" alt=""><figcaption></figcaption></figure>

当工作人员批准您的请求后，您将拥有更多空间来推送镜像。

### 下一步

通过我们的指南学习如何将您的应用容器化： [Docker 入门](/zh/docs/tools-and-integrations/container/docker.md).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.edgegap.com/zh/learn/advanced-features/edgegap-container-registry.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
