Docker存储库服务器向HTTPS客户端提供了HTTP响应

Tom*_*lek 4 windows docker docker-toolbox

我将Docker工具箱用于Windows,我正在尝试从本文档https://docs.docker.com/registry/deploying/运行私有Docker注册表

但这对我不起作用。之后的错误:

$ docker pull 192.168.99.100:5000/my-ubuntu
Run Code Online (Sandbox Code Playgroud)

错误

$ 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
Run Code Online (Sandbox Code Playgroud)

我认为该错误是我的Docker客户端中的问题。

有关信息,这是我的码头工人信息

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
Run Code Online (Sandbox Code Playgroud)

如果我在Mac上尝试,那么Everythink就是完美的。

您知道如何解决此错误吗?

非常感谢您的每一个回答!

use*_*669 46

在 CentOS 7.2.1511 上,我必须创建一个新文件

/etc/docker/daemon.json 
Run Code Online (Sandbox Code Playgroud)

与内容

{ "insecure-registries":["host:port"] } 
Run Code Online (Sandbox Code Playgroud)

(主机是托管我的 docker 注册表的服务器的主机名,端口是 docker 注册表可用的端口。在我的情况下,这些是 192.168.99.1:50000)

然后通过执行以下操作重新启动 docker 守护进程:

$ sudo service docker restart
Run Code Online (Sandbox Code Playgroud)

  • “systemctl docker reload”就足够了(而且更快)重新启动将杀死所有正在运行的东西:) (5认同)
  • 更新 daemon.json 后,不要忘记重新启动 docker 服务! (2认同)

小智 26

希望这将帮助任何有问题的人使insecure-registries修复工作。

添加

{ "insecure-registries":["host:port"] }

/etc/docker/daemon.json

在我创建文件之前对我不起作用

/etc/default/docker

并把线

DOCKER_OPTS="--config-file=/etc/docker/daemon.json"

在其中,然后重新启动 docker 守护进程

sudo systemctl stop dockersudo systemctl start docker

由于某种原因,只是做一个sudo systemctl restart docker没有用。它引发了有关尝试快速重新启动服务的错误。

同样因为["host:port"]我使用了我的 Docker 注册表的 IP 而不是主机名,因为我没有 DNS 或主机文件设置来能够通过主机名找到注册表。

这让我非常疯狂,直到我在这里偶然发现了这/etc/default/docker一点。

我是 Docker 的新手,所以我不知道这是否是新要求,因为这个初始帖子得到了回答,或者我第一次设置注册表时是否遗漏了其他东西。尽管我所做的只是遵循 Docker 站点本身上的当前文档。


Sal*_*idi 25

如果您使用窗户:

  1. 在启动菜单中,右键单击 docker 桌面一,然后选择设置
  2. 选择“泊坞窗引擎”选项卡,并更改为图片"insecure-registries": [],"insecure-registries": ["192.168.99.1:5000"],

Docker 引擎选项卡

  1. 单击应用并重新启动按钮
  2. docker 重启后,要检查是否应用了修改,请打开 cmd 控制台并执行以下命令:docker system info然后检查“insecure-registries”部分中是否存在 192.168.99.1:5000


Scr*_*Dev 24

如果启用了 buildkit(在较新的版本中似乎默认启用)并且添加 insecure-registries 没有修复它,您可能需要禁用 buildkit,或者将 http:// 添加到 insecure-registries 中的主机名。

通过环境变量禁用 Buildkit:
DOCKER_BUILDKIT=0 docker build -t image_name .
Run Code Online (Sandbox Code Playgroud)
通过 docker 守护进程配置文件禁用:
  • 在 Docker 桌面上,转到Settings > Docker Engine
    ** 请务必小心拼写错误和缺少逗号,因为破坏此文件将阻止 docker 桌面启动。
{
  ...
  "features": {
    "buildkit": false << SET THIS TO FALSE
  },
  "insecure-registries": [
    "hostname:18443",
    "hostname:8083"
  ],
  ...
}
Run Code Online (Sandbox Code Playgroud)
将 URL 配置为 HTTP:
{
  ...
  "features": {
    "buildkit": true
  },
  "insecure-registries": [
    "http://hostname:18443",
    "http://hostname:8083"
  ],
  ...
}
Run Code Online (Sandbox Code Playgroud)
已知问题的文档:

https://github.com/docker/docker.github.io/blob/62adddbb6b1f8d861c72f6ade2c50977fd57f481/registry/insecure.md#known-issue-on-buildkit

  • 将 http:// 添加到 insecure-registries 中的主机名帮助了我,谢谢! (6认同)

Yua*_*kun 8

好像您没有正确设置Docker Daemon。请注意以下几行:

Insecure Registries:
 127.0.0.0/8
Run Code Online (Sandbox Code Playgroud)

尝试将以下行添加到Docker的daemon.json文件中,然后重新启动Docker Daemon:

"insecure-registries":["192.168.99.100:5000"]
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考:在 Linux 上,根据 https://docs.docker.com/registry/deploying/,它位于 /etc/docker/daemon.json 中 (8认同)
  • 更改 daemon.json 后还需要重新启动 docker 吗?我需要重新启动才能刷新这些更改。`sudo systemctl 重新启动 docker` (8认同)
  • 但我在“C:\Users\kacal\.docker”中发现了一些 config.json (3认同)
  • 它位于“C:\ProgramData\Docker\config”中 (2认同)

dan*_*y74 6

如果您使用的是Windows 版Docker Desktop :

  • 单击任务栏中的 docker 鲸鱼图标

  • 出现菜单,单击“设置”

  • 出现弹出窗口,单击 Daemon

  • 在“不安全注册表”文本区域中输入您的不安全注册表

  • 点击应用

工作完成,无需手动编辑任何文件

  • 这也适用于我的 MacOS Docker 桌面。请注意,守护进程需要重新启动,因此任何正在运行的容器都将被终止。 (2认同)

Ste*_*hen 6

如果您在 Windows 机器中使用 minikube 以及 minikube 插件注册表。

1.找到注册表IP。它将与 minikube IP 相同。

> minikube ip
Run Code Online (Sandbox Code Playgroud)

2.编辑文件:

C:\Users\<username>\.minikube\machines\minikube\config.json

 "InsecureRegistry": [
                "10.96.0.0/12",      // Add coma
                "<minikube IP>:5000" //-> Add this line
            ],
Run Code Online (Sandbox Code Playgroud)
  1. 重启minikube

    > minikube start


Jos*_*nga 5

也许有人再次碰到这个问题,@user674669 也应该提到sudo /etc/docker/daemon.json应该在client machine想要连接到有问题的 Docker 注册表的 上设置。

这允许客户端连接到服务器