Docker 未绑定的 DNS 服务器:如何作为服务启动
Docker Unbound DNS Server: How to launch as service
我的主机系统是 Arch Linux,Docker 映像是 "base/arch" (archlinux),并经过我自己的修改。 Unbound 安装在已提交的映像上,但我不太清楚如何使用 运行ning 服务启动容器,因为 SystemD 并不意味着 运行 in Docker。
我如何实际启动带有 Unbound 运行ning 作为服务的容器?
我已经学习了一些基本教程,但其中大部分都涉及启动预构建容器:
谢谢!
对于这个答案,我假设您已经通过 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
开关意味着 不要进入后台 (这是一件好事,因为那是也正是您在 Docker 容器中启动 Unbound 所需要的。
构建图像时,ExecStartPre
命令可以是一个简单的 RUN
步骤。
总而言之,您可以将其翻译成类似于这样的 Docker 文件:
FROM base/arch
# <omitted>
RUN /bin/cp -f /etc/trusted-key.key /etc/unbound/
CMD ["/usr/bin/unbound", "-d"]
我的主机系统是 Arch Linux,Docker 映像是 "base/arch" (archlinux),并经过我自己的修改。 Unbound 安装在已提交的映像上,但我不太清楚如何使用 运行ning 服务启动容器,因为 SystemD 并不意味着 运行 in Docker。
我如何实际启动带有 Unbound 运行ning 作为服务的容器?
我已经学习了一些基本教程,但其中大部分都涉及启动预构建容器:
谢谢!
对于这个答案,我假设您已经通过 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
开关意味着 不要进入后台 (这是一件好事,因为那是也正是您在 Docker 容器中启动 Unbound 所需要的。
构建图像时,ExecStartPre
命令可以是一个简单的 RUN
步骤。
总而言之,您可以将其翻译成类似于这样的 Docker 文件:
FROM base/arch
# <omitted>
RUN /bin/cp -f /etc/trusted-key.key /etc/unbound/
CMD ["/usr/bin/unbound", "-d"]