Чистая ОС с рабочим процессом Docker - PullRequest
0 голосов
/ 04 ноября 2018

Итак, я прочитал о Docker, и я понял большинство из них. Тем не менее, у меня есть вопрос: почему большинство учебных пособий по-прежнему разрабатывают все приложение в своей локальной среде и устанавливают такие инструменты, как Node, Python или Ruby, если вы можете просто создать связывающее монтирование и разработать все внутри контейнера? Я что-то не так понял или это неправильный подход? Ниже приведен простой файл Docker, который я использовал для разработки тестового приложения:

FROM node
WORKDIR /home/app
VOLUME . .

И отсюда я бы заходил в терминал контейнера, запускал npm init и начинал разработку моего приложения.

Теперь моя цель - сделать мой компьютер как можно более чистым, без необходимости устанавливать Java, Node, Ruby и т. Д. Какой будет наилучший подход для этого? А также, как этот подход работает в машине Windows? В настоящее время я использую Ubuntu.

Я не хочу докеризировать приложение. Я хочу собрать все приложение, составив контейнеры. Например, я хочу иметь чистую установку manjaro, затем установить docker, затем получить образ spacevim, а затем запустить новое приложение в java, например, в каком-нибудь локальном каталоге, с возможностью связать мой локальный каталог с контейнером java, чтобы он мог работать компилятор. Затем, если я хочу, запустите новое приложение в узле и сделайте то же самое. Во всех случаях я буду использовать локальный каталог с исходным кодом, отредактированный моим контейнером vim и запущенный из языкового контейнера. это возможно? поэтому мне не нужно устанавливать nvm, nodenv или какие-либо менеджеры версий и т. д.

Я могу вручную запустить этот код, например:

docker container run --rm -it -v /home/alex/Documents/REPOs/testing:/home/app -p 3000:3000 --name node node:latest bash

И это позволяет мне работать в каталоге / home / app / как 2-х стороннее связывание, но как я могу добиться того же с помощью файла dockerfile или docker-compose, чтобы я мог поделиться своей конфигурацией и прекратить использовать менеджеры версий для каждого языка? ,

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Допустим, я разрабатываю приложение Node. Мне нужна одна языковая среда выполнения, но тогда, как работает экосистема Node, все зависимости времени сборки и компиляции пакета объявляются в файле package.json и изолируются в каталоге node_modules. В этом нет никаких накладных расходов; Мне нужна одна apt-get install или brew install команда, и я готов к работе.

Как только я это сделаю, у меня будет целый набор доступных инструментов, которые действительно хорошо работают , если Я работаю локально. Мой редактор может общаться со средством проверки статического типа и выделять для меня ошибки, но только если каталог node_modules находится в моей локальной среде. Мой редактор может запустить мой набор тестов и перейти к сбоям, но только если среда выполнения языка является локальной. Мой редактор может получить доступ к моему коду, если он работает в удаленной системе или в контейнере, но мне не доступен ни один из этих дополнительных наборов инструментов.

В свою очередь, использование Docker сопряжено с большими сложностями. Вам все еще нужно что-то установить (сам Docker), чтобы использовать Docker. Выполнение любой команды Docker требует привилегий, эквивалентных корню, поэтому либо вы много используете sudo, либо вы полагаете, что ничто не «случайно» docker run -v /:/host ... и не будет вас обманывать. Вы должны получить свой код в контейнер. Вы должны указать контейнеру сделать порты вашего сервера доступными для вас. Вам обычно нужно будет удалить контейнер, чтобы изменить настройки. Существуют повторяющиеся проблемы с сопоставлением разрешений, и, если файловый ввод-вывод является основной частью программы, вам также необходимо получать и выводить эти файлы. А Docker сложен, и, как и любая сложная вещь, иногда просто терпит неудачу.

Я думаю, что Docker великолепен как система развертывания. Если у вас есть хорошо упакованная и автономная программа на Python, Ruby, JavaScript или Go, очень легко построить контейнер вокруг него и запустить его как готовое решение или развернуть его в кластере Kubernetes. Я видел два основных аргумента в пользу Docker для разработки: изоляция файловой системы на проект (которую вы получаете без Docker через node_modules, виртуальные среды Python, наборы Ruby rvm gemsets, $GOPATH, ...) и необходимость точных версий времени выполнения языка (по моему опыту не имеет большого значения). Он перевешивается из-за хлопот управления средой Docker и трудностей, связанных с удаленной разработкой ... просто чтобы не устанавливать языковую среду выполнения на хосте.

0 голосов
/ 04 ноября 2018

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

Примеры 1, 2

Примеры приложений Docker изобилуют ... вы можете просто Google docker example app и имя вашей платформы.

На машине с Windows это зависит от вашей версии, потому что на Windows 10 вам нужна Pro Edition OS для запуска Docker. Я - пользователь Windows, и заметил некоторые причуды, специфичные для версии Windows, и k8, насколько я могу судить, просто не выполним в Windows.

...