Я все еще смущен контейнерами Docker и изображениями - PullRequest
0 голосов
/ 18 октября 2018

Я знаю, что контейнеры - это форма изоляции между приложением и хостом (управляемый запущенный процесс).Я также знаю, что образы контейнеров - это, по сути, пакет для среды выполнения (надеюсь, я правильно понял).Что меня смущает, так это когда говорят, что изображение Docker не сохраняет состояние.Поэтому, если я создаю образ Docker с базой данных (например, PostgreSQL), не будут ли уничтожены все данные, когда я остановлю контейнер и перезапущу?Зачем мне использовать базу данных в контейнере Docker?

Мне также сложно понять LXC.На другой странице вопроса я вижу:

LinuX Containers (LXC) - это метод виртуализации на уровне операционной системы для запуска нескольких изолированных систем Linux (контейнеров) на одном управляющем хосте (хосте LXC)

Что это значит?Означает ли это, что у меня может быть несколько версий Linux, работающих на одном хосте, если хост поддерживает LXC?Что еще там?

1 Ответ

0 голосов
/ 23 июля 2019

LXC и Docker, оба совершенно разные.Но мы говорим, что оба они являются держателями контейнеров.

Существует два типа контейнеров:

1. Контейнеры приложений: основной девиз которых - предоставление зависимостей приложений. Это Docker Containers (Легкие контейнеры).Они запускаются как процесс на вашем хосте и получают все, что вы хотите.Они буквально не нуждаются ни в каком образе ОС / Boot Up .Они приходят и уходят в считанные секунды. Вы не можете запустить несколько процессов / сервисов внутри контейнера Docker .Если вы хотите, вы можете запустить несколько процессов внутри док-контейнера, но это трудоемко.Здесь ресурсы (ЦП, диск, память, ОЗУ) будут использоваться совместно.

2.Контейнеры системы: Это толстые контейнеры, это означает, что они тяжелые, для запуска самих образов ОС требуется в то же время они не такие тяжелые, как виртуальные машины, они очень похожи на виртуальные машины, но немного отличаются по архитектуре.

В этом, скажем, Ubuntu в качестве хост-машины, если у вас установлен LXCи сконфигурированный на вашем хосте Ubuntu, вы можете запустить Контейнер Centos, Ubuntu (с версией Differnet), RHEL, Fedora и любой вариант linux поверх хоста Ubuntu. Вы также можете запустить несколько процессов внутри константы LXC .Здесь также будет выполнено совместное использование ресурсов.

Итак, если у вас в одном контейнере LXC запущено огромное приложение, оно требует больше ресурсов, одновременно если в другом контейнере LXC работает другое приложение, которое требует меньше ресурсов.Контейнер с меньшими требованиями будет разделять ресурсы с контейнером с большей потребностью в ресурсах.

Ответ на ваш вопрос:

Так что если я создаю образ Docker сбаза данных (например, PostgreSQL), не будут ли уничтожены все данные, когда я остановлю контейнер и перезапущу?

Вы не создадите образ докера базы данных с некоторыми данными к нему (этоне рекомендуется).Вы запускаете / создаете контейнер из образа и присоединяете / монтируете к нему данные.

Таким образом, когда вы останавливаете / перезапускаете контейнер, данные никогда не будут потеряны, если вы присоедините эти данные к тому как этот том.находится где-то, кроме контейнера-докера (может быть, NFS-сервер или сам хост).

Означает ли это, что на одном хосте может работать несколько версий Linux, если хост поддерживает LXC?Что еще там?

Да, вы можете сделать это.Мы используем LXC Containers на нашем производстве.

...