До сих пор мы видели несколько различных вариантов сред разработки. Мы видели, на что способны Vagrant VVV и Chassis ; оба являются отличными решениями, и оба основаны на Vagrant . Если вы начали разрабатывать с использованием решений Vagrant, тогда это хорошо для вас. Но подождите, есть еще один вариант. В этой статье мы увидим, что такое Docker , и как начать использовать его в ваших проектах WordPress.
Почему Докер?
Docker — это платформа с открытым исходным кодом, которая помогает вам создавать, запускать и развертывать приложения. В этой статье мы начнем использовать Docker с WordPress , но его действительно легко использовать с любой другой CMS или платформой, а также с любым языком. Docker уже давно стал модным словом в сообществе DevOps. Обратите внимание: в первом стабильном выпуске 1.0 многие облачные провайдеры начали внедрять Docker. Если вы какое-то время пользовались Heroku или другим PaaS , вы можете знать, что их легко освоить. У большинства поставщиков PaaS у вас есть веб-контейнер, контейнер базы данных, контейнер для сохранения файлов и т. Д. Каждый контейнер отличается и связывается друг с другом через IP-адреса и порты. Платформы PaaS также используют контейнерные технологии.
Докер делает то же самое. Вы можете создать контейнер, который запускает ваш код (это могут быть Apache и PHP, который выполняет скрипты PHP), и один контейнер, который содержит вашу базу данных ( MySQL , MongoDB и т. Д.). Но вы также можете сделать это с помощью Vagrant, и я должен признать, что Vagrant довольно хорош в том, что он делает. Он решает проблемы, обычно связанные с работой на моей машине на стадии разработки, а также приближается к производственной среде. С другой стороны, Docker делает локальную среду и производство одинаковыми.
Моя предпочтительная конфигурация Vagrant — Homestead . Да, знаменитая коробка Laravel . Это очень хорошо для большинства проектов, но также поставляется с двумя базами данных и многими другими программами, которые вам могут не понадобиться. Docker работает лучше, чем классические технологии гипервизора . Docker очень быстр для локальной разработки, если вы используете Linux. Это также может быть быстрее, чем у традиционных гипервизоров, даже если вы не используете Linux в качестве основной ОС.
Если вы уже давно пользуетесь Vagrant и хотите узнать что-то новое и интересное, то эта статья для вас.
Введение в Docker
Докер построен с концепцией контейнеров. Это не новая идея. Мы используем контейнеры в течение многих лет. Приложения Android также построены на основе этой концепции. Docker состоит из интерфейса командной строки Docker и демона. Вы будете работать только с CLI. CLI связывается с демоном, и именно демон выполняет обработку.
Контейнеры построены из изображений с некоторой дополнительной конфигурацией. Вы также можете создавать изображения из других изображений. Допустим, вы хотите использовать образ Ubuntu 14.04. Вы также хотите использовать Apache и PHP. Вы можете использовать образ Ubuntu, а затем установить Apache и PHP. Таким образом, вы можете создать другое изображение и поделиться этим изображением с другими. Изображения как чертежи для контейнеров. Контейнеры построены из этих изображений. По сравнению с Vagrant, где у вас есть базовая ОС Ubuntu, а затем с помощью такого инструмента, как Puppet , вы указываете ему установить Apache и PHP. Затем вы ‘бродячим’, и вы готовы пойти с вашим местным развитием.
Перед началом этой статьи я настоятельно рекомендую вам попробовать интерактивное руководство .
Практикуемся с Docker
Прежде всего, убедитесь, что в вашей системе установлен Docker. Идеальным решением является установка Linux в качестве основной ОС, особенно если учесть, что Docker использует ядро Linux. Но вы можете запустить Docker на Windows и Mac. Существует инструмент под названием Boot2Docker, который доступен как для Mac, так и для Windows. Для инструкций по установке, прочитайте их руководства по установке .
Чтобы убедиться, что Docker правильно установлен в вашей системе, запустите docker -v
Есть две основные вещи, которые вы должны знать о Docker: изображения и контейнеры. Изображения как план для контейнеров. Изображения показывают Docker, каким должен быть контейнер. Вы не можете запускать изображения; вместо этого вы строите контейнеры из них. На Docker Hub вы можете увидеть список изображений. Есть изображения, полученные от Docker Team, и изображения, полученные от сообщества.
Чтобы увидеть, какие образы в настоящее время доступны в вашей системе, выполните:
docker images
Это даст вам список изображений, загруженных в вашей системе. Если вы не использовали Docker в прошлом, вы получите результат отсутствия изображений в вашей системе.
Давайте загрузим изображение из Docker Hub. Наиболее загруженным является образ Ubuntu. Чтобы загрузить изображение, вы должны выполнить docker pull [imagename]:[tag]
docker pull [imagename]
docker pull ubuntu:12.04
или
docker pull ubuntu
Теперь проверьте еще раз свои изображения, используя docker images
Теперь есть два изображения. Имена тегов могут использоваться как управление версиями, но не сами по себе. Например, в этом образе PHP есть те же версии PHP с Apache, nginx или без них. Вы можете найти имена тегов на каждой странице изображения (в Docker Hub). Если имя тега не указано, оно тянет изображение с именем тега в latest
Вы можете создавать контейнеры, используя docker run [imagename]:[tag]
docker run [imagename]
Если вы не укажете имя тега, будет запущено изображение с тегом latest
Затем вы можете приступить к настройке ваших контейнеров, используя docker start [name_of_the_container]
Если вы не укажете имя для контейнера, Docker даст случайное имя контейнера. Давайте построим контейнер:
docker run ubuntu
Чтобы запустить контейнеры, вы должны выполнить:
docker ps
Но почему нет работающего контейнера? Потому что контейнер закончил свой процесс. Чтобы увидеть список созданных контейнеров, вам нужно запустить docker ps -a
Это даст вам список всех существующих контейнеров и некоторую дополнительную информацию, такую как идентификатор контейнера, команда, которая будет выполняться при запуске контейнера, имя изображения, его состояние, порт и имя. При первом создании контейнера мы не дали ему имя. Следовательно, идентификатор контейнера является его уникальным идентификатором. В некоторых случаях он может заменить имя контейнера. Порт является общедоступным портом вне контейнера (порты могут быть сопоставлены между контейнером Docker и вашей системой). Вы можете удалить созданный контейнер с помощью:
docker rm [container name]
docker ps -a
Чтобы лучше понять, как работает контейнер, давайте проанализируем его Dockerfile. На странице Ubuntu в Docker Hub вы можете увидеть разные имена тегов, которые ссылаются на Dockerfile. Посмотрим, как выглядит Ubuntu 12.04.
FROM
Вы также можете иметь другие изображения, которые используют образ Ubuntu. В их Dockerfile вы увидите FROM ubuntu:14.04
В этом случае царапина почти ничего не делает.
Затем он загружает содержимое Ubuntu, запускает некоторые команды, как мы это делаем на терминале (в системах nix). Если вы внимательно посмотрели, при docker ps -a
В конце Dockerfile команда, которая будет выполняться при создании контейнера и при каждом его запуске, — /bin/bash
Это ничего не делает.
Теперь давайте создадим другой контейнер, но на этот раз с именем и другой командой, чтобы запускаться каждый раз, когда контейнер запускается.
docker run --name ubuntucontainer ubuntu echo something
Вы видите, что это что-то повторило на терминале? Если вы введете его снова, docker ps -a
Добавляя что-то после имени изображения, Docker принимает это как команду.
Но это действительно скучно. Когда мы запускаем контейнер, мы хотим, чтобы он некоторое время оставался в рабочем состоянии. Но это действительно зависит от команды, которую он выполняет, когда запускается (или создается впервые). Создайте другой контейнер из базового образа Ubuntu.
docker run ubuntu ping google.com
Это скажет, что он не может найти пинг. Это потому, что ping не установлен по умолчанию. Но мы можем сделать что-то еще: создать контейнер, который запускает команду apt-get install -y ping
docker run ubuntu apt-get install -y ping
Затем вы должны найти контейнер, который был построен. После этого выполните:
docker commit [containername]
Вы найдете новое изображение, как это:
docker images
У вашего нового изображения нет имени, но есть идентификатор изображения. Мы можем использовать этот идентификатор для создания контейнера из него. Использование четырех первых символов достаточно.
docker run [id] ping google.com
Проблема в том, что это не останавливается. Мы можем заставить его работать в фоновом режиме.
docker run -d [id] ping google.com
Теперь выполните docker ps
Чтобы увидеть вывод утилиты ping, используйте:
docker logs [container_name]
Это будет работать вечно (или пока вы не выключите компьютер). Чтобы остановить работающий контейнер, вы можете использовать:
docker stop [name_of_the_container]
Если вы введете docker ps
Вывод
В этой статье мы узнали, что такое Docker. Но мы едва поцарапали поверхность всей его функциональности. Но не отчаивайтесь: впереди еще три статьи. В следующей статье мы увидим, как вручную настроить Docker для WordPress. После этого мы увидим, как мы можем легче настроить Docker через официальный образ WordPress, а также с помощью Docker Compose. Так что следите за обновлениями.
Ждем вашего ответа. Что ты думаешь о Докере. Считаете ли вы это на своем следующем проекте? Если у вас есть вопрос, пожалуйста, оставьте комментарий ниже.