从本地Docker注册表中提取镜像



我在我的服务器上安装了一个Docker注册表,如下所示;

docker run -d -p 5000:5000 --name registry registry:2

之后,我将Alpine image推送到注册表

docker pull alpine
docker image tag alpine localhost:5000/alpinetest
docker push localhost:5000/alpinetest

问题是我想从另一个服务器访问这个图像

所以我可以从客户端运行以下命令到Docker注册表的服务器;

user@clientserver ~
$ curl 10.10.2.18:5000/v2/_catalog
{"repositories":["alpinetest"]}

我怎么拉这个"Alpinetest"来自另一个"客户端服务器"的映像?

例如下面的命令不工作;

user@clientserver ~
$ docker pull 10.10.2.18:5000/alpinetest:latest
Using default tag: latest
Error response from daemon: Get "https://10.10.2.18:5000/v2/": http: server gave HTTP response to HTTPS client

谢谢!

在需要提取镜像的机器上,创建或编辑/etc/docker/daemon.并输入如下:

{
"insecure-registries": ["10.10.2.18:5000"]
}

,然后运行:

sudo systemctl restart docker

请注意注册表是不安全的,就像它说的那样。当通过internet访问注册表或在您无法完全控制的任何其他环境中访问注册表时,不应使用此设置。但对于本地测试来说,这绝对是很好的。

我不知道为什么我不能在创建/etc/docker/daemon后重新启动docker守护进程json文件。但是我从这本手册中得到了一个提示,可以将我的私人注册表注册为docker的不安全注册表。

#If the directory does not exist, create it with mkdir command.
cd /etc/systemd/system/docker.service.d 
sudo vi docker-options.conf

为守护进程添加环境变量。

Environment="DOCKER_OPTS=--insecure-registry=<your.registry:port>"

刷新更改并重新启动守护进程。

sudo systemctl daemon-reload
sudo systemctl restart docker

最新更新