I try to create a docker container with bind9 on it and I want to add my db.personal-domain.com file but when I run docker build
and then docker run -tdp 53:53 -v config:/etc/bind <image id>
the container doesn't have my db.personal-domain.com file. How to fix that ? Thanks !
tree structure
-DNS
--Dockerfile
--config
---db.personal-domain.com
Dockerfile
FROM ubuntu:20.04
RUN apt-get update
RUN apt-get install -y bind9
RUN apt-get install -y bind9utils
WORKDIR /etc/bind
VOLUME ["/etc/bind"]
COPY config/db.personal-domain.com /etc/bind/db.personal-domain.com
EXPOSE 53/tcp
CMD ["/usr/sbin/named", "-g", "-c", "/etc/bind/named.conf", "-u", "bind"]
There is a syntax issue in your
docker run -v
option. If you usedocker run -v name:/container/path
(even ifname
matches a local file or directory) it mounts a named volume over your configuration directory. You want the host content, and you need-v /absolute/host/path:/container/path
syntax (the host path must start with/
). So (on Linux/MacOS):In your image you're trying to
COPY
in the config file. This could work also; but it's being hidden by the volume mount, and also rendered ineffective by theVOLUME
statement. (The most obvious effect ofVOLUME
is to prevent subsequent changes to the named directory; it's not required to mount a volume later.)If you delete the
VOLUME
line from the Dockerfile, it should also work to run the container without the-v
option at all. (But if you'll have different DNS configuration on different setups, this probably isn't what you want.)