https://hub.docker.com/r/internetsystemsconsortium/bind9
当本文档的作者说,
您需要正确挂载以下卷:
/etc/bind - 用于配置,您的 named.conf 位于此处
/var/cache/bind - 工作目录,例如选项 { 目录“/var/cache/bind”; };
/var/lib/bind - 这通常是放置辅助区域的地方
/var/log - 用于日志文件
它们是否意味着我们应该在 Dockerfile 所在的目录中创建一个目录树?
在标题“权威 DNS 服务器”下,他们有一些配置文件语法。我不知道它是用于 named.conf.local 还是 named.conf.options 文件。你猜是什么?
谢谢。
问题是,他没有给出任何关于如何或何时安装这些卷的提示。我们可以使用 Dockerfile 指令来完成此操作吗?还是必须在创建容器时完成此操作?
docker run -idt -v /home/homie/bind9-with-volumes/config_files:/var/lib/bind
是其中一种方法。这种方法对我来说很有效。
答案1
它们是否意味着我们应该在 Dockerfile 所在的目录中创建一个目录树?
我认为他们所说的只是您需要为每个路径声明一个 docker --volume
(或使用或类似情况下的等效配置),这样当您将容器升级到新映像时,配置和数据文件会保留。 一种选择确实是将这些卷映射到主机目录,但您可以自行选择将这些目录放在何处。docker compose
我不知道它是用于 named.conf.local 还是 named.conf.options 文件。您猜是哪个?
看起来它只是一个例子named.conf
。BIND本身并不知道/
文件,但它们在默认的 Debian/Ubuntu BIND 包配置中使用(由其文件中的语句引用)。named.conf.local
named.conf.options
include
named.conf
答案2
我终于为我的家庭网络找到了权威服务器,并且转发功能也正常工作了!我唯一不明白的是,bind 如何在我没有指定路径的情况下找到区域文件?Dockerfile 内容:
FROM internetsystemsconsortium/bind9:9.18
# Install required tools and dependencies
RUN apt update && apt install -y \
bind9-doc \
dnsutils \
geoip-bin \
mariadb-server \
net-tools
COPY configuration/named.conf /var/lib/bind/
COPY configuration/wedapipo.yo.zone /var/lib/bind/
COPY configuration/10.168.192.in-addr.arpa /var/lib/bind/
COPY configuration/named.conf.options /var/lib/bind/
EXPOSE 53/tcp
EXPOSE 53/udp
EXPOSE 953/tcp
# Start the Name Service
CMD ["/usr/sbin/named", "-g", "-c", "/var/lib/bind/named.conf", "-u", "bind"]
命名的.conf:
include "/etc/bind/named.conf.options";
zone "wedapipo.yo" {
type primary;
file "/var/lib/bind/wedapipo.yo";
notify explicit;
};
zone "10.168.192.in-addr.arpa" {
type master;
file "/var/lib/bind/10.168.192.in-addr.arpa";
notify explicit;
};
命名的.conf.选项
options {
directory "/var/cache/bind";
listen-on { 192.168.10.2; };
listen-on-v6 { ::1; };
allow-transfer { none; };
allow-update { none; };
recursion yes;
allow-transfer { none; };
forwarders {
8.8.8.8;
8.8.4.4;
};
};