如何在Docker镜像上进行特定于主机的自定义

让我用一个愚蠢的例子来解释我想要的:

在我执行“docker pull”将图像下载到主机之后,我想在此映像上创build一个文件/ etc / myname以获得此主机的确切名称。 因此,在此主机上运行此映像的所有容器都可以通过读取/ etc / myname来查找主机名。

另外,我希望文件/ etc / myname在这个主机上的所有包含内被共享。 我知道我可以很容易地在每个容器中创build这个文件,但这不是我想要的。

(这又是一个愚蠢的例子,我实际上并不需要存储主机名,我希望将大量的主机特定数据存储在共享文件中, 而不使用共享卷)。

我可以通过手动创build文件来做到这一点,其中$ dir是图像的最顶层:

dir=17024e41f8b6c958c5c9e60bffa8b6c8b2da5a1235b6e18085d5059f9602f605 echo $HOSTNAME > /var/lib/docker/aufs/diff/$dir/etc/myname 

但有没有这样做的黑客办法?

最简单的方法是使用共享卷,这是目前唯一的方法。 我假设你知道docker中的绑定安装,但是为了以防万一,我会在这里展示。

对于docker run命令,以及传递-v <volume name>:<path in container>也可以<path on host>:<path in container>传递<path on host>:<path in container> 。 所以你可以把你的元数据放在每个主机的同一个地方,然后绑定到容器中。