Как подавить docker-compose up сопоставление с диапазоном IP-адресов хоста (для нескольких экземпляров)?
Контекст: я ищучтобы запустить модульные тесты в Jenkins, где у нас есть механизм докера на главном и каждом ведомом устройствах.
Я хочу раскрутить несколько контейнеров для тестирования интеграции модулей и отключить их после.
Я хочу, чтобы несколько тестов могли одновременно запускать один и тот же файл компоновки Docker.
docker-compose -f "my-test-docker-compose.yml" -p "ab2de2f38c" up -d -t 100
и для второго выполнения:
docker-compose -f "my-test-docker-compose.yml" -p "34cd832b7" up -d -t 100
Я обнаружил, что первая сеть связывается с 0.0.0.0/ <порт>, что вызывает конфликты при повторном выполнении.
Cannot start service zookeeper: driver failed programming external connectivity on endpoint 34cd832b7_zookeeper_1 (c2b928530cfdc7aee17): Bind for 0.0.0.0:22181 failed: port is already allocated
Попытка добавления сети для каждой службы и наснизу, а затем создал сеть с docker network create
.Пока без кубиков.
В идеале нужно решение, которое не требует изменения файла docker-compose.yml, поскольку это дает тестерам бремя.
Есть ли способ подавить любоесопоставление между контейнерами и диапазоном IP-адресов хоста, а затем получение IP-адреса извне сети с использованием docker ps
и docker inspect
в сочетании.
Идеальным вариантом будет:
c, err := docker.New("my-test-docker-compose.yml")
//handle err
c.Up()
//connect to a service..
s, err := service1.New(c.GetSocket("serv:1234"))
//handle connection error
//do testing
c.Down()
Любойпредложения были бы идеальными.Может быть, единственные варианты - заново обработать каждый docker-compose.yml, чтобы удалить все внешние сопоставления сети, что является болезненным, или создать докер внутри докера, чтобы полностью изолировать сеть.Болезненно.
Любые предложения о том, как в значительной степени указать --network=none
, чтобы мы не получали привязки 0.0.0.0/, были бы хорошими.Я отмечаю, что в этой области есть докерская библиотека golang (libcompose), но, к сожалению, она больше не поддерживается.
Спасибо,
alex