Давайте предположим, что я использую набор команд запуска командной строки CLI для создания целого окружения контейнеров, сетей (типа моста в моем случае) и подключения контейнеров к определенным сетям.
Все работает хорошо, пока я не хочу, чтобы на одной машине была только одна такая среда.
Но что, если я хочу иметь на той же машине среду, похожую на ту, которую я только что создал, но для другой цели (тестирование) у меня возникает проблема конфликтов имен, так как я не могу создать и запустить контейнеры и сети с одинаковым именем.
До сих пор я пытался запустить второе окружение так же, как и с первым, но с префиксом всех имен контейнеров и сетей.
Это работало, но имело недостаток: в приложении, которое выполняет все запросы к URI, были прерваны, так как они имели структуру
<scheme>://<container-name>:<port-number>
и приложению не удалось дозвониться до <prefix-container-name>
.
Чего я хочу добиться, так это иметь точную копию первой среды, работающей на том же компьютере, что и вторая среда, которую я мог бы использовать для выполнения тестов приложений и т. Д.
- Есть ли какая-либо концепция пространств имен или что-то подобное в Docker?
Команду, которую я мог бы использовать до запуска всех команд docker и т. Д., Которые я использую для создания среды, и у меня есть только два сценария bash, которые отличаются только командой namespace в начале?
- Может ли использование виртуальной машины, то есть Oracle Virtualbox, быть решением моей проблемы? Создать ВМ для второй среды? Разве это не излишество, добавит ли он дополнительный набор проблем?
- Возможно, существует какая-то команда
--hostname
для docker run
, которая позволит получить доступ к контейнеру из другого контейнера с использованием этого имени? Неудачный --hostname
дает возможность получить доступ к контейнеру только по этому имени из самого контейнера, но не из любого другого. Возможно, есть опция или команда, которая может создать псевдоним, виртуальный хост или любое другое волшебное имя, которое я мог бы добавить в URI приложений <scheme>://<magic-name>:<port-number>
, поэтому создание второй среды с разными контейнерами и именами сетей не вызовет проблем, если magic-name
доступен в сети окружения
- Мне нужна точная копия среды из-за тестов, которые я хочу запустить и проверить, не проваливаются ли они также на уровне зависимостей, я думаю, что это довольно простой сценарий из процесса непрерывной интеграции. Есть ли какие-то специальные решения с открытым исходным кодом для того, чего я хочу достичь? Я не использую docker composer, но использую bash-скрипт со всеми командами docker cli для запуска и запуска всего окружения.
Спасибо за вашу помощь.