我是一个为开发人员提供Docker图像的基础设施管理员。
我创建了“A”图像,然后告诉Docker运行命令是
docker run --add-host=a-lic:10.0.0.1 --add-host=b-lic:10.0.0.2 A
每个开发人员要求我,请删除--add-host选项,因为它很长。所以我想编辑/etc/hosts文件时,docker构建如果可能的话。
我发现docker build --add-host
选项是从17.04新创建的,但它没有按我的预期工作。
有人说--add-host选项只在构建映像时使用,另一个人说--add-host选项将按以下方式工作(我的想法)。
docker build --add-host=a-lic:10.0.0.1 -t A .
docker run -it A
而docker的文档并不足以证明这一点。
$ docker build --help
Usage: docker build [OPTIONS] PATH | URL | -
Build an image from a Dockerfile
Options:
--add-host list Add a custom host-to-IP mapping (host:ip)
正确的是什么??
2条答案
按热度按时间pnwntuvh1#
这是一种设计(见https://github.com/moby/moby/issues/34078#issuecomment-314798584://github.com/moby/moby/pull/30383#issuecomment-314797629);构建期间的
--add-host
特征被设计为允许在构建期间覆盖主机,但是 * 不 * 将该配置持久化在映像中。如果它 * 会 * 持续在图像中;
google.com 123.123.123.123
会怎样?)可能的解决方案针对您的情况;
docker-compose.yml
给你的开发者,docker compose文件允许你指定启动一个容器时应该使用的所有选项,这样开发者就可以使用docker compose up
来启动容器,并设置所有他们需要设置的选项。ru9i0ody2#
还有另一种方法可以在这里工作,如果有点难看的话。这是针对Windows的,你可以很容易地在Linux上做同样的事情。
在
docker run
中传递环境变量,例如然后在你的Dockerfile的末尾,你有一个批处理文件或脚本在CMD运行你的应用程序,例如
将以下行添加到
app-start.bat
:如果需要,可以添加多个。