В настоящее время я создаю образ докера для среды сборки C: он будет использоваться в качестве базового образа для цепочки инструментов CI, серверы сборки и разработчики смогут использовать эту же цепочку инструментов для создания образов прошивки.
Для этой среды сборки я должен использовать лицензионный компилятор. В настоящее время я использую пробную лицензию и сопоставляю файл лицензии с контейнером - он будет заменен подключением к серверу лицензий. В любом случае: мне нужно установить MAC-адрес контейнера, чтобы он работал.
Короче говоря: я создаю контейнер, используя:
docker run -it --rm --mac-address 78:4f:43:5c:25:a3 -v $(pwd):/project -v $(pwd)/license:/licenses builder:latest /bin/bash
В первый раз после запуска демона docker контейнер работает нормально, я могу просто cd
войти в проект, нажать make
и процесс сборки работает.
Как только я выйду из вышеприведенного контейнера, он удаляется, как и предполагалось: я хочу иметь возможность запускать этот контейнер в любое время, даже если бы я мог запустить его с помощью -d
(демон).
Проблема
Странная вещь заключается в том, что компилятор жалуется на неверную лицензию, как только я хочу воссоздать контейнер, используя ту же самую команду , то есть, если я выполню вышеупомянутую команду снова, без контейнеров работает в фоновом режиме (таким образом, без помех), компилятор не может проверить лицензию:
- [ок] Запустить Docker
- [ok] Создать контейнер для сборки (команда выше)
- [ok] Сборка в контейнере
- [ok] Выход из контейнера
- [ok] Создать контейнер для сборки (команда выше)
- [- FAIL-] Сборка в контейнере: ошибка лицензии
Я предполагаю, что это как-то связано с сетевым подключением: этот компилятор работает только онлайн, поэтому он проверяет правильность каждый раз, когда его вызывают. Для второго контейнера это не удалось.
Я могу обойти эту проблему, перезапустив Docker полностью. Это занимает много времени, поэтому это не совсем правильный подход.
Вопрос
Таким образом, мой вопрос: что именно происходит при повторном запуске демона docker, который может повлиять на мой контейнер? Я предполагаю, что сети докеров воссозданы, но это не должно иметь никакого влияния?
Трудно воссоздать эту проблему с помощью более простой демо-версии, поэтому ее немного сложно объяснить. Пока я проверил
ifconfig
выдает одинаковый вывод в обоих контейнерах (MAC-адрес o.k.)
docker inspect
только воссоздает хэши, хотя NetworkID (Networks> bridge> NetworkID) остается тем же, поэтому я проверил, могу ли я перезапустить docker network bridge
, но я не могу (также не может быть удален, так как предварительно определены)
- оба контейнера имеют доступ к интернету (
ping
работает)
Любой вклад приветствуется.
РЕДАКТИРОВАТЬ: Использование Docker для Mac
Docker version 18.09.2, build 6247962