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

问题描述 投票:0回答:2

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

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

所以在那之后我将 Alpine 图像推送到那个注册表。

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

谢谢!

docker docker-registry
2个回答
1
投票

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

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

然后运行:

sudo systemctl restart docker

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


0
投票

我不知道为什么我在创建/etc/docker/daemon.json 文件后无法重启docker daemon。但是我从这个 manual 中得到了提示,可以将我的私有注册表注册为 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
© www.soinside.com 2019 - 2024. All rights reserved.