我已经创建了 Docker 私有仓库,并且能够在同一网络中的其他树莓派上推送和拉取(将仓库 IP 添加到不安全仓库选项中)。
docker push registry-ip:5000/image
但是当我的注册表服务器机器重新启动时,我无法看到存储库映像,需要再次将映像推送到注册表主机机器:
curl -v registry-server-ip:5000/v2/_catalog
没有返回任何内容
为什么会这样?它应该是持久的,并且应该在注册表中保留图像,就像存储在Docker镜像中一样。
有什么解决方法或任何配置可以处理这种情况吗?
================更新============================
Docker-Compose.yml
version: '3.4'
services:
service1:
image: ${REGISTRY_SERVER_IP}:5000/service1
build: .
restart: always
deploy:
mode: global
restart_policy:
condition: on-failure
ports:
- 3632:3632
entrypoint:
- init.sh
init.sh只是一个运行一些服务器的脚本。 Dockerfile有一个基础镜像并包含一些apt-get install update命令。
我正在运行这个脚本:
1. 创建注册服务器 docker service create --name registry --publish published=5000,target=5000 registry:2 --> 这将在同一台机器上创建注册服务器
2. 运行docker-compose build --> 在本地使用docker文件构建镜像
3. 运行docker-compose push --> 将镜像推送到注册服务器,就像在docker compose中一样
现在,当我重新启动机器时,容器/服务会自动触发,但存储库中的镜像会丢失。