Docker

shadow7256
Уже с Приветом
Posts: 6001
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Docker

Post by shadow7256 » 15 Nov 2018 16:11

Следуя модным трендам, наше начальство тоже теперь начало ковыряться в Докере (Docker for Windows). Ну понятно дело и меня заставили. Вот у меня вопрос такой.. Есть у меня простая база данных. Мне нужно ее запихать в докер image. База будет в ms sql server express. Следовательно первая строчка в dockerfile :

FROM microsoft/mssql-server-windows-express

сам microsoft/mssql-server-windows-express зависит от Windows Server Core.

В итоге размер моего image получается примерно 14Gb 8O

Ну и нах нужен такой файл? Потом его выкладывать в репозиторий, а клиенту говорить "ну вы вот скачайте этот файлик размером 14 гигов, это и будет ваше приложение" :-)

Может я что не так делаю?

shadow7256
Уже с Приветом
Posts: 6001
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Docker

Post by shadow7256 » 15 Nov 2018 16:17

ptun wrote:
15 Nov 2018 04:17
Нах не нужно. На последних 4 местах моей работы, включая нынешнее, докер используется как презерватив. Достал, поелозил, выбросил. Отличная штука для тестирования, сборок и прочей такой фигни. Но на продакшене не используется.
как по мне то я согласен на все 100

User avatar
John Smith
Уже с Приветом
Posts: 1223
Joined: 04 Oct 2006 23:30
Location: DC Metro Area

Re: Docker

Post by John Smith » 15 Nov 2018 16:52

shadow7256 wrote:
15 Nov 2018 16:17
ptun wrote:
15 Nov 2018 04:17
Нах не нужно. На последних 4 местах моей работы, включая нынешнее, докер используется как презерватив. Достал, поелозил, выбросил. Отличная штука для тестирования, сборок и прочей такой фигни. Но на продакшене не используется.
как по мне то я согласен на все 100
Ну амазон же предлагает ECS и Fargate юным любителям докера - вполне себе продакшен левел сервисы.

User avatar
valchkou
Уже с Приветом
Posts: 3173
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: Docker

Post by valchkou » 15 Nov 2018 17:08

shadow7256 wrote:
15 Nov 2018 16:11
Следуя модным трендам, наше начальство тоже теперь начало ковыряться в Докере (Docker for Windows). Ну понятно дело и меня заставили. Вот у меня вопрос такой.. Есть у меня простая база данных. Мне нужно ее запихать в докер image. База будет в ms sql server express. Следовательно первая строчка в dockerfile :

FROM microsoft/mssql-server-windows-express

сам microsoft/mssql-server-windows-express зависит от Windows Server Core.

В итоге размер моего image получается примерно 14Gb 8O

Ну и нах нужен такой файл? Потом его выкладывать в репозиторий, а клиенту говорить "ну вы вот скачайте этот файлик размером 14 гигов, это и будет ваше приложение" :-)

Может я что не так делаю?
а без докера каков размер файла который качает ваш клиент?

User avatar
Prosche
Уже с Приветом
Posts: 7956
Joined: 08 Nov 2004 12:24
Location: GA

Re: Docker

Post by Prosche » 15 Nov 2018 18:23

shadow7256 wrote:
15 Nov 2018 16:11
Следуя модным трендам, наше начальство тоже теперь начало ковыряться в Докере (Docker for Windows). Ну понятно дело и меня заставили. Вот у меня вопрос такой.. Есть у меня простая база данных. Мне нужно ее запихать в докер image. База будет в ms sql server express. Следовательно первая строчка в dockerfile :

FROM microsoft/mssql-server-windows-express

сам microsoft/mssql-server-windows-express зависит от Windows Server Core.

В итоге размер моего image получается примерно 14Gb 8O

Ну и нах нужен такой файл? Потом его выкладывать в репозиторий, а клиенту говорить "ну вы вот скачайте этот файлик размером 14 гигов, это и будет ваше приложение" :-)

Может я что не так делаю?
Я не гуру докера, только учусь, но мне не понятно, зачем засовывать базу в образ? Изначально странный посыл.
Ок, если очень надо, я бы сделал так:
FROM мс образ с сикуэл.
ADD моя база

А вообще подмаунтил бы базу к образу, разве клиенту не нужно сохранять изменения в ней? Она типа рид онли? Создавать свои образы имхо зло, потому что стандартный образ типа мс кор скорее всего на машине уже есть.

shadow7256
Уже с Приветом
Posts: 6001
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Docker

Post by shadow7256 » 15 Nov 2018 19:12

valchkou wrote:
15 Nov 2018 17:08
shadow7256 wrote:
15 Nov 2018 16:11
Следуя модным трендам, наше начальство тоже теперь начало ковыряться в Докере (Docker for Windows). Ну понятно дело и меня заставили. Вот у меня вопрос такой.. Есть у меня простая база данных. Мне нужно ее запихать в докер image. База будет в ms sql server express. Следовательно первая строчка в dockerfile :

FROM microsoft/mssql-server-windows-express

сам microsoft/mssql-server-windows-express зависит от Windows Server Core.

В итоге размер моего image получается примерно 14Gb 8O

Ну и нах нужен такой файл? Потом его выкладывать в репозиторий, а клиенту говорить "ну вы вот скачайте этот файлик размером 14 гигов, это и будет ваше приложение" :-)

Может я что не так делаю?
а без докера каков размер файла который качает ваш клиент?
без докера у нас обычный инстальник размером 70Мб.

shadow7256
Уже с Приветом
Posts: 6001
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Docker

Post by shadow7256 » 15 Nov 2018 19:18

Prosche wrote:
15 Nov 2018 18:23
А вообще подмаунтил бы базу к образу, разве клиенту не нужно сохранять изменения в ней? Она типа рид онли? Создавать свои образы имхо зло, потому что стандартный образ типа мс кор скорее всего на машине уже есть.
ситуация такая. Есть веб приложение, которое использует базу данных. Решили это все дело запихать в контейнер. Сделали два images - в одном база данных, в другом - веб приложение. Билдится все через docker-compose. Имидж веб приложения зависит от имиджа базы данных.

version: "3"
services:
db:
build: ./sqlexpress
ports:
- 1444:1433

app:
build: ./app
ports:
- 1234:1234
depends_on:
- db
tty: true

В итоге получили два имиджа - один размером 14 гигов (там где база данных), второй - 4 гига (там где веб приложение).

Запускаем через docker-compose up/down. Запускается и работает нормально... но.. 18 гигов для двух имиджей?

да нахер это надо когда наш обычный инстальник весит 70 мегов. Ну да клиенту надо будет самому поставить базу данных перед этим ну и что?

мне непонятен смысл этих контейнеров..

XAOC
Уже с Приветом
Posts: 1461
Joined: 26 Jan 2006 20:42
Location: Minsk -> MD, US

Re: Docker

Post by XAOC » 15 Nov 2018 20:07

shadow7256 wrote:
Prosche wrote:
15 Nov 2018 18:23
А вообще подмаунтил бы базу к образу, разве клиенту не нужно сохранять изменения в ней? Она типа рид онли? Создавать свои образы имхо зло, потому что стандартный образ типа мс кор скорее всего на машине уже есть.
ситуация такая. Есть веб приложение, которое использует базу данных. Решили это все дело запихать в контейнер. Сделали два images - в одном база данных, в другом - веб приложение. Билдится все через docker-compose. Имидж веб приложения зависит от имиджа базы данных.

version: "3"
services:
db:
build: ./sqlexpress
ports:
- 1444:1433

app:
build: ./app
ports:
- 1234:1234
depends_on:
- db
tty: true

В итоге получили два имиджа - один размером 14 гигов (там где база данных), второй - 4 гига (там где веб приложение).

Запускаем через docker-compose up/down. Запускается и работает нормально... но.. 18 гигов для двух имиджей?

да нахер это надо когда наш обычный инстальник весит 70 мегов. Ну да клиенту надо будет самому поставить базу данных перед этим ну и что?

мне непонятен смысл этих контейнеров..
18 гигов скачаются только 1 раз (так же как и «Ну да клиенту надо будет самому поставить базу данных перед этим ну и что?»). Дальше при обновлении приложения будут скачиваться только изменившиеся слои имиджа.


Sent from my iPhone using Tapatalk

SashaKR
Уже с Приветом
Posts: 486
Joined: 03 Sep 2000 09:01
Location: Irvine, CA

Re: Docker

Post by SashaKR » 15 Nov 2018 20:26

shadow7256 wrote:
15 Nov 2018 16:11
Следуя модным трендам, наше начальство тоже теперь начало ковыряться в Докере (Docker for Windows). Ну понятно дело и меня заставили. Вот у меня вопрос такой.. Есть у меня простая база данных. Мне нужно ее запихать в докер image. База будет в ms sql server express. Следовательно первая строчка в dockerfile :

FROM microsoft/mssql-server-windows-express

сам microsoft/mssql-server-windows-express зависит от Windows Server Core.

В итоге размер моего image получается примерно 14Gb 8O

Ну и нах нужен такой файл? Потом его выкладывать в репозиторий, а клиенту говорить "ну вы вот скачайте этот файлик размером 14 гигов, это и будет ваше приложение" :-)

Может я что не так делаю?
реляционная база в production на докере - это из серии обезьяна с гранатой..выползают ReplicationController, StatefulSets и прочие матерные слова.. докер не для баз данных придумывался..

kostik78
Уже с Приветом
Posts: 1820
Joined: 17 May 2007 14:07

Re: Docker

Post by kostik78 » 15 Nov 2018 20:38

Данные куда SQL пишет не должны быть на файловой системы контейнера. Они должны быть подключены как external volume. Иначе тут несколько проблем:
1) все что сохранено на файловой системе контейнера во время работы будет утеряно после удаления контейнера
2) увеличение размера файловой системы контейнера сделано пессимистично, то есть будет переодически сильно торомозить на записи есть нужно делать resize.
3) Ну и image будет включать данные базы на момент построения image

alex_127
Уже с Приветом
Posts: 1652
Joined: 29 Mar 2000 10:01
Location: Kirkland,WA

Re: Docker

Post by alex_127 » 15 Nov 2018 20:41

убирает вопросы а какую базу данных? а как на вопросы отвечать? ой, у меня уже одна стоит, можно к ней подключить?
короче отвечает веяниям партии - чтобы даже идиот смог запустить.
ну а поскольку в продакшен все компьютеры идиоты то это помогает тоже.
а относительно гранат - они бесплатно с любой базой данных. its a gift from us.

shadow7256
Уже с Приветом
Posts: 6001
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Docker

Post by shadow7256 » 15 Nov 2018 20:46

SashaKR wrote:
15 Nov 2018 20:26
реляционная база в production на докере - это из серии обезьяна с гранатой..выползают ReplicationController, StatefulSets и прочие матерные слова.. докер не для баз данных придумывался..
То есть допустим запихать ASP.NET MVC + Sql Server приложение в контейнер не стоит?

shadow7256
Уже с Приветом
Posts: 6001
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Docker

Post by shadow7256 » 15 Nov 2018 20:47

kostik78 wrote:
15 Nov 2018 20:38
Данные куда SQL пишет не должны быть на файловой системы контейнера.
вы про какие данные говорите?

shadow7256
Уже с Приветом
Posts: 6001
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Docker

Post by shadow7256 » 15 Nov 2018 20:48

SashaKR wrote:
15 Nov 2018 20:26
докер не для баз данных придумывался..
зачем тогда сделали все эти образы с Sql server express?

kostik78
Уже с Приветом
Posts: 1820
Joined: 17 May 2007 14:07

Re: Docker

Post by kostik78 » 15 Nov 2018 21:43

shadow7256 wrote:
15 Nov 2018 20:47
kostik78 wrote:
15 Nov 2018 20:38
Данные куда SQL пишет не должны быть на файловой системы контейнера.
вы про какие данные говорите?
Ну например у Mysql data folder. Место куда пишет MySQl server данные. Тоже кстати относится к логам.

adda_
Уже с Приветом
Posts: 10708
Joined: 22 Jul 2006 20:19

Re: Docker

Post by adda_ » 15 Nov 2018 22:13

В общем еще одна технология, ориентированная на то чтобы сделать быстро, кинуть в продакшен а потом, так же быстрь и с песнями, патчить баги, коих по причине быстроты создания, было сделано немеренное количество.

SashaKR
Уже с Приветом
Posts: 486
Joined: 03 Sep 2000 09:01
Location: Irvine, CA

Re: Docker

Post by SashaKR » 15 Nov 2018 22:18

adda_ wrote:
15 Nov 2018 22:13
В общем еще одна технология, ориентированная на то чтобы сделать быстро, кинуть в продакшен а потом, так же быстрь и с песнями, патчить баги, коих по причине быстроты создания, было сделано немеренное количество.
причём зачастую не application level баги, а container..
https://thehftguy.com/2016/11/01/docker ... f-failure/
статья, правда, немного старовата, за 2 года стало, думаю, получше

kostik78
Уже с Приветом
Posts: 1820
Joined: 17 May 2007 14:07

Re: Docker

Post by kostik78 » 16 Nov 2018 04:13

SashaKR wrote:
15 Nov 2018 22:18
adda_ wrote:
15 Nov 2018 22:13
В общем еще одна технология, ориентированная на то чтобы сделать быстро, кинуть в продакшен а потом, так же быстрь и с песнями, патчить баги, коих по причине быстроты создания, было сделано немеренное количество.
причём зачастую не application level баги, а container..
https://thehftguy.com/2016/11/01/docker ... f-failure/
статья, правда, немного старовата, за 2 года стало, думаю, получше
Почитал, много из написаного - правда и уже давно устранено.

В целом человек жалуется на:
а) Не разобрались толком с новым продуктом и огребли много проблем (что в принципе действительно для любого сложного продукта)
б) Ссылки на отказ использовать докера девелоперами выглядят тоже из раздела: нам эта хрень не нужна мы и так поживем
Мое ИМХО на статью ;)

P.S. Я никогда не слышал что есть какие то специфичные проблемы в докере что мешают нормально работать Erlang.

User avatar
M. Ridcully
Уже с Приветом
Posts: 8567
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: Docker

Post by M. Ridcully » 16 Nov 2018 05:28

adda_ wrote:
15 Nov 2018 22:13
В общем еще одна технология, ориентированная на то чтобы сделать быстро, кинуть в продакшен а потом, так же быстрь и с песнями, патчить баги, коих по причине быстроты создания, было сделано немеренное количество.
Вот прям приятно послушать специалиста - взвешенно, авторитетно, аргументированно. :D
Don’t Tread on Me

Oleg-NY
Уже с Приветом
Posts: 1906
Joined: 16 Jul 2004 00:32
Location: NY, NY

Re: Docker

Post by Oleg-NY » 16 Nov 2018 08:12

Возвращаясь к напечатанному: так почему все-таки Docker и контейнеры это не VM в общем случае?
Это что, типа снобизм такой? ))
Какая разница для апликации что именно виртуализируется, железо или ядро, чтобы называться VM?

User avatar
Вячеслав Викторович
Уже с Приветом
Posts: 3984
Joined: 13 Feb 2016 18:50
Location: Кемерово

Re: Docker

Post by Вячеслав Викторович » 16 Nov 2018 14:12

Oleg-NY wrote:
16 Nov 2018 08:12
Возвращаясь к напечатанному: так почему все-таки Docker и контейнеры это не VM в общем случае?
Это что, типа снобизм такой? ))
Какая разница для апликации что именно виртуализируется, железо или ядро, чтобы называться VM?
разница в зависимостях при создании имиджей. Берешь имидж jdk-8, наследуешь в имидж скажем jboss 7.1, имидж jboss наследуюешь в имидж своей апликухи.
Надо пропатчить jdk, пропатчил имидж jdk, всё остальное, что его унаследовало пропатчится тоже., то самое с jboss например и т.д.
ѧковебратеебилежѧ

kostik78
Уже с Приветом
Posts: 1820
Joined: 17 May 2007 14:07

Re: Docker

Post by kostik78 » 16 Nov 2018 15:09

Oleg-NY wrote:
16 Nov 2018 08:12
Возвращаясь к напечатанному: так почему все-таки Docker и контейнеры это не VM в общем случае?
Это что, типа снобизм такой? ))
Какая разница для апликации что именно виртуализируется, железо или ядро, чтобы называться VM?
В случае VM идет полная виртуализация создается полная эммуляция - CPU, Memory и всей остальной железной подяги. По этой причине можно в VM подымать winodws в линук и наборот ибо hypervisor может эмулировать систему полностью.

Контейнеры это не виртуализация. Контейнер это обычный системный процесс который изолирован от остальных с помощью cgroups, на него наложены квоты, создан fake root (chroot). Все контейнеры шарять ядро хоста. Соотвественно нельзя запустить Windows в контейнере.

kostik78
Уже с Приветом
Posts: 1820
Joined: 17 May 2007 14:07

Re: Docker

Post by kostik78 » 16 Nov 2018 15:15

Вячеслав Викторович wrote:
16 Nov 2018 14:12
Oleg-NY wrote:
16 Nov 2018 08:12
Возвращаясь к напечатанному: так почему все-таки Docker и контейнеры это не VM в общем случае?
Это что, типа снобизм такой? ))
Какая разница для апликации что именно виртуализируется, железо или ядро, чтобы называться VM?
разница в зависимостях при создании имиджей. Берешь имидж jdk-8, наследуешь в имидж скажем jboss 7.1, имидж jboss наследуюешь в имидж своей апликухи.
Надо пропатчить jdk, пропатчил имидж jdk, всё остальное, что его унаследовало пропатчится тоже., то самое с jboss например и т.д.
Не совсем так. Если Вы не перестроили jboss после перестройки jdk8 image, jboss имадж будет все еще ссылаться на старый layer of jdk8 image и использовать не пропаченый jdk image. То бишь для патчинга потребуется перестройка всего дерева, но фактически будет перестроен jdk8 image, а все остальные обновлять links to base image. Ничего автоматически не происходит, к сожаленью или счастью ;)

User avatar
Prosche
Уже с Приветом
Posts: 7956
Joined: 08 Nov 2004 12:24
Location: GA

Re: Docker

Post by Prosche » 16 Nov 2018 16:43

kostik78 wrote:
16 Nov 2018 15:09
Oleg-NY wrote:
16 Nov 2018 08:12
Возвращаясь к напечатанному: так почему все-таки Docker и контейнеры это не VM в общем случае?
Это что, типа снобизм такой? ))
Какая разница для апликации что именно виртуализируется, железо или ядро, чтобы называться VM?
В случае VM идет полная виртуализация создается полная эммуляция - CPU, Memory и всей остальной железной подяги. По этой причине можно в VM подымать winodws в линук и наборот ибо hypervisor может эмулировать систему полностью.

Контейнеры это не виртуализация. Контейнер это обычный системный процесс который изолирован от остальных с помощью cgroups, на него наложены квоты, создан fake root (chroot). Все контейнеры шарять ядро хоста. Соотвественно нельзя запустить Windows в контейнере.
Насколько я понимаю все вышесказанное справедливо для *никс систем, докер на винде требует виртуализации, поэтому там используются или ХайперВи или ВиБокс (ранее). А так же поэтому на винде имиджи тяжеленные и медленные.

Oleg-NY
Уже с Приветом
Posts: 1906
Joined: 16 Jul 2004 00:32
Location: NY, NY

Re: Docker

Post by Oleg-NY » 16 Nov 2018 17:29

kostik78 wrote:
16 Nov 2018 15:09
Oleg-NY wrote:
16 Nov 2018 08:12
Возвращаясь к напечатанному: так почему все-таки Docker и контейнеры это не VM в общем случае?
Это что, типа снобизм такой? ))
Какая разница для апликации что именно виртуализируется, железо или ядро, чтобы называться VM?
В случае VM идет полная виртуализация создается полная эммуляция - CPU, Memory и всей остальной железной подяги. По этой причине можно в VM подымать winodws в линук и наборот ибо hypervisor может эмулировать систему полностью.

Контейнеры это не виртуализация. Контейнер это обычный системный процесс который изолирован от остальных с помощью cgroups, на него наложены квоты, создан fake root (chroot). Все контейнеры шарять ядро хоста. Соотвественно нельзя запустить Windows в контейнере.
Это все как бы понятно. Вопрос был не про технику, а в принципе тем более, что, как было замечено выше, технология реализации контейнеров под линухом и виндами сильно разная.
Т.е. в "вину" контейнерам ставится невозможность исполнять чужеродную ОС. Так? Но это ведь не было самоцелью виртуализации как таковой? Насколько я понимаю, целью было разделение ресурсов и изоляция приложения или группы приложений, в конечном итоге. То, что таким приложением может быть сама ОС это, так сказать, побочный эффект.
Вячеслав Викторович wrote:
16 Nov 2018 14:12
разница в зависимостях при создании имиджей. Берешь имидж jdk-8, наследуешь в имидж скажем jboss 7.1, имидж jboss наследуюешь в имидж своей апликухи.
Надо пропатчить jdk, пропатчил имидж jdk, всё остальное, что его унаследовало пропатчится тоже., то самое с jboss например и т.д.
Опять же, разница чисто технологическая с точки зрения администрирования. Сдается мне, что это - чисто вопрос стереотипов. Никто же не возмущается когда Java VM носит столь гордое имя! ))

Return to “Работа и Карьера в IT”