簡體   English   中英

docker --insecure-registry 標志未按預期工作

[英]docker --insecure-registry flag not working as expected

登錄時具有自簽名證書的私有注冊表的說明:

FATA[0005] 來自守護進程的錯誤響應:v1 ping 嘗試失敗,錯誤:獲取https://registry:8443/v1/_ping :x509:由未知機構簽名的證書。 如果此私有注冊表僅支持帶有未知 CA 證書的 HTTP 或 HTTPS,請將--insecure-registry registry:8443到守護程序的參數中。 在HTTPS的情況下,如果你可以訪問registry的CA證書,就不需要flag; 只需將 CA 證書放在 /etc/docker/certs.d/registry:8443/ca.crt

我試過了,但另一個錯誤是關於 IP 不在主題中。 所以我修復了這個錯誤,現在得到:

FATA[0006] 來自守護進程的錯誤響應:服務器錯誤:發布https://registry:8443/v1/users/ :x509:由未知機構簽名的證書

其中registry 是registry 的IP。

然后我將“--insecure-registry registry:8443”放在/etc/default/docker中並重新啟動了守護進程

我已經驗證它已經采取了設置。

根 6865 1 0 12:47 ? 00:00:00 /usr/bin/docker -d --insecure-registry 注冊表:8443

但是 docker login 仍然會產生這個錯誤:

FATA[0006] 來自守護進程的錯誤響應:服務器錯誤:發布https://registry:8443/v1/users/ :x509:由未知機構簽名的證書

insecure-registry 的工作方式是否與我想象的不同,我該如何解決?

是的,我需要 HTTPS。 它是一個私有注冊中心,但位於公共 IP 上。 是使用真實證書創建正確 DNS 條目的唯一方法嗎?

推薦方式 Docker 17.xx +

有多種方法可以為 Docker 守護程序配置守護程序標志和環境變量。 推薦的方式是使用獨立於平台的daemon.json文件,該文件默認位於 Linux 上的/etc/docker/

因此,要配置不安全的注冊表,請執行以下操作:

  1. daemon.json文件中設置以下標志:

     { "insecure-registries": ["registry:8443"] }
  2. 重啟 Docker

     $ sudo systemctl restart docker

就是這樣!

是的! 我發現問題了!

您需要修復/etc/systemd/system/multi-user.target.wants/docker.service 目前,在啟動 docker 時不考慮 $OPTIONS。 所以我的現在看起來像這樣:

[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target docker.socket
Requires=docker.socket

[Service]
#The line below was missing $OPTIONS at the end!!!
ExecStart=/usr/bin/docker -d -H fd:// $OPTIONS
MountFlags=slave
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity

[Install]
WantedBy=multi-user.target

之后做通常的:

$ sudo systemctl daemon-reload 
$ sudo systemctl restart docker

現在一切正常。

由於我幾個月前就已經投票贊成這個問題,因為我遇到了同樣的問題,現在 - 希望 - 有一個解決方案,我想與你分享我為我們的私人維基寫的以下段落......

設置私有注冊表(使用自簽名證書)

為了docker login到私有注冊表,您必須將上面生成的證書分發到 Docker 節點。

從 haxx.se 下載*.example.com通配符證書和自簽名證書的中間證書,然后重新啟動 Docker 守護程序。

curl -k https://git.example.com/herzog/pub/raw/master/ssh/example.com.crt > /usr/local/share/ca-certificates/registry.example.com-ca.crt
curl http://curl.haxx.se/ca/cacert.pem > /usr/local/share/ca-certificates/cacert.pem
sudo update-ca-certificates
sudo service docker restart

CA 更新的輸出示例

root@test1:~# sudo update-ca-certificates
Updating certificates in /etc/ssl/certs... 2 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....done.

登錄私有注冊表

docker login --username registry --email reg@example.com https://registry.example.com/v1

注意! 與指定的注冊表主機的https://.../v1應該努力dockerdocker-compose

並拉取圖像

docker pull registry.example.com/namespace/image:1.0.0

最好也是最獨立於平台的方法是使用/etc/docker/daemon.json 配置文件

看:

cat > /etc/docker/daemon.json <<DOCKERCONFIG
{
  "insecure-registries": ["registry:8443"]
}
DOCKERCONFIG

我的解決方案是:

  1. /etc/docker/daemon.json修改/etc/docker/daemon.json

  2. 將權限修改為: /etc/docker/daemon.json

    sudo chmod -R 777 /etc/docker/daemon.json

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM