2015-11-19 2 views
2

Чтение this question, я понял, что контейнеры используют базовое изображение (например, ubuntu) для корневой файловой системы. Теперь мой вопрос: если необходимо загрузить базовое изображение, если у меня есть точно такая же ОС (например, ubuntu 14.04).Может ли docker использовать файловую систему хоста вместо изображения?

Является ли это базовым изображением избыточным?

ответ

1

Во-первых, если запустить сервис в этом контейнере статически (как Go application), вы могли бы COPY that app in a "scratch" container (который является empty one! Нет ОС на всех)

Во-вторых, приложение в контейнере может сделать только system calls к главному ядру, он не видит хозяин файловой системы (кроме того, что устанавливается по объему)

Основания изображения есть, чтобы гарантировать, что среда выполнение будет воспроизводимой: любой пользователь вызова (динамическое связывание) будет делать то же самое ОС (базовое изображение), даже если вы обновили или обновили свою базовая ОС.

И, наконец, базовое изображение «ubuntu» не совпадает с фактической ОС Ubuntu: это компактное подмножество (корневая файловая система без графической части X-11) и используется докере с помощью UnionFS, как один из слоев блоков диска внутри контейнера.