我使用Docker工具箱用于Windows,我试图从此文档中运行私有docker注册表https://docs.docker.com/registry/deploying/
但这对我不起作用。 在此之后出错:
$ docker pull 192.168.99.100:5000/my-ubuntu
错误
$ docker pull 192.168.99.100:5000/image
Using default tag: latest
Error response from daemon: Get https://192.168.99.100:5000/v2/: http: server gave HTTP response to HTTPS client
我认为我的泊坞客户端中存在错误。
有关信息,这是我的泊坞窗信息
Containers: 6
Running: 4
Paused: 0
Stopped: 2
Images: 19
Server Version: 17.06.0-ce
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 144
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: cfb82a876ecc11b5ca0977d1733adbe58599088a
runc version: 2d41c047c83e09a6d61d464906feb2a2f3c52aa4
init version: 949e6fa
Security Options:
seccomp
Profile: default
Kernel Version: 4.4.74-boot2docker
Operating System: Boot2Docker 17.06.0-ce (TCL 7.2); HEAD : 0672754 - Thu Jun 29 00:06:31 UTC 2017
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 995.8MiB
Name: default
ID: ZMCX:NXC7:3BSV:ZNWV:MDZO:FW26:6MX5:UWI6:NVRL:XP56:AKGC:Z3TW
Docker Root Dir: /mnt/sda1/var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
File Descriptors: 47
Goroutines: 56
System Time: 2018-04-05T13:43:42.856720067Z
EventsListeners: 0
Username: kacalek
Registry: https://index.docker.io/v1/
Labels:
provider=virtualbox
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
如果我尝试使用Mac,那么每个人都很完美。
你知道解决这个错误怎么样?
非常感谢您的每一个答案!
答案 0 :(得分:11)
如果您使用Windows:
"insecure-registries": [],
进行更改
"insecure-registries": ["192.168.99.1:5000"],
docker system info
,然后检查“不安全注册表”部分中是否存在192.168.99.1:5000 答案 1 :(得分:4)
如果您在Windows上使用 Docker Desktop :
单击任务栏中的docker whale图标
出现一个菜单,单击“设置”
出现一个弹出窗口,单击“守护程序”
在“不安全的注册表”文本区域中输入不安全的注册表
点击应用
作业完成,无需手动编辑任何文件
答案 2 :(得分:2)
仅供参考,“ danday74”中的修复程序也适用于我的MacOS Docker桌面。请注意,它需要重新启动守护程序,这样它将杀死所有正在运行的容器。
答案 3 :(得分:2)
也许有人再次碰到这个问题,@user674669 也应该提到 sudo /etc/docker/daemon.json
应该设置在想要连接到有问题的 Docker 注册表的 client machine
上。
这允许客户端连接到服务器
答案 4 :(得分:1)
看起来你还没有设置Docker Daemon。请注意以下几行:
Insecure Registries:
127.0.0.0/8
尝试将此行添加到Docker的daemon.json
文件中,然后重新启动Docker守护程序:
"insecure-registries":["192.168.99.100:5000"]
答案 5 :(得分:1)
如果您在 Windows 机器上使用 minikube 以及 minikube 插件注册表。
1.找到注册IP。它将与 minikube IP 相同。
> minikube ip
2.编辑文件:
C:\Users\<username>\.minikube\machines\minikube\config.json
"InsecureRegistry": [
"10.96.0.0/12", // Add coma
"<minikube IP>:5000" //-> Add this line
],
重启 minikube
> minikube start
答案 6 :(得分:0)
在CentOS 7.2.1511上,我必须创建一个新文件
/etc/docker/daemon.json
带有内容
{ "insecure-registries":["host:port"] }
(主机是托管我的Docker注册表的服务器的主机名,端口是docker注册表可用的端口。在我的情况下,这些是192.168.99.1:50000)
然后通过执行以下操作重启docker daemon:
$ sudo service docker restart
答案 7 :(得分:0)
希望这将对任何有问题的人提供帮助,以解决“不安全的注册表”问题。
添加
{ "insecure-registries":["host:port"] }
到
/etc/docker/daemon.json
直到我创建文件
,它才对我不起作用 /etc/default/docker
并把线放在
DOCKER_OPTS="--config-file=/etc/docker/daemon.json"
在其中,然后使用
重新启动docker守护进程 sudo systemctl stop docker
和sudo systemctl start docker
。
由于某种原因,仅执行sudo systemctl restart docker
无效。它引发了有关尝试快速重新启动服务的错误。
对于["host:port"]
,我也使用Docker注册表的IP地址而不是主机名,因为我没有DNS或主机文件设置,无法通过主机名查找注册表。
这使我彻底疯了,直到我偶然发现了/etc/default/docker
位here。
我是Docker的新手,所以我不知道这是否是新要求,因为回答了这篇初始文章,或者在我第一次设置注册表时是否错过了其他内容。尽管我所做的只是遵循Docker网站本身上的最新文档。
答案 8 :(得分:0)
除了更改 daemon.json 之外,我还必须rm -Rf ~/.docker
。
信用:https://github.com/moby/moby/issues/28321#issuecomment-638307611
答案 9 :(得分:0)
我在 Ubuntu 中安装了新版本的 Docker,但没有一种方法有效,所以我安装了旧版 docker
sudo apt-get install docker-ce=5:19.03.12~3-0~ubuntu-focal
并正常工作
答案 10 :(得分:0)
这是“测试不安全的注册表”的官方页面解释。 解决方案:
答案 11 :(得分:0)
necron9x11 的回答对我有用。请注意,如果您正在使用 Docker-in-Docker 部署,例如容器化 Jenkins (https://www.jenkins.io/doc/book/installing/docker/),则可以将“daemon.json”和“docker”文件添加为映像构建的一部分。这样,两者都包含在支持 Jenkins 映像的可部署 dind 映像中。只需使用 Dockerfile 在同一目录中创建两个文件:
那么Dockerfile的内容是:
FROM docker:dind
USER root
ADD docker /etc/default/docker
ADD daemon.json /etc/docker/daemon.json
最后像往常一样构建和部署:
docker build -f Dockerfile.dind -t dind-custom .
docker run ...
(name + env + volume + etc)
dind-custom
现在您的 dind 容器可以访问 daemon.json 中指定为 ["host:port"] 的不安全注册表。