一尘不染

Docker守护程序标志被忽略

docker

环境:

  • 操作系统 :debian 8.0.0-amd64,ubuntu-15.04,16.04
  • 码头工人 :1.xx

程序:

我更改/etc/default/docker为添加一个私有Docker注册表,然后重新启动了docker服务,最后尝试提取一些映像。

$ cat /etc/default/docker
DOCKER_OPTS="--insecure-registry mydocker-registry.net:5000"

$ service docker restart

$ docker pull mydocker-registry.net:5000/testdb
FATA[0000] Error: v1 ping attempt failed with error: Get https://mydocker-
registry.net:5000/v1/_ping: dial tcp: lookup mydocker-registry.net: no 
such host. If this private registry supports only HTTP or HTTPS with an 
unknown CA certificate, please add `--insecure-registry mydocker-
registry.net:5000` to the daemon's arguments. In the case of HTTPS, if 
you have access to the registry's CA certificate, no need for the flag; 
simply place the CA certificate at /etc/docker/certs.d/mydocker-
registry.net:5000/ca.crt

一个ps输出显示一无所知DOCKER_OPTS环境变种。

$ ps auxwww|grep docker
root  6919   0.0   0.1   331076   19984 ? Ssl 10:14   0:00 /usr/bin/docker -d -H fd://

题:

根据Docker文档,使用私有注册表的方式是通过中的DOCKER_OPTS进行/etc/default/docker。为什么这样做之后在这种环境下不生效?

笔记:

  • DNS可以正确解析专用注册表主机名。

阅读 203

收藏
2020-06-17

共1个答案

一尘不染

推荐方式Docker 17.xx +

有多种方法可以为Docker守护程序配置守护程序标志和环境变量。该建议的方法是使用独立于平台的daemon.json文件,该文件位于/etc/docker/默认情况下,在Linux上。

因此,要配置不安全的注册表,请执行以下操作:

  1. /etc/docker/daemon.json文件中设置以下标志:

    {
    "insecure-registries": ["mydocker-registry.net:5000"]
    

    }

  2. 重新启动Docker

     $ sudo systemctl restart docker
    

每次更轻松!


以前推荐的Docker 1.12方式

根据Docker
文档,为Docker守护程序配置守护程序标志和环境变量的推荐方法是使用
systemd 插入文件

因此,对于这种特定情况,请执行以下操作:

  1. 创建一个/etc/systemd/system/docker.service.d/private-registry.conf具有以下内容的文件:

如果不存在,请创建目录 /etc/systemd/system/docker.service.d

    [Service]
ExecStart=
ExecStart=/usr/bin/dockerd --insecure-registry mydocker-registry.net:5000
  1. 刷新更改:

    $ sudo systemctl daemon-reload
    
  2. 重新启动Docker:

     $ sudo systemctl restart docker
    

瞧!


不推荐的方式

编辑档案 /lib/systemd/system/docker.service

...
[Service]
ExecStart=/usr/bin/docker -d -H fd:// $DOCKER_OPTS
...
EnvironmentFile=-/etc/default/docker
...

然后执行

systemctl daemon-reload
systemctl restart docker

确认/etc/default/docker已加载

ps auxwww | grep docker
root      4989  0.8  0.1 265540 16608 ?        Ssl  10:37   0:00 /usr/bin/docker -d -H fd:// --insecure-registry

而已。

2020-06-17