PDA

Показать полную графическую версию : Нужны ли действительно контейнеры Docker на Windows ?


__sa__nya
16-08-2020, 09:53
Доброе время суток. Решил поизучать технологию контейнеров для Docker, для Windows. В частности все эксперименты ставлю на Windows Server 2016 Std. И у меня в голове возникает 1 вопрос, на который я не могу найти аргументированные ответы: "А нафига вообще нужен этот Docker ?". Конечно, если почитать теорию ( что я делал перед заданием вопроса), то вроде все просто: "Как это зачем ? Docker существенно экономит ресурсы, т.к. по сравнению со средствами виртуализации, здесь VM полностью не стартует. Так же можно упаковать приложение в контейнер, его проще развернуть, запустить и т.д.". Это все я читал в теории, что я получил на практике:
1. Неудобство управления контейнерами. А именно:
- я не нашел как сделать так чтобы расположить нужные мне контейнеры в заданных расположениях
- неудобство запуска и подключения к контейнерам. Я ввожу docker attach ID_контейнера - и ничего не происходит минут 20. Почему не происходит подключение к уже запущенному контейнеру - непонятно. Нагрузки на компьютерв этот момент нет.
2. Неудобство просмотра ресурсов, которые используют контейнеры: диск, память и т.д.
3. Неудобство работы с контейнерами:
- я не нашел контейнера с графической оболочкой. Да и в принципе не нашел ответа на вопрос, есть ли контейнеры с графической оболочкой или нет
- 1 и тот же контейнер дублируется - т.е. вводишь docker ps -a и видишь для 1 предполагаемого контейнера несколько разных

В итоге лично я получаю какую-то кашу вместо удобного инструмента работы. И экономия ресурсов в моем случае явно не перевешивают эту кашу. Это если учесть что у того же Hyper V сейчас много инструментов и фишек по экономному расходованию ресурсов ( динамическая память, динамические диски, задание эталонной VM, на основе которой можно быстро "нашлепать" дочерних по отношению к ней VM).
Мой вопрос адресуется к Windows-админам, успешно применяющих Docker в своей среде/работе. Что в нем есть такого, что перевешивает все его видимые мной минусы, и действительно делает нужным его применение вместо виртуальных машин на том же Hyper V 2019 ?

Busla
16-08-2020, 12:16
Так же можно упаковать приложение в контейнер »
не "можно упаковать", а это основное назначение - доставка приложения вместе с настроенным окружением

расположить нужные мне контейнеры в заданных расположениях »
1) зачем?
2) это не имеет смысла, т.к. контейнеры многослойные; как правило, самые тяжёлые нижние слои у них будут общие

ввожу docker attach ID_контейнера - и ничего не происходит минут 20. Почему не происходит подключение к уже запущенному контейнеру - непонятно. »
либо контейнер кривой, либо вы что-то не то делаете

Неудобство просмотра ресурсов, которые используют контейнеры: диск, память и т.д. »
потребление ресурсов смотрят в системе мониторинга

я не нашел контейнера с графической оболочкой »
зачем?
нет таких контейнеров

1 и тот же контейнер дублируется - т.е. вводишь docker ps -a и видишь для 1 предполагаемого контейнера несколько разных »
намекаю: вы точно так же можете в Windows запустить несколько Блокнотов - это тоже баг?

что перевешивает все его видимые мной минусы »
просто ваши "минусы" - не минусы

Контейнеры - это средство доставки приложения. Внутренний или внешний разработчик готовит контейнер с приложением. Для запуска такого подготовленного приложения нужно только указать базовые параметры типа сетевого порта и места для хранения данных. В случае поставки приложения в виде традиционного дистрибутива нужно становить ОС; какие-то библиотеки типа Visual C redistributable, драйвер ODBC; установить само приложение, настроить его. Причём установка и настройка у каждого приложения происходит по-своему.

__sa__nya
17-08-2020, 07:56
1) зачем?
2) это не имеет смысла, т.к. контейнеры многослойные; как правило, самые тяжёлые нижние слои у них будут общие »
- Затем, что если запущено, например 10 контейнеров с SQL Server'ом, в котором предполагается подключить базы, то эту нагрузку необходимо распределить по разным дискам/RAID-массивам вместо одного.

потребление ресурсов смотрят в системе мониторинга »
Я сравниваю удобство Docker c Hyper-V. В Hyper-v все можно посмотреть в Hyper-V Manager. В Docker'e подобных инструментов, именно графических ( т.к. в графических инструментах данные читать гораздо удобнее) не нашел.

зачем?
нет таких контейнеров »

Затем что приложения бывают еще и графические, для работы которых нужен GUI-интерфейс. И мне нужно было понимать подходит ли Docker для графических приложений или нет. Получается что Docker не для графики.

намекаю: вы точно так же можете в Windows запустить несколько Блокнотов - это тоже баг? »
- Ну ОК, раз мы любим троллить, покажу наглядно что имею ввиду. Если я явно запущу несколько блокнотов - это конечно не баг. А если я явно запущу командой run ( не start) 3 раза контейнер, почему в списке вместо трех контейнеров вижу 10 ? Вот здесь можно намекнуть либо на баг, либо на очень странную логику работы, какую-то нелогичную:

https://a.radikal.ru/a31/2008/68/634d2527553f.jpg (https://radikal.ru)
- Busla, вопросы к вам:
1. Как давно вы используете Docker в Windows-среде
2. Сколько экземпляров контейнеров вы используете постоянно ( в явно запущенном виде) ?

__sa__nya
17-08-2020, 08:28
У кого еще какое мнение и опыт с Docker-контейнерами ?

Busla
17-08-2020, 13:11
если запущено, например 10 контейнеров с SQL Server'ом, в котором предполагается подключить базы, то эту нагрузку необходимо распределить по разным дискам/RAID-массивам вместо одного. »
теперь, понятно, о чём вы - это параметр --mount есть ещё близкий по смыслу --volume, но официальная позиция (https://docs.docker.com/storage/bind-mounts/#choose-the--v-or---mount-flag): "New users should use the --mount syntax."

В первую очередь это делается, чтобы при обновлении/замене контейнера не потерять данные внутри него. Как правило в полноценных учебных курсах этому уделяется специальное внимание. Попробуйте почитать книгу или посмотреть видеокурс. Методом тыка вы далеко не уедете.

В целом, запихивание БД в контейнер - сомнительный ход, больше подходящий для dev-окружения. Контейнеры больше про вычисления, а хранение данных для них - внешний сервис.

В Hyper-v все можно посмотреть в Hyper-V Manager.»
на счёт "всё" мне как-то сомнительно, но "управлялка" для контейнеров есть в Windows Admin Center. Но по-хорошему контейнеры нужно заводить в общую систему мониторинга.

Затем что приложения бывают еще и графические, для работы которых нужен GUI-интерфейс. И мне нужно было понимать подходит ли Docker для графических приложений или нет. »
Docker в первую очередь серверная технология и не подходит для графических приложений. Для разработчиков создающих серверные приложения с графическим интерфейсом приготовлен отдельный котёл в аду.

А если я явно запущу командой run ( не start) 3 раза контейнер, почему в списке вместо трех контейнеров вижу 10 ? »
лучше было бы листинг вставить текстом
Смотрите столбик CREATED, контейнер вы запустили два раза, а не три. А всё остальное вы создали ещё неделю тому назад.

Как давно вы используете Docker в Windows-среде »
видимо, начиная с релиза Docker for Windows
а какая разница, запущена в контейнере linux-версия 1с или windows-версия 1с? - что интерфейс, что результат - практически идентичный

Сколько экземпляров контейнеров вы используете постоянно ( в явно запущенном виде) »
Понимаю ваш ехидный вопрос. Единственным айтишником на организацию я последний раз был когда Docker не существовал даже в планах.
А то умопомрачительное количество контейнеров, что крутится на серверах организации - естественно не моя личная заслуга.

Charg
17-08-2020, 16:14
А что, докер как windows feature есть? Прикольно, надо будет поковырять...

Что в нем есть такого, что перевешивает все его видимые мной минусы, и действительно делает нужным его применение вместо виртуальных машин на том же Hyper V 2019 ? »
В этой теме всё сводится к вот этому вопросу, а точнее к предубеждениями из-за которых он возник. Предубеждение в том что есть вот контейнеры а есть виртуалки. У контейнеров свои плюсы-минусы, у виртуалок другие. Так вот - контейнеризация это НЕ замена и не конкурент виртуализации. Это разные инструменты применяемые для разных задач.

Докер Контейнеризация нужна для воспроизводимости - чтобы гарантировать что приложение всегда будет работать одинаково, как уже было упомянуто выше. Старый классический способ "дать" своё приложение своим клиентам или там коллегам в другой отдел состоял в том что вот тебе ехе-шник установщика, вот тебе мануал как настраивать софт, а ещё вот этот дополнительный софт установи чтоб моё приложение работало, всё это заворачиваем в архив и видаем админу, пусть разбирается.

В противовес этого сейчас даётся контейнер, внутри которого уже всё настроено, просто запускаешь и работает.
И, основным плюсом является то что оно работает гарантированно точно так же как и у всех других использующих тот же контейнер. Это значит что если в контейнере ошибка - у того мейнтейнера тоже есть эта ошибка. И он её найдёт и пофиксит. Больше не нужно никаких танцов с бубном типа а вот тут настрйоки проверь. А точно вот эта служба запущена? А вот в эту папку есть права на запись а то я забыл в мануале уточнить и прочее.

Вообще это инструмент, преимущества которого очевидны, во-первых, разработчикам (и смежным областям), при чем в больших объемах. Когда у тебя грубо говоря 3 виртуалки с серверной ОС и 10 приложений, который ты сам себе настраиваешь и пользуешься - оно и не нужно. А когда серверов десятки тысяч - уже совсем другое дело.

DJ Mogarych
17-08-2020, 22:02
В Docker'e подобных инструментов, именно графических ( т.к. в графических инструментах данные читать гораздо удобнее) не нашел. »
https://www.portainer.io/

__sa__nya
18-08-2020, 06:33
А что, докер как windows feature есть? Прикольно, надо будет поковырять... »
- Как компонента Windows - нет. Docker ставится командами powershell из одного из доступных репозиториев. Это именно для Windows Server. Для настольных Windows- систем - есть Docker Desktop.


Дополню свой изначальный вопрос еще одним: какие самые популярные Docker приложения на вашей практике ?

Busla
18-08-2020, 10:44
__sa__nya, что такое "Docker приложения"?

птичка0001
01-09-2020, 17:37
Docker приложенияВы случаем не имеете в виду следующее: приложение docker - это запускаемая команда и далее по тексту?




© OSzone.net 2001-2012