Разница между Докером и OpenVZ

Я новичок в мире виртуализации. Может ли кто-нибудь объяснить мне разницу между OpenVZ и Docker?

Что может быть хорошего в будущем?

Плюсы и минусы?


person forum.test17    schedule 27.03.2015    source источник
comment
нет тела, которое является экспертом как в openVZ, так и в докере.   -  person forum.test17    schedule 30.03.2015
comment
Я бы сказал aucouranton.com/ 2014/06/13/ хороший ответ :)   -  person Alexandre Dumont    schedule 11.09.2015


Ответы (1)


Взгляд на контейнеры сильно различается между версиями 2.

Короче говоря OpenVZ рассматривает контейнер как VPS, а докер видит контейнер как приложение/сервис.

Что это означает? Для OpenVZ вы можете ожидать, что создание контейнеров будет похоже на создание виртуальных серверов. OpenVZ имеет интерфейсы, ориентированные на настройку контейнеров VPS, которые вы украшаете вручную. Поэтому они предоставляют шаблоны для пустых Linux-машин, которые вы можете запускать и выключать, к которым вы затем подключаетесь по SSH, чтобы настроить их самостоятельно со всем, что вам нужно, например стек LAMP.

Когда вы захотите настроить стек LAMP, вы должны сделать это, как обычно, когда настраиваете новый сервер. Вы получаете пустую Linux-машину с виртуальным сетевым адаптером, который имеет собственный общедоступный IP-адрес WAN с Ubuntu на нем, получаете доступ к нему с помощью SSH, и вы устанавливаете на нем все необходимые службы с помощью обычного менеджера пакетов (yum или apt) и выполняете настройка требуется в конфигурационных файлах самостоятельно.

Для Docker вы можете ожидать, что при создании контейнеров контейнер представляет собой отдельное приложение, которое выполняет только ОДНУ вещь. Следовательно, ему могут понадобиться некоторые другие контейнеры, чтобы помочь ему. (Например, контейнер, предоставляющий базу данных). Docker позволяет очень легко определить, что находится внутри контейнера, без необходимости запускать его и постоянно создавать новые точно равные экземпляры этого контейнера. Они определяют содержимое док-контейнера (изображения) с помощью очень легковесных шаблонов, которые они называют Dockerfiles.

Уже существует огромный набор файлов докеров, которые вы можете найти в центре Docker, посмотрите сами (это как быть в кондитерской с бесплатными конфетами! :D): докер-хаб. Образы, созданные этими файлами докеров, можно извлечь с помощью инструмента CLI docker с помощью команды pull. В докере также есть легкий доступ к таким вещам, как переадресация портов, виртуальные каталоги (чтобы вы могли легко получать доступ к файлам на хост-компьютере) и тому подобное, что может использовать любой исполняемый файл.

Если вам нужен стек LAMP в докере, все, что вам нужно сделать, это "docker run -d -p 80:80 tutum/lamp"

Это извлекает образ tutum/lamp и запускает его в виде демона (-d) с портом 80 из контейнера, переадресованным на порт 80 хоста, открывая внутреннюю веб-службу снаружи. Как видите, у него нет собственного IP-адреса, в отличие от машины OpenVZ. И это точно так же, как сервер Apache, работающий на вашей корневой машине. Преимущество по сравнению с его нативной установкой заключается в том, что докер делает установку намного проще и имеет неограниченное количество копий. Кроме того, он не загромождает ваш хост-компьютер большим количеством файлов и обеспечивает границу безопасности вокруг вашего приложения.

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

person RoyB    schedule 31.03.2015
comment
Большое спасибо за подробный ответ :). У меня мало сомнений. Рассмотрим настройку, в которой мне нужен сервер mysql и apache tomcat с двумя сетевыми картами. Этого можно легко добиться в openVZ, поскольку это виртуальный сервер, и я могу создать столько виртуальных частных серверов на одной машине. Как бы я достиг этого Docker? - person forum.test17; 01.04.2015
comment
для тех, кто хочет узнать больше о linux-контейнерах и докере, прочитайте это machine?rq=1" title="чем docker io отличается от обычной виртуальной машины"> stackoverflow.com/questions/16047306/ - person forum.test17; 01.04.2015
comment
Ваша настройка может быть достигнута в обоих решениях. Когда вы выбираете докер, вы просто перенаправляете порты контейнерных служб, чтобы они выглядели так, как будто они размещены на хосте докера. Кроме того, вы можете связать контейнеры друг с другом, чтобы вам не нужно было открывать базу данных в Интернете. Лично я бы выбрал докер, есть кривая обучения, но, в конце концов, с ним гораздо проще настраивать и устанавливать приложения. Держу пари, вы обязательно влюбитесь в Докера через несколько дней. - person RoyB; 01.04.2015
comment
спасибо за вклад, можете ли вы дать мне ссылки для начала. Я где-то читал, что не могу запускать экземпляры сервера mysql в докере и не могу иметь 2 интерфейса Ethernet из этого github .com/docker/docker/issues/1824. Неужели до сих пор нельзя этого добиться. - person forum.test17; 01.04.2015
comment
1) Вы не должны иметь 2 интерфейса Ethernet: вместо этого используйте переадресацию портов. Если вы хотите использовать доменное имя для каждого докера, вы можете использовать обратный прокси-сервер с переадресацией на основе полного доменного имени. Очень похоже на виртуальные хосты на веб-сервере... 2) docker.com/tryit - person RoyB; 01.04.2015
comment
Что делать, если мне нужно два интерфейса? - person forum.test17; 01.04.2015
comment
Зачем вам два интерфейса? Можете ли вы набросать основные потребности? - person RoyB; 01.04.2015
comment
честно говоря, я не знаю, для чего используется. Я занимаюсь фоновым исследованием виртуализации, которая поддерживает две интерфейсные карты. - person forum.test17; 01.04.2015
comment
Извините, что качаю ваши носки, но контейнеризация не имеет ничего общего с виртуализацией, это скорее альтернатива виртуализации. Он работает, ограничивая контекст выполнения определенного набора приложений внутри ядра Unix. Базовая технология называется LXC/Linux Control Groups (погуглите!) - person RoyB; 03.04.2015
comment
Отличный ответ! Я бы добавил, что OpenVZ создает крутую виртуальную машину (с физическим сервером, таким как свойства, сценарии инициализации, файловая система, сетевые интерфейсы, точки монтирования и т. д.), которая не имеет выделенного ядра. Пока докер запускает кучу изолированных от хоста сервисов, пока вы его не остановите. Не удивляйтесь, когда FS вашего контейнера исчезнет, ​​когда вы остановите контейнер докера (хотя есть способы сохраниться, это не намерение по умолчанию с докером) - person Alec Istomin; 03.06.2015