访问仓库
仓库(Repository)是集中存放镜像的地方。注册服务器(Registry)是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。
智算云平台提供 Docker Registry 服务,为租户在每个可用区提供镜像仓库服务。
Docker Hub
由于运营商网络原因,直接拉取 Docker Hub 镜像时会失败。
# 登入开发机后操作 pull
# 先检查本地是否存在指定的镜像,不存在就从 docker.io 下载
root@is-daieztsmaipd2smo-devmachine-0:~# docker pull ubuntu:22.04
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)建议您在生产环境中谨慎使用 Docker Hub 容器镜像。可改为从智算云平台的镜像中心拉取预置镜像,或拉取租户私有仓库中的自定义镜像。
提示
智算云平台不提供官方加速服务。您可以自行使用第三方镜像加速服务。Docker 容器服务支持修改配置,详见 Dockerctl。
拉取平台预置镜像
平台预置镜像地址可在镜像中心查看。
例如,拉取平台预置的 Ubuntu 镜像:
docker pull cr.infini-ai.com/infini-ai/ubuntu:22.04-20240429拉取平台预置的 CUDA 镜像:
#拉取平台预置的 CUDA 镜像
docker pull cr.infini-ai.com/infini-ai/cuda:12.2.2-cudnn8-devel-ubuntu20.04注意
- 由于运营商网络限制,会导致您拉取 Docker Hub 镜像时下载失败。您可以自行使用第三方镜像加速服务。
- 您可以自行修改 Docker 配置,详见 Dockerctl。
租户私有镜像仓库
平台提供租户私有镜像仓库服务。
- 私有镜像仓库服务可用于存放租户的自定义镜像,供开发机、任务、推理服务等平台服务使用。
- 购买包年包月计算资源、按量计费计算资源的租户,均可获得私有镜像仓库服务和免费存储空间。
- 租户可在多个可用区获得私有镜像仓库服务,可用区之间镜像仓库存储、网络相互独立。
- 平台镜像服务以租户 ID 为 Docker Registry 上的命名空间,构建租户镜像仓库根路径。
限制与注意事项:
- 要从公网向平台的租户私有镜像仓库推送镜像,必须使用目标可用区 Docker Registry 的专用公网地址和登录凭证。详见迁移外部镜像。
- 跨可用区迁移镜像,必须使用目标可用区 Docker Registry 的专用公网地址和登录凭证。详见迁移外部镜像。
- 同一可用区内,向租户私有镜像仓库拉取、推送镜像时,使用内网专用地址(以
cr.infini-ai.com开头)。该地址永远指向与当前实例(开发机、任务、推理服务等)同可用区的镜像仓库。镜像仓库的内网专用地址不提供公网访问。
登录租户私有镜像仓库
登录租户私有镜像仓库指在开发机内登录当前可用区 Registry。在已开启 「Docker 容器」功能的开发机中,可检查是否已存在 Registry 登录凭证。如果已有登录凭证,说明无需再手动执行 docker login,即可直接使用 Registry。
查看已登录的 Registry 登录凭证:
cat /tmp/docker-config/config.json直接提取并打印租户镜像服务命令空间(租户镜像仓库根路径)。
# 提取并定义租户镜像仓库根路径 (Registry + Project)
export INTRANET_REPO_ROOT="cr.infini-ai.com/$(grep -o 'robot\$[^"+]*' /tmp/docker-config/config.json | cut -d'$' -f2)" && echo $INTRANET_REPO_ROOT重复登录时,平台会直接提示登录成功。如果提示需要输入账号密码,请检查开发机是否已开启 「Docker 容器」功能。
# 登录 cr.infini-ai.com(Registry),平台会直接提示登录成功,无需手动输入密码。
root@is-daicmdwt4s33tzhx-devmachine-0:/# docker login cr.infini-ai.com
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in/tmp/docker-config/config.json
Configure a credential helper to remove this warning.See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded推送至租户私有镜像仓库
通过已开启 「Docker 容器」功能的开发机,可将镜像推送至同一可用区内租户租户私有镜像仓库,作为自定义镜像。
镜像来源可以为:
- 开发机内构建的镜像(
docker build/docker commit) - 开发机内拉取的镜像(
docker pull) - 开发机内导入的镜像(
docker save/docker load)
# 拉取 quay.io 的镜像作为示例
docker pull quay.io/coreos/etcd:v3.5.5
# 修改镜像标签:使用 cr.infini-ai.com(Registry) + 租户 ID(Namespace) + 仓库名(Repository)
docker tag quay.io/coreos/etcd:v3.5.5 cr.infini-ai.com/te-c7va2fg6uawxdzkf/etcd:v3.5.5
# 推送镜像至命名空间(Namespace)
# 平台默认在开发机内已登录当前可用区 Registry,无需再次 docker login
docker push cr.infini-ai.com/te-c7va2fg6uawxdzkf/etcd:v3.5.5注意
- 如果您所属租户在不同可用区均购买了资源,请注意租户在不同可用区的镜像仓库的存储网络相互隔离,暂不支持同步(但共用同一个内网地址)。例如,可用区 A 向
cr.infini-ai.com/te-b914754427352251推送镜像,平台自动映射到可用区 A 的镜像仓库,可用区 B 无法使用该镜像。 - 如果您有镜像 tar 包,可上传至开发机后使用
docker load加载镜像,再推送到租户镜像仓库。详见导入镜像 Tar 包。 - 支持从公网向租户私有仓库推送镜像,但必须请使用镜像中心提供的公网地址。详见迁移外部镜像。
常见问题
无法拉取 Docker Hub 镜像
由于运营商网络原因,会导致您拉取 Docker Hub 镜像时下载失败。建议您在生产环境中谨慎使用依赖于 Docker Hub 的容器镜像。
无法推送镜像至租户私有镜像仓库
请检查开发机是否已启用「Docker 容器」功能。如未启用,可前往开发机详情页,通过「改配」按钮启用「Docker 容器」功能。
租户私有镜像仓库有存储空间限制。详见租户私有镜像仓库。
如何处理镜像构建失败
如果镜像中心显示构建失败,可尝试以下流程:
- 在镜像中心查看构建日志。
- 如果使用 Dockerfile 构建,可尝试更换为在开发机中构建镜像,以获取更详细的日志。详见使用开发机构建镜像
如果问题持续,请联系商务或售后服务。
如何从公网推送镜像
镜像中心 Registry 的通用域名为 cr.infini-ai.com(内网专用)。如需从公网推送镜像,请使用镜像中心提供的目标可用区 Registry 公网地址与登录凭证,并根据镜像中心要求打标签与推送。
详见迁移外部镜像。