Pra*_*ash 86 hosts docker dockerfile
我想/etc/hosts在"docker build"期间更新我的文件.
我在Dockerfile中添加了以下行,但它既没有更新/etc/hosts文件也没有给出任何错误.
RUN echo "192.168.33.11 mynginx" >> /etc/hosts
Run Code Online (Sandbox Code Playgroud)
我需要更新/etc/hosts.任何人都可以建议吗?
Von*_*onC 121
使用更新版本的docker,可以使用docker-compose及其extra_hosts指令完成
添加主机名映射.
使用与docker run客户端--add-host参数相同的值(已应用于docker 1.8).
extra_hosts:
- "somehost:162.242.195.82"
- "otherhost:50.31.209.229"
Run Code Online (Sandbox Code Playgroud)
简而言之:/etc/hosts在运行容器时修改容器,而不是构建容器.
Shu*_*ngh 22
您无法使用echoin RUN步骤修改映像中的主机文件,因为当您从映像启动容器时,docker守护程序将维护文件(/ etc/hosts)及其内容(hosts条目).
但是以下可以用来实现相同的目的:
ENTRYPOINT ["/bin/sh", "-c" , "echo 192.168.254.10 database-server >> /etc/hosts && echo 192.168.239.62 redis-ms-server >> /etc/hosts && exec java -jar ./botblocker.jar " ]
Run Code Online (Sandbox Code Playgroud)
这里要注意的关键是使用exec命令作为docker文档建议.使用exec会使java命令成为容器的PID 1.Docker中断只会响应.
请参阅https://docs.docker.com/engine/reference/builder/#entrypoint
Bil*_*eng 16
我认为docker最近--add-host为docker build 添加了标志,这真的很棒.
[编辑]因此该功能于17.04.0-ce更新
有关如何使用更详细docker build与--add-host标志,请访问:https://docs.docker.com/edge/engine/reference/commandline/build/
小智 9
由于这仍然是Google的第一个答案,我将提供可能的解决方案.
从这里获取的命令令人惊讶地为我工作(Docker 1.13.1,Ubuntu 16.04):
docker exec -u 0 <container-name> /bin/sh -c "echo '<ip> <name> >> /etc/hosts"
Run Code Online (Sandbox Code Playgroud)
您可以在运行 docker 时使用以下命令
docker run [OPTIONS] --add-host example.com:127.0.0.1 <your-image-name>:<your tag>
在这里,我映射example.com到本地主机127.0.0.1及其工作。
小智 5
如果这对任何人都有用,那么HOSTALIASESenv 变量对我有用:
echo "fakehost realhost" > /etc/host.aliases
export HOSTALIASES=/etc/host.aliases
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
102356 次 |
| 最近记录: |