如何解决如何设置在本地计算机上保留图像的直通本地注册表? 对于慢速上网 如何创建一个本地注册表容器,该容器从主机安装一个卷并在本地保留所有拉取的图像?可选验证持久目录是否存在可选在需要的地方验证图像数据已在本地主机上同步参考:
如何创建一个本地注册表容器,该容器从主机安装一个卷并在本地保留所有拉取的图像?
我希望不要多次下载图像,如果没有必要,即使在注册表(或整个 Docker VM)被丢弃并重新创建之后也是如此。
这在连接速度较慢或无连接时很有用。还允许使用预先下载的图像安装备份,如 docker volume
,完全不需要互联网连接。
后者已经是可能的,但它比必须手动 docker push
/docker pull
到本地注册表或 docker save
/docker load
每个需要在那里可用。
这是对 this 的改写,由于缺乏反馈而没有重新打开。主要目的是让答案可用于搜索,但请随时提出更好的解决方案。
解决方法
以下是分步说明。希望能够节省时间并使其他人的生活更轻松,他们在世界上的贫困地区旅行或生活,互联网连接无法访问 Docker 世界,因为它们太有限或有时完全不存在!
指令适用于 macOS 和 Minikube,但也适用于在 Windows 上运行的 VM 或通过 Docker 桌面 >.
(注意:您需要检查您的虚拟化技术是否提供系统用户目录的自动挂载)
配置
首先使用所需的值定义您的环境变量。请参阅以下代码中的 env-vars(PROXIED_REGISTRY
、REGISTRY_USERNAME
、REGISTRY_PASSWORD
、PATH_WHERE_TO_PERSIST_IMAGES
等)
在主机上
Minikube
如果使用 minikube,首先在其 VM 上绑定到 docker
eval $(minikube docker-env)
或直接从 VM 内部通过 minikube ssh
运行命令。
创建本地注册表
(注意:有些环境可能是不必要的;查看 Docker 文档以了解您需要什么)
-v
选项将您要保留注册表数据(存储库文件夹和图像层)的路径安装到本地注册表中。
当您使用 Minikube 时,后者will automatically mount the home folder from the host(/Users/
,在 macOS 上)到 Docker 所在的虚拟机上运行。
docker run -d -p 5000:5000 \
-e STANDALONE=false \
-e "REGISTRY_LOG_LEVEL=debug" \
-e "REGISTRY_REDIRECT_DISABLE=true" \
-e MIRROR_SOURCE="https://${PROXIED_REGISTRY}" \
-e REGISTRY_PROXY_REMOTEURL="https://${PROXIED_REGISTRY}" \
-e REGISTRY_PROXY_USERNAME="${REGISTRY_USER}" \
-e REGISTRY_PROXY_PASSWORD="${REGISTRY_PASSWORD}" \
-v /Users/${MACOS_USERNAME}/${PATH_WHERE_TO_PERSIST_IMAGES}/docker/registry:/var/lib/registry \
--restart=always \
--name local-registry \
registry:2
登录到您的本地注册表
echo -n "${REGISTRY_PASSWORD}" | docker login -u "${REGISTRY_USER}" --password-stdin "localhost:5000"
(可选)验证持久目录是否存在
docker exec registry ls -la /var/lib/registry/docker/registry
ll /Users/${MACOS_USERNAME}/${PATH_WHERE_TO_PERSIST_IMAGES}/docker/registry/docker/registry
尝试从您的私人注册表中提取一张图像
(通过存储库 localhost:5000
查看它的代理)
docker pull localhost:5000/${REPOSITORY}/${IMAGE}:${IMAGE_TAG}
(可选)在需要的地方验证图像数据已在本地主机上同步
docker exec registry ls -la /var/lib/registry/docker/registry
ll /Users/${MACOS_USERNAME}/${PATH_WHERE_TO_PERSIST_IMAGES}/docker/registry/docker/registry
如果使用 Kubernetes
将部署 spec
容器 image
更改为:
localhost:5000/${REPOSITORY}/${IMAGE}:${IMAGE_TAG}
等等!
您现在可以将从您的存储库下载的图像保存在您的主机上!
如果互联网可用,本地注册中心将确保拥有最新版本的拉取镜像,并将其请求到代理注册中心(私有或 Docker 中心)。
当您的互联网连接速度太慢而无法重新下载您需要的所有内容或完全不可用时,您也将有最后的备份来运行您的容器!
(当您需要销毁 docker 虚拟机时,对于 Minikube 非常有用)
参考:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。