gpt4 book ai didi

docker - sbt-native-packager docker:如何在/etc/hosts中添加条目

转载 作者:行者123 更新时间:2023-12-02 19:09:25 27 4
gpt4 key购买 nike

我正在使用sbt-native-packager的docker插件来构建Docker镜像。我希望我的镜像在/ etc / hosts中有一个附加条目。

我尝试了以下方法:

dockerCommands in Docker := dockerCommands.value.flatMap {
case cmd@Cmd("FROM", _) =>
List(Cmd("FROM", "anapsix/alpine-java")) ++ List(
Cmd("ENV", "JAVA_MIN_MEM", "1024m"),
Cmd("RUN", "echo 8.8.8.8 foo >> /etc/hosts")
)
}

不幸的是,它似乎不起作用。当我基于该镜像启动容器时,/ etc / hosts没有额外的条目。

看起来它实际上是在写文件,因为我尝试了以下操作:
....
Cmd("RUN", "echo 8.8.8.8 foo >> /etc/hosts; ping -c 4 foo")
....

我得到以下输出:
[info] Step 9/15 : RUN echo 8.8.8.8 foo >> /etc/hosts; ping -c 4 foo
[info] ---> Running in b6d7ba25f96f
[info] PING foo (8.8.8.8): 56 data bytes
[info] 64 bytes from 8.8.8.8: seq=0 ttl=37 time=5.521 ms
[info] 64 bytes from 8.8.8.8: seq=1 ttl=37 time=3.188 ms
[info] 64 bytes from 8.8.8.8: seq=2 ttl=37 time=6.012 ms
[info] 64 bytes from 8.8.8.8: seq=3 ttl=37 time=4.192 ms

因此,看起来修改后的/ etc / hosts已被覆盖!

正确的方法是什么?

最佳答案

文件/etc/hosts由Docker管理,不能作为构建镜像的一部分进行自定义。

如您所知,您可以使用RUN echo 8.8.8.8 foo > /etc/hosts; <some_command_requiring_custom_hosts_file>添加自定义条目。但是,此修改仅在执行此特定RUN命令期间可用。

如果在运行容器时需要自定义条目,请使用--add-hostdocker run参数(请参阅docs)。

通常,最佳实践是在Docker镜像中不包括配置详细信息。仅在运行容器时应用配置有助于使图像保持可移植性。

关于docker - sbt-native-packager docker:如何在/etc/hosts中添加条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42355382/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com