簡體   English   中英

添加不安全注冊表到 Docker

[英]Add Insecure Registry to Docker

我有一個運行在 CentOS 上的 docker 1.12。我正在嘗試向它添加不安全的注冊表,但文檔中提到的內容不起作用。 該系統使用systemd ,所以我創建了一個/etc/systemd/system/docker.service.d/50-insecure-registry.conf文件。

$ cat /etc/systemd/system/docker.service.d/50-insecure-registry.conf
[Service]
Environment='DOCKER_OPTS=--insecure-registry="hostname.cloudapp.net:5000"'

加載守護進程並重啟docker服務后,systemd顯示環境變量在那里

$ sudo systemctl show docker | grep Env
Environment=DOCKER_OPTS=--insecure-registry="hostname.cloudapp.net:5000"

但是當我運行docker info時,我沒有看到添加了不安全的注冊表

$ docker info
........
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Insecure Registries:
    127.0.0.0/8

將圖像推送到hostname.cloudapp.net失敗

Pushing application     (hostname.cloudapp.net:5000/application:latest)...
The push refers to a repository     [hostname.cloudapp.net:5000/mozart_application]
ERROR: Get https://hostname.cloudapp.net:5000/v1/_ping: http: server gave HTTP response to HTTPS client

有什么可以做的嗎? 我錯過了什么嗎?

更新

通過添加包含以下內容的文件/etc/docker/daemon.json解決了該問題

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}

然后重啟docker

sudo systemctl daemon-reload
sudo systemctl restart docker

在那個不安全的注冊表hostname.cloudapp.net:5000工作之后。

(復制問題的答案)

要添加不安全的/etc/docker/daemon.json注冊表,請添加具有以下內容的文件/etc/docker/daemon.json

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}

然后重啟docker。

創建/etc/docker/daemon.json文件並添加以下內容,然后在 CentOS 7 上執行/etc/docker/daemon.json restart 解決了該問題。

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}

/etc/docker/daemon.json文件的解決方案在 Ubuntu 上對我不起作用。

通過向/etc/default/docker文件中的 Docker 守護進程提供命令行選項,我能夠在 Ubuntu 上配置 Docker 不安全的注冊表,例如:

# /etc/default/docker    
DOCKER_OPTS="--insecure-registry=a.example.com --insecure-registry=b.example.com"

可以使用相同的方式為 docker 鏡像和卷存儲、默認 DNS 服務器等配置自定義目錄。

現在,在 Docker 守護進程重啟后(執行sudo service docker restart ),運行docker info將顯示:

Insecure Registries:
  a.example.com
  b.example.com
  127.0.0.0/8

在 Mac 上。 來源

  1. 轉到~/Library/Containers/com.docker.docker/Data/database
  2. 有一個 .git 存儲庫 (.git)
  3. 重置為 HEAD git reset --hard
  4. 現在你有com.docker.driver.amd64-linux文件夾
  5. 進入~/Library/Containers/com.docker.docker/Data/database/com.docker.driver.amd64-linux/etc/docker
  6. 有你的daemon.json文件

對我來說,解決方案是將注冊表添加到這里:

/etc/sysconfig/docker-registries

DOCKER_REGISTRIES=''
DOCKER_EXTRA_REGISTRIES='--insecure-registry  b.example.com'

如果您已經有一個 config.json 文件,那么最終文件應該看起來像這樣...這里registry.myprivate.com是給我帶來問題的那個。

{ "auths": { "https://index.docker.io/v1/": { "auth": "xxxxxxxxxxxxxxxxxxxx==" }, "registry.myprivate.com": { "auth": "xxxxxxxxxxxxxxxxxxxx=" } }, "HttpHeaders": { "User-Agent": "Docker-Client/19.03.8 (linux)" }, "insecure-registries" : ["registry.myprivate.com"] }

任何希望在 amazon linux 2 上添加不安全注冊表的人:您必須更改 /etc/sysconfig/docker 下的設置,然后重新啟動 docker 守護進程:這是我的 /etc/sysconfig/docker 的樣子

# The max number of open files for the daemon itself, and all
# running containers.  The default value of 1048576 mirrors the value
# used by the systemd service unit.
DAEMON_MAXFILES=1048576

# Additional startup options for the Docker daemon, for example:
# OPTIONS="--ip-forward=true --iptables=true"
# By default we limit the number of open files per container
OPTIONS="--default-ulimit nofile=1024:4096 --insecure-registry yourinsecureregistryhostname:port"

# How many seconds the sysvinit script waits for the pidfile to appear
# when starting the daemon.
DAEMON_PIDFILE_TIMEOUT=10

對於我在 Ubuntu 20.04 中更好的方法是編輯 systemd 服務

/lib/systemd/system/docker.service

並在 [Service] 后面添加此行

Environment=DOCKER_OPTS=--insecure-registry=10.0.0.10:6000

或者它可以使用 sed 通過 2 個命令自動完成,它會在 [Service] 后面添加一行

sed 's/\[Service\]/\[Service\] \nEnvironment=DOCKER_OPTS=--insecure-registry=10.0.0.10:6000/' /lib/systemd/system/docker.service > /lib/systemd/system/docker.service.tmp
mv /lib/systemd/system/docker.service.tmp /lib/systemd/system/docker.service

對於蘋果機

從 MacOS 桌面

  • 單擊頂部菜單欄上的 Docker“鯨魚”圖標
  • 選擇"Preferences..."調出 Docker Desktop 設置窗口
  • 然后選擇"Docker Engine"
  • 從這里它應該顯示daemon.json文件中當前內容的 JSON 摘錄。
  • insecure-registries的JSON對象的最外層添加一行,並提供ip.address.for.registry:port作為對應的值
  • 單擊Apply and Restart

這是該過程的視覺效果:

Docker 引擎部分的 Docker 桌面設置窗口

您現在應該能夠運行以下命令:

$ docker build -t mysimpleapp .
$ docker tag mysimpleapp 172.16.0.65:30350/simple
$ docker push 172.160.65:30350/simple
> Using default tag: latest
The push refers to repository [172.16.0.65:30350/simple]
f5d693d2f2fe: Pushed 
66d5de1853fa: Pushed 
f317cd97a2b5: Pushed 
d517aeda4ce5: Pushed 
199d178b1757: Pushed 
latest: digest: sha256:edde4d73130ef9c88d3d273ab4a727e0f8762f0d65802afb01f46eb6877d087c size: 2425

我在通過官方 docker 腳本(“便捷腳本”)安裝 docker 的 raspbian/raspberry pi 上運行時遇到了一些麻煩。 由於某種原因,配置必須存在於/home/pi/.config/docker/daemon.json中。 為什么/在哪里這樣配置我不知道

這不是其他地方提到的/etc/docker/daemon.json

在 Amazon Linux 上設置本地內部 JFrog Docker Private Registry 后,我碰巧遇到了類似的問題。

我為解決問題所做的以下工作:

通過修改 /etc/sysconfig/docker 文件中的 OPTIONS 變量添加了“--insecure-registry xx.xx.xx.xx:8081”:

OPTIONS="--default-ulimit nofile=1024:40961 --insecure-registry hostname:8081"

然后重新啟動docker。

然后我可以使用以下命令登錄到本地 docker 注冊表:

docker login -u admin -p password hostname:8081

創建/etc/docker/daemon.json文件,您要在其中提取/etc/docker/daemon.json映像並將以下內容添加到該文件中

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}

有關創建私有 docker 注冊表的深入說明,請參閱我的博客文章: https : //geekdosage.com/how-to-create-a-private-docker-registry-in-ubuntu-20-04/

暫無
暫無

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

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