我知道 Docker 不希望我們編輯 /etc/hosts 檔案
- https://docs.docker.com/engine/reference/run/#managing-etchosts
- 在Docker中添加主機時如何修復只讀錯誤?
不過我還是很想。或者無論如何都非常接近它。我有一個作為 Docker 容器運行的 nginx 反向代理。作為構建程序的一部分,我想運行nginx -t以測驗 nginx.conf 檔案的有效性。不幸的是,conf 檔案指的是rest-service僅在運行時存在的主機(例如)(作為 Docker Swarm 或 Kubernetes DNS 決議的一部分)。
所以我想我可以做這樣的事情:
RUN cp -f /etc/hosts /etc/hosts.bak && \
echo "127.0.0.1 rest-service" >> /etc/hosts && \
nginx -t && \
cp -f /etc/hosts.bak /etc/hosts
基本上備份 nginx.conf 檔案,創建一個將決議為 localhost 的臨時檔案,運行 nginx 測驗,然后將真正的檔案復制回原位。不幸的是,這給出了一些可預測的錯誤:
/bin/sh: 1: cannot create /etc/hosts: Read-only file system
關于如何在構建程序中驗證 nginx.conf 檔案的任何聰明想法?
uj5u.com熱心網友回復:
沒關系......我不認為該--add-host引數適用于該build命令,或者如果它適用,主機修改會烘焙到影像中。結果證明它可以很好地滿足我的目的:
docker build -t ... --add-host rest-service:127.0.0.1 ...
在實體化的容器上,沒有添加的痕跡。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/315302.html
