gpt4 book ai didi

ubuntu - Docker 守护进程标志被忽略

转载 作者:IT老高 更新时间:2023-10-28 12:38:35 29 4
gpt4 key购买 nike

环境:

  • 操作系统:debian 8.0.0-amd64、ubuntu-15.04、16.04
  • Docker:1.x.x

程序:

我更改了 /etc/default/docker 以添加私有(private) 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 文档,使用私有(private)注册表的方式是通过 /etc/default/docker 中的 DOCKER_OPTS。为什么做了之后,在这个环境下没有生效?

注意事项:

  • DNS 正确解析私有(private)注册表主机名。

最佳答案

推荐方式 Docker 17.xx +

有多种方法可以为 Docker 守护程序配置守护程序标志和环境变量。 recommended way就是使用平台无关的daemon.json文件,在Linux上默认位于/etc/docker/

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

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

    {
    "insecure-registries": ["mydocker-registry.net:5000"]
    }
  2. 重启 Docker

     $ sudo systemctl restart docker

每次都更轻松!


以前推荐的 Docker 1.12 方式

根据docker documentation , 为您的 Docker 守护程序配置守护程序标志和环境变量的推荐方法是使用 systemd drop-in 文件

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

  1. 创建一个名为 /etc/systemd/system/docker.service.d/private-registry.conf 的文件,其内容如下:

    If not exists, create directory /etc/systemd/system/docker.service.d

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

    $ sudo systemctl daemon-reload
  3. 重启 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

就是这样。

关于ubuntu - Docker 守护进程标志被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30127580/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com