我有问题,不确定如何解决。我有一个jenkis管道,该管道使用一些映像(在同一管道上)推送到Azure注册表来创建一个Azure容器实例。现在,我需要将Docker容器映像推送到注册表中,但需要对/ etc / hosts文件进行修改。 我尝试过:
RUN sed -i '$ a 172.x.x.x host.domain.com ' /etc/hosts
和
RUN echo >> 172.x.x.x host.domain.com /etc/hosts
在plepleine中出现错误:
1msed: can't move '/etc/hostsJCkFPo' to '/etc/hosts': Resource busy
我同意在构建阶段无法手动执行此操作,因此我搜索并调查了结果,使用“
-添加主机
”即可实现。 问题是我不知道如何在jenkins文件中执行此操作。我尝试在内部jenkins文件中添加以下内容(仅添加了docker build的一部分):
def imageNametom = 'repo.azurecr.io/container-tomcat'
def imageNameTagged = imageNametom + ':' + env.BUILD_NUMBER
docker.build("${imageNameTagged}" , "--add-host=host.domain.com:172.x.x.x").
但出现以下错误:
docker build -t repo.azurecr.io/container-tomcat:6 --add-host=host.domain.com:172.x.x.x
invalid argument "host.domain.com" for "--add-host" flag: bad format for add-host: "host.domain.com"
如何将其添加到/ etc / hosts文件中?因此从该映像创建的容器都具有该主机文件。
谢谢
答案 0 :(得分:0)
在Docker映像构建阶段您将没有IP和域名 只有从docker映像创建容器后,您才能获得此信息
所以,我的建议是使用Azure解决方案模板,该模板允许您在创建映像后调用脚本
这里是一个示例,它确实在/etc/hosts
发布后修改了VM
基于docker镜像
您可以在此处找到更多Azure解决方案模板的示例 https://github.com/Azure/azure-quickstart-templates