
我有一些 docker 容器,它們應該存取在 Gentoo 主機上運行的共用 PostgreSQL。如果 Docker 化的應用程式使用主機的公共 IP 連接到資料庫,那麼這種方法效果很好。
但是,我想稍微解耦一些事情透過在環回上使用額外的私人 IP比如說 10.172.17.1,而不是公共 IP。
我不確定需要添加到 /etc/conf.d/net 中,因為這是一個我沒有實體存取權限的遠端盒子,所以我有點猶豫要不要玩。也許有人給我提示?
多謝!
答案1
我自己弄清楚了:
可以新增config_lo 10.172.17.1/32
至 /etc/conf.d/net,然後透過使用 重新啟動 net.lo 服務來指派此附加 IP rc-service net.lo restart
。然而......這將無法在下次重新啟動後繼續存在。
截至目前,Gentoo 不再啟動 net.lo 服務來啟動環回,而是使用單獨的腳本 /etc/init.d/loopback。該腳本用於ifconfig
完成其工作,IP 是硬編碼的。修補腳本本身肯定是個壞主意。
但由於只有在 docker 容器啟動後才需要額外的 IP,因此可以透過本機服務新增:
cat "ip addr add 10.172.17.1/32 dev lo scope host" >/etc/local.d/docker_loopback.start
cat "ip addr del 10.172.17.1/32 dev lo scope host" >/etc/local.d/docker_loopback.stop
chmod a+x /etc/local.d/docker_loopback.*
現在重新啟動或僅執行啟動腳本,然後檢查結果:
/etc/local.d/docker_loopback.start
ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
valid_lft forever preferred_lft forever
inet 10.172.17.1/32 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever