[英]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 守護程序配置守護程序標志和環境變量。 推薦的方式是使用獨立於平台的daemon.json
文件,該文件默認位於 Linux 上的/etc/docker/
。
因此,要配置不安全的注冊表,請執行以下操作:
在daemon.json
文件中設置以下標志:
{ "insecure-registries": ["registry:8443"] }
重啟 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應該努力
docker
和docker-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
我的解決方案是:
/etc/docker/daemon.json
修改/etc/docker/daemon.json
將權限修改為: /etc/docker/daemon.json
sudo chmod -R 777 /etc/docker/daemon.json
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.