![我是否应该使用卷或绑定挂载来避免为每个应用程序配置文件更改构建新的 Docker 映像?](https://linux22.com/image/793972/%E6%88%91%E6%98%AF%E5%90%A6%E5%BA%94%E8%AF%A5%E4%BD%BF%E7%94%A8%E5%8D%B7%E6%88%96%E7%BB%91%E5%AE%9A%E6%8C%82%E8%BD%BD%E6%9D%A5%E9%81%BF%E5%85%8D%E4%B8%BA%E6%AF%8F%E4%B8%AA%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%9B%B4%E6%94%B9%E6%9E%84%E5%BB%BA%E6%96%B0%E7%9A%84%20Docker%20%E6%98%A0%E5%83%8F%EF%BC%9F.png)
我正在使用包含这些行的 Dockerfile 在 Docker 容器中(在 Linux VM 中)运行 bind9。
COPY configuration/named.conf /var/lib/bind/
COPY configuration/tzzz.yo.zone /var/lib/bind/
COPY configuration/10.168.192.in-addr.arpa /var/lib/bind/
COPY configuration/named.conf.options /var/lib/bind/
效果很好。没有抱怨。没有遗憾……除了每当我需要更改 DNS 记录时,我都需要构建新映像。对于需要频繁更新配置文件的应用程序,哪个选项最好,卷还是挂载?性能不是问题。我正在尝试简化更改过程。
或者也许我应该在构建图像时创建卷,然后在运行时绑定安装它们。可能。
我还没有很好地从心理上将 Dockerfile 的构建和配置与基于镜像运行容器的语法区分开来。
答案1
分离配置和代码。
配置应该放在卷中。图像应该一般的考虑动态更新的情况——如果这些更新被写入图像,它们将在图像升级时丢失。