【问题标题】:Facing issue while setup bind9 in Dockerfile在 Dockerfile 中设置 bind9 时面临问题
【发布时间】:2021-10-15 00:59:09
【问题描述】:

我是 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     

RUN /usr/sbin/named -g -c /etc/bind/named.conf -u bind

RUN systemctl restart bind9

我收到如下错误

ERROR:systemctl:Unit bind9.service could not be found.

谁能帮助我,安装 Bind9 后,为什么上面的命令会出错?

错误仅与 Docker 一起出现,如果我在 Ubuntu 20.04 的主机环境中运行相同的命令,那么它可以正常工作。

【问题讨论】:

    标签: docker shell ubuntu


    【解决方案1】:

    您通常不能在容器中使用服务管理命令(如servicesystemctl 等),因为没有运行服务管理器。

    此外,即使 有一个服务管理器正在运行,在 RUN 命令中与之交互也没有任何意义:这些命令是映像构建过程的一部分,并且此时没有运行持久性服务。 RUN 命令在一个隔离的环境中运行,当RUN 命令完成时,该环境被完全拆除。

    如果您希望bind 在使用映像运行容器时启动,则需要将适当的bind 命令行放入CMD 选项中。例如,official bind9 image 包括:

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

    (详见Dockerfile

    【讨论】:

    • 嗨@larsks,不知道为什么,但这个问题已经解决,但现在又开始了,让我更新我的问题,请你帮我谢谢
    • 你应该打开一个新问题。
    • 好的,让我来更新你,谢谢
    猜你喜欢
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 2017-01-04
    • 1970-01-01
    相关资源
    最近更新 更多