【发布时间】:2021-10-21 13:09:10
【问题描述】:
我是 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 的主机环境中运行相同的命令,那么它可以正常工作。
【问题讨论】:
-
尝试在 Docker 中运行
systemd比这复杂得多。您可能需要找到一种不同的方法来解决您的问题。 -
第二个
CMD覆盖第一个;无论如何,你只能拥有一个。 -
第一个近似值
systemctl(以及类似的命令,如service或/etc/init.d脚本)在 Docker 中不起作用;但是如果你删除第二个CMD,第一个会在前台启动named作为单个主容器进程吗?