По умолчанию докер-компоуз всегда создает отдельную сеть типа мост, давая ей имя текущей директории с постфиксом _default. Чтобы дать определенное, можно либо определить системную переменную COMPOSE_PROJECT_NAME, либо указать имя проекта через ключ
Мы можем создаться также явно сети внутри компоуз-файла, и подключать сервисы к нескольким сетям одновременно.
В первой версии компоуза, когда мы линковали один контейнер к другому, это означало, что мы получали доступ ко второму по указанному имени и они соединялись в одну сеть. Но во 2-й версии, если сервисы не привязаны к одной сети явно, этого не произойдет, даже если они залинкованы.
docker-compose.yml
$ docker-compose --project-name myProject up -d
Мы можем создаться также явно сети внутри компоуз-файла, и подключать сервисы к нескольким сетям одновременно.
version: 2
services:
a:
image: some/img
networks:
- frontend
- backend
b:
image: other/img
networks:
- backend
c:
image: another/img
networks:
- frontend
networks:
frontend:
driver: bridge
backend:
driver: bridge
Присвоение псевдонимов для сервиса в разных сетях
Сервис может представляться под разными именами в разных сетях:
...
a:
image: some/img
networks:
frontend:
aliases:
- a_name_in_fe_network
backend:
aliases:
- a_name_in_be_network
...
Теперь к сервису в разных сетях нужно обращаться по раным указанным хостнеймам
В первой версии компоуза, когда мы линковали один контейнер к другому, это означало, что мы получали доступ ко второму по указанному имени и они соединялись в одну сеть. Но во 2-й версии, если сервисы не привязаны к одной сети явно, этого не произойдет, даже если они залинкованы.
Сервис может дать собственные имена другим сервисам в сетях, к которым он подключен
a:
image: some/img
networks:
- frontend
- backend
external_links:
- b:when_my_app_was_codding_dev_suggested_that_b_should_be_named_as_this_name_and_Idont_want_to_change_the_code
- c:and_c_expected_to_be_this_name_devop_is_lazy_and_dont_want_tochange_name_inside_the_code_of_a
Подколючение к уже существущей(созданной в ручную) сети
Допустим для чего-то нам нужно было создать сеть руками(допустим нам нужно развернуть кластер севисов, обслуживамых компоузом, на хосте, где работают контейнеры, которые подняты без компоуза).
Тогда в секции networks мы указываем, что сеть наружная(ее создавать не нужно, а попытаться ее найти и к ней подключиться)
$ docker network create --driver bridge superbridge
...
networks:
superbridge:
external: true
Или если нужно к ней обращаться в кластере, представленом компоузом, под другим именем
networks:
someservices_already_written_for_such_name:
external:
name: superbridge
Другое
Есть еще кучу всего связанного с сетью.Мы можем сервису в конкретной сети указать статический 4 или/и 6 ip-адреса.
Или в нашем кластере еще нужен внешний сервис, который не писали создатели нашего мульсервисного приложения, то мы можем какой-то внейший айпи представить под удобным для нас хостнеймом
extra_hosts:
- google.com:goo
- 52.64.175.16: nameconvertorservice
Также можем указать dns сервера и другое.
Комментариев нет:
Отправить комментарий