我尝试构建一个包含外部文件的docker容器

我尝试构建一个包含外部文件的docker容器,docker,dns,dockerfile,docker-container,bind9,Docker,Dns,Dockerfile,Docker Container,Bind9,我试图创建一个带有bind9的docker容器,我想添加我的db.personal-domain.com文件,但是当我运行docker build然后运行docker run-tdp 53:53-v config:/etc/bind时,容器没有我的db.personal-domain.com文件。如何解决这个问题?谢谢 树结构 -DNS --Dockerfile --config ---db.personal-domain.com FROM ubuntu:20.04 RUN apt-get

我试图创建一个带有bind9的docker容器,我想添加我的db.personal-domain.com文件,但是当我运行
docker build
然后运行
docker run-tdp 53:53-v config:/etc/bind
时,容器没有我的db.personal-domain.com文件。如何解决这个问题?谢谢

树结构

-DNS
--Dockerfile
--config
---db.personal-domain.com
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"]
Dockerfile

-DNS
--Dockerfile
--config
---db.personal-domain.com
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"]
该语法创建了一个命名卷,名为
config
。看起来您想要一个主机卷指向当前目录中的路径,为此,您需要包含一个带前导斜杠的完全限定路径,例如,使用
$(pwd)
生成路径:

-v "$(pwd)/config:/etc/bind"
该语法创建了一个命名卷,名为
config
。看起来您想要一个主机卷指向当前目录中的路径,为此,您需要包含一个带前导斜杠的完全限定路径,例如,使用
$(pwd)
生成路径:

-v "$(pwd)/config:/etc/bind"

您的
docker run-v
选项中存在语法问题。如果使用
docker run-v name:/container/path
(即使
name
与本地文件或目录匹配),它也会在配置目录上挂载一个。您需要主机内容,并且需要
-v/absolute/host/path:/container/path
语法(主机路径必须以
/
开头)。因此(在Linux/MacOS上):

docker run-d-p53:53\
-v“$PWD:config:/etc/bind”\
我的/绑定图像
在您的图像中,您正试图
复制配置文件中的
。这也可以起作用;但是它被卷装载隐藏,并且被
volume
语句失效。(
最明显的效果是防止对命名目录进行后续更改;以后不需要装载卷。)


如果从Dockerfile中删除
行,则运行容器时应完全不使用
-v
选项。(但是如果您在不同的设置上有不同的DNS配置,这可能不是您想要的。)

您的
docker run-v
选项中存在语法问题。如果使用
docker run-v name:/container/path
(即使
name
与本地文件或目录匹配),它也会在配置目录上挂载一个。您需要主机内容,并且需要
-v/absolute/host/path:/container/path
语法(主机路径必须以
/
开头)。因此(在Linux/MacOS上):

docker run-d-p53:53\
-v“$PWD:config:/etc/bind”\
我的/绑定图像
在您的图像中,您正试图
复制配置文件中的
。这也可以起作用;但是它被卷装载隐藏,并且被
volume
语句失效。(
最明显的效果是防止对命名目录进行后续更改;以后不需要装载卷。)

如果从Dockerfile中删除
行,则运行容器时应完全不使用
-v
选项。(但如果在不同的设置上有不同的DNS配置,这可能不是您想要的。)