【问题标题】:Configuring options for docker run配置 docker run 的选项
【发布时间】:2017-05-25 15:39:23
【问题描述】:

由于本地网络配置,我必须将 --dns 和 --dns-search 选项添加到我的 docker run 命令中,如下所示:

docker run --dns XX.XX.1.1 --dns-search companydomain -t mycontainer

是否有一个环境变量或配置文件可以在其中添加 DNS 选项,这样我就不必在每次想要运行容器时都输入它们?

我在 Ubuntu 16.04 上使用 docker,在 Windows 机器上托管的 VMware VM 上运行。

谢谢。

【问题讨论】:

    标签: docker dns


    【解决方案1】:

    您可以将这些选项添加到 docker 守护程序,作为其运行的所有容器的默认设置。在dockerd 命令行上,选项相同,--dns XX.XX.1.1 --dns-search companydomain。为避免更改启动脚本以添加该选项,可以更轻松地设置 /etc/docker/daemon.json 文件,其中包含以下内容:

    {
      "dns": ["XX.XX.1.1"],
      "dns-search": ["companydomain"]
    }
    

    然后使用 systemctl restart docker 重新启动 docker 守护程序以应用更改。

    您可能会发现更新 VM 中的 /etc/resolv.conf 以将此更改应用到 docker 容器而不是 VM 本身会更好。看起来像:

    nameserver XX.XX.1.1
    search companydomain
    

    如果更新 resolv.conf,请确保它不是由其他工具管理的,例如如果你正在为你的虚拟机获取 dhcp 地址,这将被 dhcp 客户端守护进程覆盖。

    【讨论】:

    • 非常感谢您的回答,在官方 docker 文档中找到这些信息并不容易(除此之外通常非常清楚)
    • Hyper-V 开箱即用。刚买了一台新机器并开始使用 WSL2,现在由于某种原因我需要指定 DNS。感谢您的修复!
    • 当然,在发布之后,我查看了我的 WSL 网络适配器设置。对于 IPv4,它被设置为使用手动 DNS 设置,但没有列出。我从这个答案恢复了我的 Docker 守护程序设置,重新启动了 Docker,然后在我的适配器设置中放置了一个手动 DNS 条目。它仍在工作。
    猜你喜欢
    • 1970-01-01
    • 2017-09-07
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多