• Docker从入门到精通——daemon.json解决和启动脚本之间的冲突


    daemon.json解决和启动脚本之间的冲突

    一、daemon.json解决和启动脚本之间的冲突

      如果您使用 daemon.json 文件,也手动或使用启动脚本将选项传递给 dockerd 命令,并且这些选项发生冲突,则 Docker 无法启动并出现以下错误:

    unable to configure the Docker daemon with file /etc/docker/daemon.json:
    the following directives are specified both as a flag and in the configuration
    file: hosts: (from flag: [unix:///var/run/docker.sock], from file: [tcp://127.0.0.1:2376])

      如果您看到与此类似的错误并且您正在使用标志手动启动守护程序,您可能需要调整您的 flags 或 daemon.json 以消除冲突。

    注意:如果您看到此特定错误,请继续 下一部分以获取解决方法。

    如果您使用操作系统的初始化脚本启动 Docker,您可能需要以特定于操作系统的方式覆盖这些脚本中的默认值。

    二、将 daemon.json 中的 hosts 键与 systemd 一起使用

      难以解决的配置冲突的一个显着示例是当您想要指定与默认值不同的守护程序地址时。Docker 默认监听一个套接字。在 Debian 和 Ubuntu 系统上使用systemd,这意味着 -H 在启动时总是使用主机标志 dockerd。如果您在 中指定 hosts条目daemon.json,则会导致配置冲突(如上述消息中所示)并且 Docker 无法启动。

      要解决此问题,请创建一个 /etc/systemd/system/docker.service.d/docker.conf 包含以下内容的新文件,以删除 -H 默认启动守护程序时使用的参数。

    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd

      有时您可能需要 systemd 使用 Docker 进行配置,例如 配置 HTTP 或 HTTPS 代理

    注意:如果您覆盖此选项,然后在手动启动 Docker 时未指定hosts条目daemon.json 或-H标志,则 Docker 无法启动。

     sudo systemctl daemon-reload 在尝试启动 Docker 之前运行。如果 Docker 成功启动,它现在正在侦听 hostskey 中 指定的 IP 地址,daemon.json 而不是套接字。

    重要提示:Docker Desktop for Windows 或 Docker Desktop for Mac 不支持设置 hostsdaemon.json

     
  • 相关阅读:
    博客收藏
    日常开发工具收藏
    2016工作总结
    REST设计规则
    spring boot 学习笔记(二) 构建web支持jsp
    数据库事务中的隔离级别和锁+spring Transactional注解
    springboot学习笔记(一)
    Python爬虫实例(四)网站模拟登陆
    Python爬虫实例(三)代理的使用
    Python爬虫实例(二)使用selenium抓取斗鱼直播平台数据
  • 原文地址:https://www.cnblogs.com/zuoyang/p/16356001.html
Copyright © 2020-2023  润新知