Альпийские образы Docker полностью совместимы на хосте Ubuntu?
Существуют ли проблемы совместимости или известные ограничения при запуске образа Docker на основе Alpine на хосте Ubuntu?
Я понимаю, что Docker обеспечивает изоляцию на уровне процессов и что вызовы ресурсов компьютера выполняются через интерфейс cgroup. Но я задаюсь вопросом (и обеспокоен), существуют ли конкретные случаи или, возможно, даже языки, в которых этот тип установки (запуск контейнеров Alpine на хосте Ubuntu) будет проявлять проблемы во время выполнения, если вы не предпримете дополнительные шаги при настройке хост-машины.
Редактировать:
Я хочу попытаться улучшить мой вопрос...
Я понимаю, что Docker обеспечивает изоляцию, но интересно, есть ли утечки в изоляции? Если есть утечки, то, возможно, лучше запустить образ докера на хосте, который соответствует базовому образу, чтобы гарантировать, что странные ошибки времени выполнения не произойдут.
Чтобы быть более конкретным, приложения на некотором уровне требуют кода ядра и были построены с определенным ядром. Запуск этих приложений на хосте с другим ядром может привести к странным ошибкам во время выполнения.
Например, может ли случиться так, что запуск приложения x64 в контейнере Docker на хосте x86 приведет к плохим событиям?
3 ответа
До тех пор, пока на хост-машине установлена версия ядра Linux 3.10 или выше, с контейнером проблем не должно быть.
Вы можете увидеть эту ссылку для получения дополнительной информации о том, почему: Чем Docker отличается от обычной виртуальной машины?
Насколько я понимаю, Docker полностью совместим с дистрибутивами Linux выше определенного ядра. Все дистрибутивы Linux в основном используют одно и то же ядро, и именно здесь Docker Daemon взаимодействует с системой, поэтому все, что работает внутри контейнера, должно быть полностью в порядке, независимо от другого дистрибутива на хосте.
Если бы это было не так, то Докер действительно не был бы настолько полезен, как мне кажется.
Я лично запускал разные дистрибутивные контейнеры на разных хост-системах без проблем за последний год.
Проблемы могут возникнуть только в сценариях, которые намеренно нарушают изоляцию контейнерной системы, например, при так называемых запусках docker-in-docker, если они открывают некоторые части совершенно другой хост-системы для контейнерных приложений (в этом случае несовместимости в стандартной библиотеке C , например между Ubuntu и Alpinemusl
вызовут проблемы, как и между двумя разными версиями Ubuntu LTS с разнымиglibc
строит).