【问题标题】:Docker Unbound DNS Server: How to launch as serviceDocker Unbound DNS 服务器:如何作为服务启动
【发布时间】:2017-03-06 13:46:57
【问题描述】:

我的主机系统是 Arch Linux,Docker 镜像是“base/arch”(archlinux),我自己修改。 Unbound 安装在已提交的映像上,但我不太清楚如何在服务运行的情况下启动容器,因为 SystemD 并不意味着在 Docker 中运行。

如何真正启动 Unbound 作为服务运行的容器?

我已经阅读了一些基本教程,但其中大部分都涉及启动预构建容器:

Dockers basic course.

Arch Wiki.

Digital Ocean overview.

谢谢!

【问题讨论】:

标签: linux docker dns server archlinux


【解决方案1】:

对于这个答案,我假设您已通过 pacman 安装 community/unbound 软件包来安装 Unbound。

您可以检查与软件包一起安装的 systemd 单元文件,以确定如何实际启动服务器。看看/usr/lib/systemd/system/unbound.service

[Unit]
Description=Unbound DNS Resolver
After=network.target

[Service]
ExecStartPre=/bin/cp -f /etc/trusted-key.key /etc/unbound/
PIDFile=/run/unbound.pid
ExecStart=/usr/bin/unbound -d
ExecReload=/bin/kill -HUP $MAINPID
Restart=always

[Install]
WantedBy=multi-user.target

最重要的是ExecStart 行。这描述了 systemd 用于实际启动服务的命令。根据unbound 的帮助(unbound -h),-d 开关意味着不要进入后台(这是一件好事,因为这正是您开始 Unbound in 所需要的一个 Docker 容器)。

在构建映像时,ExecStartPre 命令可以是一个简单的RUN 步骤。

总之,你可以把它翻译成一个类似这样的 Dockerfile:

FROM base/arch

# <omitted>

RUN /bin/cp -f /etc/trusted-key.key /etc/unbound/
CMD ["/usr/bin/unbound", "-d"]

【讨论】:

    猜你喜欢
    • 2014-09-02
    • 2020-12-10
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多