
У меня есть несколько контейнеров docker, которые должны получать доступ к общему PostgreSQL, запущенному на хосте Gentoo. Это работает хорошо, если докеризованные приложения подключаются к базе данных, используя публичный IP хоста.
Однако я хотел бы немного разъединить эти два понятия.используя дополнительный частный IP на обратной петлевместо публичного IP-адреса укажите 10.172.17.1.
Я не уверен, что нужно добавить в /etc/conf.d/net, и поскольку это удаленный ящик, к которому у меня нет физического доступа, я немного колеблюсь, просто играясь. Может быть, у кого-то есть подсказка для меня?
Большое спасибо!
решение1
Я сам догадался:
Можно добавить config_lo 10.172.17.1/32
в /etc/conf.d/net и затем назначить этот дополнительный IP, перезапустив службу net.lo с помощью rc-service net.lo restart
. Однако... это не сохранится после следующей перезагрузки.
На сегодняшний день Gentoo не запускает службу net.lo для запуска loopback, а использует отдельный скрипт /etc/init.d/loopback. Скрипт использует ifconfig
для выполнения своей работы, IP-адреса жестко прописаны. Патчить сам скрипт, безусловно, будет плохой идеей.
Но поскольку дополнительный IP-адрес нужен только после запуска Docker-контейнеров, его может добавить локальная служба:
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