与镜像的Docker私有registry
我创build了两个Docker容器。 第一个提供了一个私人的Dockerregistry,第二个是官方Dockerregistry的镜像:
docker run -d --name registry -v /local/path/to/registry:/registry -e SETTINGS_FLAVOR=local -e STORAGE_PATH=/registry -p 5000:5000 registry docker run -d --name mirror -v /local/path/to/mirror:/registry -e STORAGE_PATH=/registry -e STANDALONE=false -e MIRROR_SOURCE=https:/registry-1.docker.io -e MIRROR_SOURCE_INDEX=https://index.docker.io -p 5555:5000 registry
现在我想结合两者。 每当用户拉图像,它应该首先查询私人registry,然后镜像。 而当图片被推送时,他们只能被推送到私人registry。
我不知道如何做到这一点。 任何帮助表示赞赏。
你不能只强制所有的docker推送命令推送到您的私人registry。 一个原因是你可以有任何数量的这些寄存器。 您必须先通过标记图像来告诉docker在哪里推送(请参见下方)。
这里是如何设置docker主机使用正在运行的私有registry和本地镜像。
客户端设置
让我们假设你在dockerstore (可parsing的)主机上运行镜像和私有registry。 镜像端口5555,registry5000。
然后在客户端机器上,您应该将额外的选项传递给docker守护进程启动。 在你的情况下:
- 添加
--registry-mirror=http://dockerstore:5555
来告诉守护进程使用本地镜像而不是dockerhub。 资源 - 添加
--insecure-registry dockerstore:5000
来访问私有registry,无需进一步configuration。 看到这个答案 - 重新启动docker守护进程
使用镜子
当你拉任何图像时,第一个来源将是本地镜像。 你可以通过运行docker pull来确认,例如
docker pull debian
在输出将有消息,图像正在从你的镜子 – dockerstore:5000
使用本地registry
为了首先推送到私人registry,您必须标记图像以使用registry的全名推送。 确保你在标签的第一部分有一个点或冒号,告诉docker这个图像应该被推送到私人registry。
Docker会查找“。”(域分隔符)或“:”(端口分隔符),以获知存储库名称的第一部分是位置而不是用户名。
例:
标签30d39e59ffe2图像作为dockerstore:5000 / myapp:稳定
docker tag 30d39e59ffe2 dockerstore:5000/myapp:stable
将其推送到私人registry
docker push dockerstore:5000/myapp:stable
那你也可以拉
docker pull dockerstore:5000/myapp:stable
存储库名称旨在是全局的 ,即存储库redis
始终是指Docker Hub的官方Redis映像。 如果要使用私有registry,则使用registry的名称(如localhost.localdomain:5000/myimage:mytag
为存储库名称加前缀。
所以当你拉或推,它会自动去相关的registry。 镜像应该很容易设置,只需要使用--registry-mirror=
参数将URL传递给守护进程。
这对于企业用户来说并不完美,所以这个(封闭的)Docker问题 。
要明确, docker文件确认:
目前无法镜像另一个私人registry。 只有中央集线器才能被镜像。
- 无法推入或从本地主机上的泊坞窗registry
- 运行相同的docker客户端的Windows容器和Linux的
- oci运行时错误:container_linux.go:247:启动容器进程导致“exec:\”nodemon \“:在$ PATH中找不到可执行文件”
- 使用wal-e从WAL备份postgresql docker镜像
- 如何在Docker中使用GUI工具(如Kitematic)进入容器?
- 如何在Apache中为Nexus 3.0.2-02中的docker托pipe存储库configuration反向代理
- 安全替代DiD或UNIX套接字?
- Docker安装包依赖
- 在Elastic Beanstalk上设置Docker容器主机名