镜像仓库
Docker 镜像是一个只读的模板,可用于部署容器服务。每个镜像都有一个唯一标识符(即镜像名称:标签
)。例如,一个镜像可以包含只安装有 Apache 和几个应用的完整的 Ubuntu 操作系统软件包。镜像仓库可用于存储和分发 Docker 镜像。
本教程演示如何为不同的镜像仓库创建密钥。
准备工作
您需要创建一个企业空间、一个项目和一个帐户(例如 project-regular
)。该帐户必须已邀请至该项目,并具有 operator
角色。有关更多信息,请参阅创建企业空间、项目、帐户和角色。
创建密钥
创建工作负载、服务、任务或定时任务时,除了从公共仓库选择镜像,您还可以从私有仓库选择镜像。要使用私有仓库中的镜像,您必须先为私有仓库创建密钥,以便在 KubeSphere 中集成该私有仓库。
步骤 1:进入密钥页面
以 project-regular
用户登录 KubeSphere Web 控制台并进入项目,在左侧导航栏中选择配置中心下的密钥,然后点击创建。
步骤 2:配置基本信息
设置密钥的名称(例如 demo-registry-secret
),然后点击下一步。
提示
步骤 3:配置镜像仓库信息
将类型设置为 kubernetes.io/dockerconfigjson(镜像仓库密钥)。要在创建应用负载时使用私有仓库中的镜像,您需要配置以下字段:
- 仓库地址:镜像仓库的地址,其中包含创建应用负载时需要使用的镜像。
- 用户名:登录镜像仓库所需的用户名。
- 密码:登录镜像仓库所需的密码。
- 邮箱(可选):您的邮箱地址。
添加 Docker Hub 仓库
-
在 Docker Hub 上添加镜像仓库之前,您需要注册一个 Docker Hub 帐户。在密钥设置页面,将仓库地址设置为
docker.io
,将用户名和密码分别设置为您的 Docker ID 和密码,然后点击验证以检查地址是否可用。 -
点击创建。密钥创建后会显示在密钥界面。有关密钥创建后如何编辑密钥,请参阅查看密钥详情。
添加 Harbor 镜像仓库
Harbor 是一个开源的可信云原生仓库项目,用于对内容进行存储、签名和扫描。通过增加用户经常需要的功能,例如安全、身份验证和管理,Harbor 扩展了开源的 Docker Distribution。Harbor 使用 HTTP 和 HTTPS 为仓库请求提供服务。
HTTP
-
您需要修改集群中所有节点的 Docker 配置。例如,如果外部 Harbor 仓库的 IP 地址为
http://192.168.0.99
,您需要在/etc/systemd/system/docker.service.d/docker-options.conf
文件中增加--insecure-registry=192.168.0.99
标签。[Service] Environment="DOCKER_OPTS=--registry-mirror=https://registry.docker-cn.com --insecure-registry=10.233.0.0/18 --data-root=/var/lib/docker --log-opt max-size=50m --log-opt max-file=5 \ --insecure-registry=192.168.0.99"
备注
-
请将镜像仓库的地址替换成实际的地址。
-
有关
Environment
字段中的标签,请参阅 Dockerd Options。 -
Docker 守护进程需要
--insecure-registry
标签才能与不安全的仓库通信。有关该标签的更多信息,请参阅 Docker 官方文档。
-
-
重新加载配置文件并重启 Docker。
sudo systemctl daemon-reload
sudo systemctl restart docker
-
在 KubeSphere 控制台上进入创建密钥的密钥设置页面,将类型设置为镜像仓库密钥,将仓库地址设置为您的 Harbor IP 地址,并设置用户名和密码。
备注
如需使用 Harbor 域名而非 IP 地址,您需要在集群中配置 CoreDNS 和 nodelocaldns。 -
点击创建。密钥创建后会显示在密钥页面。有关密钥创建后如何编辑密钥,请参阅查看密钥详情。
HTTPS
有关如何集成基于 HTTPS 的 Harbor 仓库,请参阅 Harbor 官方文档。请确保您已使用 docker login
命令连接到您的 Harbor 仓库。
使用镜像仓库
如果您已提前创建了私有镜像仓库的密钥,您可以选择私有镜像仓库中的镜像。例如,创建部署时,您可以在容器镜像页面点击镜像下拉列表选择一个仓库,然后输入镜像名称和标签使用镜像。
反馈
这篇文章对您有帮助吗?
感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。