将不安全注册表添加到 Docker

我有一个码头1.12运行在 CentOS 上。我试图添加不安全的注册表到它和文档中提到的东西只是不工作。系统使用 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"'

在加载 daemon 并重新启动 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

将图像推送到 hostaneme.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" ]
}

然后重启码头

sudo systemctl daemon-reload
sudo systemctl restart docker

在不安全的注册表 hostname.cloudapp.net:500工作之后。

274147 次浏览

(从问题中复制答案)

要添加不安全的 docker 注册表,请添加包含以下内容的文件 /etc/docker/daemon.json:

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

然后重启码头。

创建 /etc/docker/daemon.json文件并添加以下内容,然后在 CentOS7上重新启动一个 docker 解决了这个问题。

{
"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

对我来说,解决方案是将注册表添加到这里:

/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 上设置了本地内部 JFrog Docker Private Registry 之后,我碰巧遇到了类似的问题。

为了解决这个问题,我采取了以下措施:

通过修改/etc/sysconfig/docker 文件中的 OPTION 变量,添加了“—— security-registryxxx.xx.xx.xx: 8081”:

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

然后重新启动码头。

然后我就可以用以下方式登录到当地的 Docker 注册表:

docker login -u admin -p password hostname:8081

创建要在其中提取 docker 图像的 /etc/docker/daemon.json文件,并将以下内容添加到该文件中

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

请参阅我的博客文章以获得关于创建私有停靠注册表的深入解释: https://geekdosage.com/how-to-create-a-private-docker-registry-in-ubuntu-20-04/

任何想在亚马逊 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

对我来说,在 Ubuntu20.04中更好的方法是编辑 Systemd 服务

/lib/systemd/system/docker.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

在 Mac 来源频道

  1. ~/Library/Containers/com.docker.docker/Data/database
  2. 有一个. git 存储库(. git)
  3. 重置头部 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文件