Все, кажется, делают Docker в эти дни. И эта тема становится еще более привлекательной, поскольку Microsoft намерена интегрировать ее в Windows. Поскольку многие разработчики промежуточного программного обеспечения используют Windows, я решил попробовать и сам, а также дать несколько советов о том, как создавать и запускать образы с наименьшим количеством борьбы с контейнерами Docker, хостами и гостями, а также с параметрами командной строки. , Арун сделал очень хорошее введение в Docker в недавнем посте в блоге. Я пропускаю это здесь и непосредственно погружаюсь в это.
Установка Boot2Docker
Docker Engine использует специфичные для Linux функции ядра, поэтому для его запуска в Windows нам нужно использовать облегченную виртуальную машину. Есть вспомогательное приложение под названием Boot2Docker что делает установку и запуск всего довольно простым. Первый шаг — загрузить последнюю версию бинарного установщика и выполнить ее. Он установит Oracle VirtualBox , MSYS-git , ISO-образ boot2docker и инструмент управления Boot2Docker. Следующим шагом будет запуск сценария запуска Boot2Docker (после установки на рабочем столе появится небольшой значок кита). Он настроит хост Docker и подключится через ssh к хосту. Если вы хотите сделать это снова в более позднем состоянии, вы можете просто набрать: boot2docker ssh.
На данный момент нет Docker-клиента для систем на базе Windows. Итак, ssh — это обходной путь, который работает довольно хорошо и, вероятно, также хорошо известен. С недавно объявленным Microsoft новым партнерством с Docker, это может скоро измениться. Если вы хотите создать свой собственный клиент Docker, вы можете найти дополнительную информацию в блоге Khalid Mouss об этом.
Несколько советов для вас. Вам необходимо иметь каталог% MSYS-git_INSTALL% / bin в вашей переменной PATH. Он содержит cmd строку ssh клиента. Если вы хотите использовать PUTTY, обязательно подключитесь к Docker-хосту, используя пользователя «root» и пароль «tcuser».
Если вы используете какой-либо VPN-клиент, у вас возникнут проблемы. Docker обычно работает в режиме Host-only, а установленный VPN-клиент превращает это в NAT. Перейдите в консоль управления VirtualBox и откройте настройки для boot2docker-vm и добавьте правило перенаправления портов для Docker API. Это понадобится нам позже.
Небольшое предупреждение: порт Docker API по умолчанию — 2375. В моем случае это не так, поэтому мне сначала нужно было выяснить, какой порт прослушивает API Docker. Сделайте это с помощью netstat на вашем хосте. Итак, я в основном использовал прямой гость для размещения отображения на 2376 в этом примере. Все сделано. Теперь вы готовы запустить пример Привет, мир. Просто наберите «docker run hello-world» и дождитесь «Привет из Docker». Теперь ты в порядке.
Если вам нужен полный справочник по Boot2Docker, это очень полезный сайт .
Почему именно мы делаем докер?
Что за шумиха вокруг Докера в эти дни? В ней есть небольшая история, и в долгосрочной перспективе она также может поддерживать развертывание микросервисов, просто определяя готовые пакеты, которые можно развернуть. В том числе требования к инфраструктуре. Думайте о контейнерах Docker как о серверах приложений, которые могут запускать определенные образы. И представьте себе изображения как большие архивы Maven, которые содержат не только ваше приложение, но также ОС и все части, необходимые для запуска вашего приложения. Нравится вам это или нет, но все играют с этим, и в конце концов, это способ решить некоторые проблемы. Я не говорю вам, что я влюбился в него мгновенно, но, по крайней мере, я хочу, чтобы это помогло мне в демонстрациях и демонстрациях. И мысль,что мне нужно только определить кучу зависимостей и плагинов Maven в моих приложениях Java EE, и все, что волшебным образом запускается — это то, что мне нравится. Но давайте посмотрим, что для этого нужно и как это сделать.
Уже доступные изображения — например, WildFly
Кстати об изображениях: готово множество изображений, готовых к работе. У нас в JBoss есть специальный микросайт, готовый для вас со всеми образами Docker, которые мы готовы для вас запустить. Если вы хотите использовать какой-либо из них, просто установите их в свой контейнер и запустите. Делая это, вы можете просто запустить любой компонент, в основном, как если бы он был запущен локально на вашем компьютере. Разница лишь в том, что он работает в вашем «Docker Host». Если вы хотите запустить WildFly, все, что вам нужно сделать, это выполнить следующую команду Docker:
docker run -it -p 9990:99 jboss/wildfly
Docker автоматически извлекает соответствующие биты (что может занять некоторое время) и запускает контейнер из этого изображения. Сопоставление портов фактически находится между хостом и контейнером. Помните проблемы VPN сверху? Не забудьте добавить отображение портов в VirtualBox также, если вы хотите попробовать это. Результат довольно ясен: теперь у вас есть WildFly, работающий в контейнере. Сопоставьте нужные порты и просто используйте их так, как обычно используете удаленный экземпляр Если вы хотите еще больше изображений, вы можете просматривать и искать
Docker Hub . Там уже много всего.
Подобное использование Docker — не совсем та идея, которая стоит за ним. На самом деле, изображение должно содержать не только базовый компонент, но и полностью сконфигурированное приложение.
Поэтому вам нужно создавать свои собственные изображения. Есть разные способы сделать это. Вы можете обновить контейнер, созданный из изображения, и зафиксировать результаты в изображении. Или создайте свой собственный
Dockerfile, чтобы указать инструкции для создания изображения, или вы можете использовать инструмент сборки, такой как Maven, для создания вашего изображения. Подход Dockerfile является очень мощным и требует довольно много печатания и vi-magic. Я искал простой способ создать образ из Maven. Потому что это то, что я использую для проектов.
Создание образа Docker с помощью Maven
Существует множество различных плагинов Maven, которые действительно предлагают такую функцию, которую я искал. В конце концов, команда Fabric8 использовала
Maven-Docker-Plugin от
Roland Huß., Плагин может создавать и публиковать изображения, а также запускать и останавливать контейнеры для интеграционного тестирования и разработки. Я немного боролся с его настройкой, и я все еще пытаюсь найти лучшие способы его интеграции в мои приложения, так что это, в основном, первый первый список моих выводов и решений, а не полное руководство пользователя. Пожалуйста, ознакомьтесь с
примерами и
официальным руководством пользователя плагина для получения более подробной информации. Я приведу полный пример в одном из моих следующих постов в блоге и покажу вам его.
DOCKER_HOST Переменная окружения
Первым делом для этого плагина, очевидно, является переменная окружения DOCKER_HOST. Поскольку весь опыт работы с Windows пока немного неуклюжий, эта переменная не устанавливается при запуске vm. Хорошей новостью является то, что вы уже поняли все, что вам нужно знать, установив и выполнив сопоставление портов. Итак, вы просто установили его:
set DOCKER_HOST=tcp://127.0.0.1:2376
Убедитесь, что ваш общий раздел <configuration> в maven-docker-plugin совпадает с тем же
<dockerHost>https://127.0.0.1:2376</dockerHost>
Сертификаты и соединения HTTPS
Начиная с версии 1.3.0 для удаленного API Docker требуется связь через SSL и аутентификация с сертификатами при использовании с boot2docker. Итак, вам необходимо настроить сертификаты. Найдите их в папке .boot2docker / certs и обязательно добавьте этот путь в конфигурацию вашего плагина.
<certPath>C:/Users/myfear/.boot2docker/certs/boot2docker-vm</certPath>
Это все на данный момент. Дайте мне знать, если у вас есть опыт работы с Docker в Windows.