1С в Windows docker контейнерах

0. 122 02.10.18 16:14 Сейчас в теме
Создаем Docker-контейнер для windows-версии 1C. Контейнеры позволяют подготовить рабочую среду на любой актуальной версии windows. Благодаря данной технологии можно беспрепятственно запускать требуемую версию сервера 1С или несколько серверов различных версий на одном сервере.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. zeegin 96 02.10.18 16:33 Сейчас в теме
2. lishniy 122 02.10.18 16:52 Сейчас в теме
(1) Когда начал копать в эту сторону, с сервера 1C на Linux нельзя было подключится к MsSQL (честно говоря не знаю как сейчас с этим дела обстоят). Ну и если вся инфраструктура на windows, то как минимум нужно поднять виртуальную машину с линукс.
Цель статьи рассказать и показать что такое есть, это не сложно и этим можно пользоваться.
4. zeegin 96 02.10.18 19:57 Сейчас в теме
(2) У Win Server 2016 тесная интеграция с Hyper-V. Там же можно из коробки настроить kubernates для оркестрации. Ну и контейнер с Postgres тоже можно сделать, MsSQL в контейнере очень прожорлив.
Прикрепленные файлы:
6. lishniy 122 02.10.18 21:07 Сейчас в теме
(4) Так у вас на скриншоте и есть виртуальная машина с linux. Windows контейнеры работают нативно без ВМ. Вроде как в последних версиях на windows 10 контейнеры linux тоже работают нативно, но на серверную ось подсистемы linux так и не появились. MsSQL и правда работает очень медленно в контейнере. Надеюсь, работа идет в этом направлении и скоро производительность хоть чуток будет на уровне
JohnyDeath; +1 Ответить
13. kembrik 3 03.10.18 13:09 Сейчас в теме
(2) Проверяли пару месяцев назад, с линуксового сервера на MSSQL стукнуть нельзя, ничего не изменилось
3. sytkosa 119 02.10.18 19:45 Сейчас в теме
(0)
Нужно обратить внимание: информация в контейнерах не сохраняется. После остановки и запуска контейнера все данные с предыдущего сеанса удалятся. Для сохранения и работы с ними используются другие механизмы, которые так же описаны в данной статье..


а где можно в статье это более подробно почитать не нашел к сожалению.
5. lishniy 122 02.10.18 20:47 Сейчас в теме
(3) для mssql
Для подключения существующих баз, дополним нашу команду.

Нужно пробросить папку с нашими базами в контейнер

-v КаталогНаХосте:КаталогВКонтейнере
Базы подключаются через переменную attach_dbs

-e attach_dbs="[{'dbName':'Test','dbFiles':['C:\\db\\test.mdf','C:\\db\\test_log.ldf']},{'dbName':'HomeBuh','dbFiles':['C:\\db\\HomeBuh.mdf','C:\\db\\HomeBuh_log.ldf']}]"

для сервера 1с
Для того, чтобы информация о наших кластерах сохранялась, создадим папку c:\srvinfo
Выполним команду powershell

docker run -d -p 1541:1541 -p 1540:1540 -p 1560-1591:1560-1591 -v C:/srvinfo:C:/srvinfo lishniy/1c-windows

В моем контейнере база кластеров мапится в C:/srvinfo в контейнере и мы мапим в такой-же каталог на нашем диске. Можете изменить этот путь на свое усмотрение
7. kalyaka 716 03.10.18 10:07 Сейчас в теме
Если знаете, поделитесь, пожалуйста, как настроить сервер 1С для работы с лицензией из докер-контейнера?
Интересует работа с программной и аппаратной лицензией, особенности, можно ли также легко подключать лицензии к докеру, как и настраивать сервер 1С через переменные описания?
igor.ofitserov; kraynev-navi; +2 Ответить
12. lishniy 122 03.10.18 11:32 Сейчас в теме
(7) На текущий момент пробросить USB устройства в windows контейнерах нельзя. Я вижу только один вариант: usb over ip или другие подобные.
14. kembrik 3 03.10.18 13:15 Сейчас в теме
(7) Хотел было предложить настроить отдельный сервер лицензирования, потом вспомнил что без установки серверных компонентов не обойтись, а как этот зоопарк версий на разных портах начнет делить серверный ключ и раздавать программные лицензии большой вопрос. Ну ладно, пользовательские лицензии можно "волевым усилием" закупить локальные, но это только первая половина проблемы..
8. Evil Beaver 7065 03.10.18 11:02 Сейчас в теме
Поправочка: информация в контейнерах сохраняется на весь срок жизни контейнера. Его можно останавливать и запускать. А вот после удаления контейнера - да исчезает. Хорошей практикой считается вынесение нужных данных в volumes, чтобы контейнеры можно было грохать и масштабировать, но сам тезис "после остановки контейнера данные исчезают" - неверный.
JohnyDeath; nvv1970; for_sale; sergey.novikov; CSiER; +5 Ответить
11. lishniy 122 03.10.18 11:28 Сейчас в теме
(8) Если не верите мне, вот ссылка на описание на оффициальном сайте.

Запустите контейнер mssql. Создайте в нем базу, после чего перезапустите его.
17. lishniy 122 04.10.18 09:46 Сейчас в теме
(8) Прошу прощения. Похоже Вы были правы.
18. Evil Beaver 7065 04.10.18 11:15 Сейчас в теме
(17) со мной такое часто бывает )
Shmell; vvp117; Vladimir Litvinenko; amon_ra; JohnyDeath; zeegin; +6 Ответить
15. tsukanov 03.10.18 14:03 Сейчас в теме
На Windows 10 (не Pro) не взлетит же, да?
16. nixel 1031 04.10.18 00:45 Сейчас в теме
19. dr2c 41 09.10.18 08:24 Сейчас в теме
Подскажите вот по этому.
либо пробрасываем контейнер в нашу сеть(при запуске контейнера указываем --network host в место кучи портов)

Я хочу чтобы контейнер с MsSQL получил ip из локальной сети (лучше от dhcp), а подключиться к нему с другой машины. Это возможно?
20. lishniy 122 09.10.18 09:27 Сейчас в теме
(19) Да, это оно и есть.
docker run -d --network host -e sa_password=<SA_PASSWORD> -e ACCEPT_EULA=Y microsoft/mssql-server-windows-developer

Дополнительно можно задать mac адрес и имя хоста
--mac-address=MACADDRESS...

-h HOSTNAME или --hostname=HOSTNAME
21. dr2c 41 09.10.18 17:13 Сейчас в теме
Я извиняюсь, немного потуплю. Вот я ввожу такую строку
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=<YourStrong!Passw0rd>' -p 1433:1433 --name sql1 -d mcr.microsoft.com/mssql/server:2017-latest

создается контейнер и строкой
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' sql1

я получаю его ip вида 172.0.0.2 и не могу к нему подключиться со сторонней машины.

Теперь строкой
docker run -d --network host --name sql2 -e 'SA_PASSWORD=<YourStrong!Passw0rd>' -e ACCEPT_EULA=Y mcr.microsoft.com/mssql/server:2017-latest

создаю другой контейнер.
Запрашиваю ip- получаю пустую строку..
Подключится снова не могу (файервол отключен)...
22. lishniy 122 09.10.18 21:28 Сейчас в теме
(21) Вы перемудрили. Когда создается контейнер с указанием портов, вы можете подключаться к нему с другой машины указав ip машины на которой запущен Docker. Танцы с бубном нужны только чтоб подключится с машины на которой создаете.
Во втором случае смотрите на своем DHCP сервере. Можете попробовать задать ip вручную
dr2c; acanta; +2 Ответить
23. dr2c 41 10.10.18 09:02 Сейчас в теме
(22) Да, все верно, спасибо! Намудрил при подключении. Проверил порт 1433- слушает, стало спокойней и разобрался.
Если кому пригодится, вот строка для PowerShell. Проверка открытого порта:
$server="yourserver"; $port=1433; echo ((new-object Net.Sockets.TcpClient).Connect($server,$port)) "$server is listening on TCP port $port";

yourserver может быть и имя и IP
JohnyDeath; +1 Ответить
24. dr2c 41 10.10.18 18:11 Сейчас в теме
А вот момент сохранения контейнера и его развертывания на другом сервере? Думаю тут самое интересное. Как это делается?
25. lishniy 122 10.10.18 20:23 Сейчас в теме
(24) Данные 1с сервера сохраняются куда укажите, для этого и есть параметр:
-v C:/srvinfo:C:/srvinfo

в MsSQL вы же базы подключаете
-e attach_dbs={}

Одна сложность, если база создается уже в контейнере, ее нужно будет перенести в ту папку, которую мапите.
29. for_sale 845 24.02.19 23:07 Сейчас в теме
(24)
Грузите образ в хаб (push), а потом загружаете на целевом компьютере (pull). Это уже вопрос не к данной статье, а общий вопрос по докеру.
26. palsergeich 15.11.18 11:40 Сейчас в теме
27. Shmell 356 21.11.18 14:08 Сейчас в теме
must have! очень полезная и актуальная статья
35. GreenDragon 01.04.19 11:25 Сейчас в теме
(27) Могу выложить всё это на гитхабе, чтобы меньше времени тратить (собсно, там скрипты переделанные на специфику x64 и файлы оригинальной платформы). В оригинальной поставке переименовал файл msi, заменив пробелы на "_", так как была проблема с передачей имени в виде параметра в скрипт - упорно ругался, несмотря на заключение имени файла в кавычки.
36. lishniy 122 01.04.19 11:31 Сейчас в теме
37. GreenDragon 01.04.19 11:40 Сейчас в теме
(36) Я попробую. Никогда ещё не пробовал
28. for_sale 845 24.02.19 22:55 Сейчас в теме
данная технология позволяет запускать контейнеры с установленными приложениями в своей песочнице(нет, это не виртуализация)

Да, это виртуализация.
30. hercares 24.02.19 23:27 Сейчас в теме
нет, это не виртуализация)


Да, это виртуализация.

Самокритично.
Под mac os есть поддержка docker c Windows?
31. GreenDragon 07.03.19 08:10 Сейчас в теме
1cEnt.zip в первом скрипте и 1cEnt.exe во втором - это что и откуда?
32. lishniy 122 11.03.19 15:53 Сейчас в теме
42. AerosolMsc 14.01.21 00:43 Сейчас в теме
(32) Можно Вас попросить и мне ответить, пожалуйста?
33. GreenDragon 31.03.19 17:54 Сейчас в теме
Пробую собрать контейнер со свежим официальным дистрибутивом 64-битного сервера 1С. Но в результате натыкаюсь, что
Stop-Service : Cannot find any service with service name '1C:Enterprise 8.3 Server Agent (x86-64)'


Идеи уже закончились...
34. lishniy 122 01.04.19 09:22 Сейчас в теме
(33) Первое что приходит на ум, не поменяли путь для x64 версии. Попробую на досуге собрать x64, посмотрю
38. valentinko 150 02.09.19 15:04 Сейчас в теме
Все здорово. Спасибо.
Пару моментов, точнее один.
Ругается на отсутствие службы 1С при запуске.
Посмотрев список каталогов контейнера - пришел к выводу что установки 1С не было вообще.
И что бы я ни делал, как бы не извращался над скриптом prepare - результат тот же. Не могу установить 1С в контейнере.
При этом контейнер успешно создается и запускается.
См. скрины
Прикрепленные файлы:
39. nvv1970 28.10.19 08:36 Сейчас в теме
Познакомился с докером. Да, интересно, задорно, молодежно... В многих сценариях/приложениях удобно.
Но не в 1с.... Нарисуйте кто-нибудь, какие сценарии работы с докер могут облегчить жизнь рядового 1сника?
Да и работа с докер в виндовс кажется почему-то геморроем... Нужно попробовать.
40. alexey_kurdyukov 69 27.05.20 02:09 Сейчас в теме
"Нет, это не виртуализация",..."процессор должен поддерживать виртуализацию" - где правда?
41. borzyj 1 06.07.20 05:46 Сейчас в теме
(40)Правда в том, что это виртуализация другого уровня, т.е. нет изолированной ОС как в привычных ВМ, а изолированное пространство разделяющее ресурсы хостовой ОС, понимающее себя как саму ОС.
Оставьте свое сообщение
Вопросы с вознаграждением
Вакансии
Архитектор 1С
Пермь
зарплата до 200 000 руб.
Полный день

Бизнес-аналитик 1С
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Бизнес-аналитик 1С
Пермь
зарплата до 100 000 руб.
Полный день

Старший программист 1С
Самара
зарплата от 70 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству