[英]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 上。 來源
~/Library/Containers/com.docker.docker/Data/database
git reset --hard
com.docker.driver.amd64-linux
文件夾~/Library/Containers/com.docker.docker/Data/database/com.docker.driver.amd64-linux/etc/docker
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 桌面
"Preferences..."
調出 Docker Desktop 設置窗口"Docker Engine"
daemon.json
文件中當前內容的 JSON 摘錄。insecure-registries
的JSON對象的最外層添加一行,並提供ip.address.for.registry:port
作為對應的值Apply and Restart
您現在應該能夠運行以下命令:
$ 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.