gpt4 book ai didi

Dockerfile : bind9: unrecognized service

转载 作者:行者123 更新时间:2023-12-04 19:05:55 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





systemctl command doesn't work inside docker-container

(2 个回答)


8 个月前关闭。




我是 docker 新手,我想用 Ubuntu 20.04 和 bind9 服务安装构建一个镜像。
下面是我的docker文件代码

FROM ubuntu:20.04

ENV TZ=Asia
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN apt-get update && apt-get install -y \
apt-utils \
systemctl \
bind9

CMD ["/usr/sbin/named", "-g", "-c", "/etc/bind/named.conf", "-u", "bind"]

CMD systemctl restart bind9
当我执行以下命令来构建图像时,
sudo docker image build --tag bind9server . 
它工作正常。
Step 6/6 : CMD systemctl restart bind9
---> Running in f982f314c216
但是当我运行这个 docker 镜像时,我收到如下错误
ERROR:systemctl:Unit bind9.service could not be found.
安装 Bind9 后,任何人都可以帮助我,为什么上面的命令会出错?
错误仅与 Docker 一起出现,如果我在 Ubuntu 20.04 的主机环境中运行相同的命令,那么它可以正常工作。

最佳答案

第一件事:你应该为你的最后一个 CMD 使用一个长时间运行的命令,否则容器将在完成后退出。 CMD 的目的是为您的容器提供一个默认入口点,因此即使有 bind9 服务,您的容器也会立即退出。此外,只有最后一个 CMD 生效(见 docs)。
二:见this question解释为什么使用 systemd 运行不是一个好主意在 Docker 容器中。第一次尝试会好很多,那就是调用 named直接地。
第三:在“正常”主机上,当您不确定单元名称时,例如 bind9 ,您可以尝试使用 systemctl list-units --all 检查所有已知单位.看起来您的服务名为 named .

关于Dockerfile : bind9: unrecognized service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69662603/

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