我正在尝试使用docker,使用区域文件的共享卷构建dockerbind9
我想在docker中使用centos构建bind9。在Dockerfile中,我安装了bind,并在安装过程中使用一些文件创建了/ var / named,但是当我使用/ var / named上的共享卷启动容器时(在该容器上我具有区域文件),/ var / named中的原始文件就消失了
FROM centos
RUN yum -y install bind -> after that, there are files in /var/named
但是当我使用以下方法启动容器时:
-v /path/to/zonefiles/folder:/var/named
容器无法启动,因为/ var / named中的原始文件已丢失 有什么建议如何克服这个问题?也许可以在“ docker build”期间使用共享卷?
答案 0 :(得分:0)
我对Bind9不熟悉,但是-v /path/to/zonefiles/folder:/var/named
参数在运行时在容器中的/ var / named处挂载了一个卷,以代替映像上的任何内容。在运行时将文件放在/ var / named中的唯一方法是,如果这些文件恰巧在运行时位于主机的/ path / to / zonefiles中。
您可能应该考虑将文件挂载到与/ var / named不同的位置。 -v /path/to/zonefiles/folder:/var/namedSomethingElse
。
答案 1 :(得分:0)
我假设您正在尝试将主机上/path/to/zonefiles/folder
中的本地文件添加到bind
中/var/named
生成的文件中。我能看到的唯一方法是自己合并文件夹。
如您所见,卷挂载将在挂载点覆盖文件系统。为了实现所需的功能,必须在创建新安装之前在安装点复制文件,并将它们与本地文件合并,以便在卷安装后它们仍然存在。
以下过程应完成此操作:
docker build -t bind .
docker run -d --name bind bind
docker cp bind:/var/named /path/to/zonefiles/folder
docker stop bind && docker rm bind
docker run -d --name bind -v /path/to/zonefiles/folder:/var/named bind
说明:
我相信这将完成您想要的行为。