Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何本地备份本地Docker注册表的映像? 如何创建一个本地注册表容器,该容器从主机装载一个卷,并在本地保存所有被提取的映像? 具有持久化映像的本地Docker注册表_Docker_Minikube_Docker Registry_Docker Volume - Fatal编程技术网

如何本地备份本地Docker注册表的映像? 如何创建一个本地注册表容器,该容器从主机装载一个卷,并在本地保存所有被提取的映像? 具有持久化映像的本地Docker注册表

如何本地备份本地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 VM)被丢弃并重新创建之后,也不允许多次下载图像

允许只拉一次图像,在互联网连接不好(或根本不可用)时让它们可用;还允许装载带有预下载图像的
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}