Подтвердить что ты не робот

Можете ли вы объяснить Докеру практическим примером/случаем?

Я прочитал этот и интро docs на Docker.io и Мне нравится концепция, которую она представляет. Но, можете ли вы помочь мне понять это немного лучше? Можете ли вы дать мне несколько практических примеров и/или тематических исследований о том, как используется Докер, и когда имеет смысл фактически использовать его?

Просто сторонняя заметка, я недавно начал использовать Vagrant для распространения предварительно сконфигурированного окна DEV для нашей команды разработчиков (поэтому мы все используем одну и ту же базовую систему). Я даже видел примеры, где Docker используется внутри Vagrant и еще много чего, но я не понимаю, какие преимущества для этого можно сделать в практическом смысле; что я понимаю разницу между виртуальными машинами и контейнерами и логическое разделение, которое они предоставляют, но когда я должен использовать один вместо другого и когда Docker внутри Vagrant? (это более конкретный вопрос, но меня больше всего интересует более общая картина, изложенная в первом вопросе выше).

4b9b3361

Ответ 1

Я участвую в попытке сделать программное обеспечение для проведения научного анализа более доступным для исследовательского сообщества. Часто рассматриваемое программное обеспечение написано одним человеком или только несколькими, не имея достаточного планирования для повторного использования, например, одного человека на своем компьютере, на котором написано Python script или модуль Matlab. Если программное обеспечение работает хорошо, часто другие хотели бы попробовать сами... но в некоторых случаях может оказаться реальной проблемой для успешной репликации среды, которая недокументирована или трудно переопределяется.

Docker - отличный инструмент, помогающий другим повторять использование такого программного обеспечения, поскольку это еще более низкий барьер входа, который пишет Vagrant script для установки программного обеспечения в среде. Если я даю человеку контейнер Докера, она может делать все, что захочет внутри (писать код, устанавливать библиотеки, настраивать среду и т.д. Когда это "сделано", она может сохранить изображение и опубликовать изображение в Docker и расскажите другому исследователю, "вот он, просто запустите его и запустите..."

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

Мы также проделали определенную работу с написанием сценариев в Python и shell для выполнения рабочих процессов обработки данных из нескольких контейнеров Docker. Одна демонстрация, которую мы придумали, заключалась в том, чтобы запустить OpenCV на изображении, чтобы извлечь лица людей, затем ImageMagick, чтобы обрезать лица, и, наконец, ImageMagick снова, чтобы сделать коллаж всех лиц. Мы создали контейнер для OpenCV и контейнер для ImageMagick, а затем написал Python script для выполнения "запуска докеров" на каждом из контейнеров с требуемыми параметрами. Сценарии Python были выполнены с помощью проекта docker-py, который хорошо работал для того, что нам было нужно от него.

Ответ 2

Посмотрите на как и почему Spotify использует Docker для тематического исследования.

Чтобы ответить на ваш последний вопрос:

Я даже видел примеры, где Docker используется внутри Vagrant и что-то, но я не понимаю, какие преимущества можно сделать в практический смысл; что я понимаю разницу между виртуальными машинами и контейнеры, и логическое разделение, которое предоставляет последний, но когда я должен использовать один вместо другого, и когда Докер внутри Vagrant?

Докер часто используется внутри Vagrant, потому что он не работает в Mac OSX (см. Требования к ядру), который очень часто используется Разработчики.

Затем, чтобы ваша команда разработчиков работала над одними и теми же контейнерами, строит и тестирует продукты на ноутбуке, а затем "работает в масштабе, в производстве, на виртуальных машинах, голых металлах, кластерах OpenStack, общественных облаках и т.д.", вы нужно Vagrant на Mac OSX.

Тем не менее, здесь вы можете увидеть еще одно удивительное тематическое исследование http://bit.ly/19h8gUk

Ответ 3

Есть хороший пример использования дневного взлома:

Автоматическое развертывание java-стека с помощью Git и Jenkins. Вы вставляете свой код в свой резидентный хранилище Git. Это запустит сборку Jenkins, так что ваш webapp будет упакован в контейнер-докер и будет выполняться Docker.

https://www.youtube.com/watch?v=Q1l-WoJ7I7M