如何本地备份本地Docker注册表的映像? 如何创建一个本地注册表容器,该容器从主机装载一个卷,并在本地保存所有被提取的映像? 具有持久化映像的本地Docker注册表
应该可以有一个临时的注册表容器(及其docker卷),即使在注册表(或整个docker VM)被丢弃并重新创建之后,也不允许多次下载图像 这允许只拉一次图像,在互联网连接不好(或根本不可用)时让它们可用;还允许装载带有预下载图像的如何本地备份本地Docker注册表的映像? 如何创建一个本地注册表容器,该容器从主机装载一个卷,并在本地保存所有被提取的映像? 具有持久化映像的本地Docker注册表,docker,minikube,docker-registry,docker-volume,Docker,Minikube,Docker Registry,Docker Volume,应该可以有一个临时的注册表容器(及其docker卷),即使在注册表(或整个docker VM)被丢弃并重新创建之后,也不允许多次下载图像 这允许只拉一次图像,在互联网连接不好(或根本不可用)时让它们可用;还允许装载带有预下载图像的docker卷。 这比手动将docker推/docker拉到本地注册表或docker保存/docker加载需要在那里可用的每个图像更方便 注意事项: 装载的目标可能应该是/var/lib/registry/docker/registry 可以将本地Docker注册表配
docker卷。
这比手动将docker推
/docker拉
到本地注册表或docker保存
/docker加载
需要在那里可用的每个图像更方便
注意事项:
- 装载的目标可能应该是
/var/lib/registry/docker/registry
- 可以将本地Docker注册表配置为
- 我的特定设置通过macOS上的minikube运行
docker
;但答案并不一定是具体的
我管理了它,下面是一步一步的说明。希望能让别人的生活更轻松
配置
首先用所需的值定义环境变量。请参阅下面代码中的env VAR(代理的\u注册表
,注册表用户名
,注册表密码
,保存图像的路径
,等等)
在主机上
米尼库贝
如果使用minikube,首先绑定到其虚拟机上的docker
或者直接从虚拟机内部通过minikube-ssh
运行命令
创建本地注册表
(注意:某些环境可能是不必要的;请查看Docker文档以了解您需要什么)
-v
选项将您要保存注册表数据(存储库文件夹和图像层)的路径装载到本地注册表上。
当您使用Minikube时,后者(/Users/
,在macOS上)将加载到运行Docker的虚拟机上
登录到本地注册表
(可选)验证持久化目录是否存在
尝试从您的私人注册表中提取一个图像
(通过存储库查看它的代理localhost:5000
)
(可选)根据需要,验证映像数据是否已在本地主机上同步
如果使用Kubernetes
将展开spec
容器image
更改为:
localhost:5000/${REPOSITORY}/${IMAGE}:${IMAGE_TAG}
瞧
现在,您可以将从存储库下载的图像存储到主机上
如果internet可用,本地注册表将确保获取最新版本的图像,并将其请求到代理注册表(专用或Docker hub)
当您的internet连接太慢,无法重新下载所需的所有内容,或者完全不可用时,您将有一个最后的备份来运行您的容器
(当您需要销毁docker虚拟机时,Minikube非常有用)
参考资料:
编辑为以单个问题的形式出现,并允许其他用户搜索和访问答案。@Chris请检查问题格式是否已改进,是否可以重新打开;提供对答案的访问。[此消息将被删除]@david maze请检查问题格式是否已改进,是否可以重新打开;提供对答案的访问。[此消息将被删除]
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
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
localhost:5000/${REPOSITORY}/${IMAGE}:${IMAGE_TAG}