我开发了一个spring boot应用程序并构建了一个docker镜像。为了让应用程序运行,我必须添加一个新行" 127.0.0.1:www.hostname.com"到/ etc / hosts。我想在运行docker image时自动进行此配置。我试过这个:
int main(void)
{
char str[50];
int n;
printf("Enter a string and a number\n");
scanf("%s %d", str, &n);
printf("string entered: %s, number: = %d", str, n );
return 0;
}
我的期望是:
www.hostname.com:8080 = 127.0.0.1:8080
但它不起作用。 请给出一些建议。感谢。
答案 0 :(得分:0)
如果您使用--hostname
运行容器,例如
docker run -d -ti --hostname myhost --name mytest ubuntu /bin/bash
您向容器的172.17.0.3 www.hostname.com
添加了一行/etc/hosts
,其中172.17.0.3
是容器本身的私有地址,因此它在内部从容器本身和docker docker解析它服务器也是。
如果您使用--add-host
运行容器,例如
docker run -d -ti --add-host www.hostname.com:127.0.0.1 --name mytest ubuntu /bin/bash
您向容器的127.0.0.1 www.hostname.com
添加了一行/etc/hosts
,因此它正在从容器本身内部解析www.hostname.com
到127.0.0.1
。
它起作用,至少在Linux上的Docker 1.13.0版本中。
否则,您可以使用sed
或CMD
中的其他替换命令或在docker run上覆盖命令来更改系统启动时容器的/ etc / hosts。