По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Сегодня речь в статье пойдет о Docker. Все, кто хоть как-то касаются сферы IT слышали про Docker, но не все знают, что же это такое. Итак, сегодня мы простыми словами расскажем о том, что такое Docker, чем это отличается от виртуализации, покажем подробный процесс инсталляции на CentOS 7 и установим просто графический интерфейс Portainer, для управления контейнерами. Также немного коснемся команд для использования Docker. Что такое Docker? Docker - это платформа, которая может “упаковать” приложение, его зависимости, middleware и так далее в так называемый “контейнер”, после чего у вас появится возможность развернуть данный контейнер на любом сервере, на котором установлен Docker - причем буквально за доли секунды, одной командой. Благодаря этим решается сразу несколько задач - в первую очередь, процесс запуска приложения на сервере многократно упрощается, во вторую - какие-либо баги в контейнеризированном приложении никак не повлияют на сам сервер, также как и специфические настройки сервера не повлияют на приложение. И хоть кажется, что Docker выглядит и работает как виртуальная машина, на самом деле они очень разные: виртуальная машина эмулирует сервер целиком, включая все аппаратные ресурсы, а контейнер изолирует приложение, процессы, юзеров и файловую систему. При этом все контейнеры используют общее Linux ядро хоста и запускается в нативном режиме только на Linux машинах, но зато на одной машине можно запустить примерно в 5-6 раз больше контейнеров, чем виртуальных машинах. Ниже на схеме показаны различия: Установка Docker Как было упомянуто в начале статьи, устанавливать Докер мы будем на CentOS 7 - процесс установки крайне простой и быстрый. Итак, сначала необходимо установить с помощью yum несколько пакетов: yum install -y yum-utils device-mapper-persistent-data Lvm2 Далее необходимо установить stable репозиторий для Докера, который вам понадобится, даже если вы захотите устанавливать билды из edge и test репозиториев: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo Затем устанавливаем сам Docker: yum install docker-ce И, наконец, запускаем Docker: systemctl start docker Проверяем, что Docker запустился и работает в два шага: systemctl status docker Вы должны увидеть следующий вывод: После этого пробуем развернуть контейнер hello-world: docker run hello-world Если все шаги были выполнены корректно, то на экране должно появится следующее: Установка Portainer Portainer - это очень удобный графический интерфейс для управления Docker или Docker Swarm. Устанавливается он практически в одно действие - так как сам точно также является контейнером. Итак: Создаем разметку для Portainer: docker volume create portainer_data И затем запускаем сам контейнер: docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer После чего заходите на сетевой адрес вашего сервера на порт 9000, и вы должны увидеть окно с предложением установить пароль администратора: Далее выбираем где находится наш Докер - на этом же сервере, или на другом (в нашем случае - Local) и кликаем Connect. После чего вас встретит красивый дэшборд: Я предлагаю вам попробовать разобраться со всем многообразием дэшборда самим и задавать нам вопросы в комментариях - а мы пока продемонстрируем несколько фич. Итак, сначала кликните на Containers - вы увидите все имеющиеся контейнеры с информацией о них: Как вы можете видеть, у нас на данный момент запущен только один контейнер - Portainer, и доступ к нему открыт по порту 9000 (столбец Published Ports), и адрес во внутренней сети Docker - 172.17.0.2. Далее кликните на App Templates в меню справа - и вы увидите весь список приложений, который можно запустить одним кликом: Зайдем во вкладку Httpd: Сперва, назовите данный контейнер как-нибудь - мы назвали test-merionet. Затем, можете кликнуть на Show advanced options и вы увидите возможность выбора какой порт, протокол и том будет использоваться данным контейнером. Затем просто нажмите на Deploy the container. Пройдет буквально несколько секунд и вас должно перекинуть обратно на вкладку Containers, но, с уже вторым запущенным контейнером: Отсюда вы увидите, что httpd сервер доступен на 32768 порту. Итак, пробуем зайти на данный сервер через браузер: Вы должны будете увидеть надпись It works! так же как на скриншоте выше - дальнейшую настройку httpd мы пока оставляем за кадром. Донастройка Docker и полезные команды Итак, вы уже познакомились с Docker и получили представление о его возможностях. Ниже в тексте мы опишем действия, которые также необходимо сделать после установки и некоторые команды, без которых буквально трудно жить, если активно используешь Докер. Первым делом, настройте автозапуск для сервиса Docker: systemctl enable docker Затем, вы можете проверить запущенные контейнеры в консоли (на случай если вам не нравится идея использования GUI) с помощью команды docker ps Теперь немного о командах и синтаксисе - будем показывать на примерах: Допустим, нам нужно запустить CentOS и выполнить в нем команду echo: docker run centos echo “Hello from Merion Networks” Запустить CentOS и подключиться к его терминалу: docker run -t-i centos /bin/bash Можете сразу указать нужные порты с помощью ключа -p и запустить контейнер в бэкграунде с помощью ключа --d: docker run -p 80:80 --d nodejs-app Итак, совсем немного об опциях для команды docker run - полный список можно найти по ссылке https://docs.docker.com/engine/reference/commandline/run/#description -p - открываем конкретные порты через пробел - порт доступа и порт на контейнере, к примеру docker run -p 9876:80 %imagename% -P - открываем сразу все порты; -t - подключение к терминалу контейнера; -i - интерактивный режим, STDIN все время будет открыт; Обязательно посетите Docker Hub, так как там можно найти кучу интересных контейнеров с примерами их установки и доступом к Docker-файлу, это что-то вроде GitHub только для контейнеров. Заключение На этом всё, спасибо за внимание! Пишите в комментариях, что еще вам интересно узнать про Докер - в следующих статьях мы покроем такие темы как: создание своего собственного Докер-файла и образа, как подключить папку файловой системы с вашего хоста, интересное на Docker Hub и так далее.
img
Предыдущий материал из цикла про ARP в IPv4. Ждет вас по ссылке. Как хост может узнать, следует ли пытаться отправить пакет хосту через сегмент, к которому он подключен, или отправить пакет на маршрутизатор для дальнейшей обработки? Если хост должен отправлять пакеты на маршрутизатор для дальнейшей обработки, как он может узнать, на какой маршрутизатор (если их несколько) отправлять трафик? Эти две проблемы вместе составляют проблему шлюза по умолчанию. Для IPv4 проблему довольно легко решить, используя префикс и длину префикса. Рисунок ниже демонстрирует нам это. Реализации IPv4 предполагают, что любой хост в пределах одной подсети IPv4 должен быть физически подключен к одному проводу. Как реализация может определить разницу? Маска подсети - это еще одна форма длины префикса, которая указывает, где заканчивается сетевой адрес и начинается адрес хоста. В этом случае предположим, что длина префикса равна 24 битам, или сетевой адрес равен /24. 24 указывает вам, сколько битов задано в маске подсети: 24 bits = 11111111.11111111.11111111.0000000 Поскольку в IPv4 используется десятичная запись маски, это также можно записать как 255.255.255.0. Чтобы определить, находится ли C на том же проводе, что и A, A будет: Логическое умножение маски подсети с адресом локального интерфейса Логическое умножение маски подсети с адресом назначения Сравните два результата; если они совпадают, целевой хост находится на том же канале связи, что и локальный интерфейс На рисунке ниже это продемонстрировано. На рисунке выше показано четыре IPv4-адреса; предположим, что A должен отправлять пакеты в C, D и E. Если A знает, что длина префикса локального сегмента составляет 24 бита либо с помощью ручной настройки, либо с помощью DHCPv4, то он может просто посмотреть на 24 наиболее значимых бита каждого адреса, сравнить его с 24 наиболее значимыми битами своего собственного адреса и определить, находится ли пункт назначения на сегменте или нет. Двадцать четыре бита IPv4-адреса создают хороший разрыв между третьей и четвертой секциями адреса (каждая секция IPv4-адреса представляет собой 8 бит адресного пространства, в общей сложности 32 бита адресного пространства). Любые два адреса с такими же левыми тремя секциями, что и у A, называемые сетевым адресом, находятся в одном сегменте; любой адрес, которого нет в сегменте. В этом случае сетевой адрес для A и C совпадает, поэтому A будет считать, что C находится в одном сегменте, и, следовательно, будет отправлять пакеты C напрямую, а не отправлять их на маршрутизатор. Для любого пункта назначения, который A считает вне сегмента, он будет отправлять пакеты на IPv4-адрес конечного пункта назначения, но на MAC-адрес шлюза по умолчанию. Это означает, что маршрутизатор, выступающий в качестве шлюза по умолчанию, примет пакет и переключит его на основе IPv4-адреса назначения. Как выбирается шлюз по умолчанию? Он либо настраивается вручную, либо включается в параметр DHCPv4. А что насчет D? Поскольку сетевые части адресов не совпадают, A будет считать, что D находится вне сегмента. В этом случае A отправит любой трафик для D на свой шлюз по умолчанию, которым является B. Когда B получит эти пакеты, он поймет, что A и D достижимы через один и тот же интерфейс (на основе своей таблицы маршрутизации), поэтому он будет отправлять ICMP-перенаправление на A, говоря ему, что нужно отправлять трафик на D напрямую, а не через B. IPv6 представляет собой более сложный набор проблем, которые необходимо решить при выборе шлюза по умолчанию, потому что IPv6 предполагает, что одно устройство может иметь много адресов IPv6, назначенных конкретному интерфейсу. Рисунок ниже демонстрирует это. На рисунке выше предположим, что администратор сети настроил следующие политики: Ни один хост не может подключаться к A, если у него нет адреса в диапазоне адресов 2001: db8: 3e8: 110 ::/64. Ни один хост не может подключиться к D, если у него нет адреса в диапазоне адресов 2001: db8: 3e8: 112 ::/64. Примечание: В реальном мире вы никогда не построили бы такую политику; это надуманная ситуация, чтобы проиллюстрировать проблему, поставленную в сети минимального размера. Гораздо более реальной проблемой такого же типа была бы одноадресная переадресация обратного пути (uRPF). Чтобы эти политики работали, администратор назначил 110::3 и 112::12 хосту C и 111::120 хосту F. Это может показаться странным, но совершенно законно для одного сегмента иметь несколько подсетей IPv6, назначенных в IPv6; также совершенно законно иметь одно устройство с несколькими адресами. На самом деле, в IPv6 существует множество ситуаций, когда одному устройству может быть назначен диапазон адресов. Однако с точки зрения длины префикса нет двух адресов, назначенных C или F, в одной подсети. Из-за этого IPv6 не полагается на длину префикса, чтобы определить, что находится в сегменте, а что нет. Вместо этого реализации IPv6 ведут таблицу всех подключенных хостов, используя запросы соседей, чтобы определить, что находится в сегменте, а что нет. Когда хост хочет отправить трафик из локального сегмента, он отправляет трафик на один из маршрутизаторов, о котором он узнал из объявлений маршрутизатора. Если маршрутизатор получает пакет, к которому, как он знает, другой маршрутизатор в сегменте имеет лучший маршрут (поскольку у маршрутизаторов есть таблицы маршрутизации, которые говорят им, какой путь выбрать к какому-либо конкретному месту назначения), маршрутизатор отправит сообщение перенаправления ICMPv6, сообщающее хосту использовать какой-либо другой маршрутизатор первого перехода для достижения пункта назначения. В следующей статьей мы поговорим про пакетную коммутацию.
img
CentOS Web Panel (CWP) поможет легко установить стек LAMP или LEMP. Это бесплатное решение и работает на CentOS. Если вы ищете место для размещения CMS вроде WordPress, Joomla и т.д., или PHP-приложения, где вам нужен веб-сервер, база данных, электронные письма, мониторинг и безопасность, то у вас есть два варианта. Вы приобретаете виртуальную машину у одног из публичных облачных провайдеров и устанавливаете каждое программное обеспечение вручную. Это может занять много времени, и вам нужны навыки системного администрирования. Или же выбираете способ попроще - вы получаете облачную виртуальную машину и устанавливаете CWP. Затем вы устанавливаете необходимое программное обеспечение через графический интерфейс пользователя. Это займет гораздо меньше времени, чем делать это вручную. CWP позволяет установить более 50 программ/компонентов, самые популярные из которых указаны ниже. Веб-стек - Apache, Nginx, Varnish Стек приложений - PHP-FPM, MySQL, PostgreSQL, phpMyAdmin Безопасность - сертификаты TLS, брандмауэр CSF, Mod Security с правилами OWASP DNS и электронная почта - DNS-сервер, почтовые ящики, AntiSpam, Postfix Мониторинг - метрики сервера, такие как CPU, файловая система, память Диспетчер файлов Crontab В целом она выглядит многообещающим для размещения приложений на основе PHP. Давайте установим CWP и посмотрим, как он выглядит. Установка CWP на CentOS Следующая демонстрация выполняется на виртуальной машине Kamatera. Войдите на сервер CentOS 7.x с учетной записью root-а или учетной записью с привилегией sudo Выполните следующую команду для обновления YUM и установки CWP yum -y install wget yum -y update wget http://centos-webpanel.com/cwp-el7-latest sh cwp-el7-latest Установка займет несколько минут. После окончания вы должны получить соответствующее уведомление. ############################# # CWP Installed # ############################# Go to CentOS WebPanel Admin GUI at http://SERVER_IP:2030/ http://167.71.1x1.xx:2030 SSL: https://167.71.1x1.xx:2031 Для вступления изменений в силу потребуется перезагрузка, которую можно выполнить командой: shutdown -r now К веб-панели CWP можно подключиться по 2030 (HTTP) и 2031 (HTTPS) портам. При первом входе в качестве имени пользователя можно использовать root и его пароль, и после входа в систему вы должны увидеть что-то подобное. Интерфейс выглядит аккуратным и чистым. В левой части навигации можно найти все параметры, необходимые для установки, настройки и управления программным обеспечением и сервером.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59