По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В продолжение статьи про Docker, сегодня мы расскажем про Dockerfile — скрипт, который позволяет автоматизировать процесс построения контейнеров — шаг за шагом, используя при этом base образ. Докерфайлы и синтаксис для их создания Как уже было сказано выше, каждый Докерфайл — по сути скрипт, который автоматически выполняет определенные действия или команды в base образе, для формирования нового образа. Все подобные файлы начинаются с обозначения FROM — также как и процесс построения нового контейнера, далее следуют различные методы, команды, аргументы или условия, после применения которых получится Docker контейнер. Для начала, быстренько пройдемся по синтаксису — он, кстати говоря, крайне простой, с командами, говорящими самими за себя. В Докер файлах содержится два типа основных блоков — комментарии и команды с аргументами. Причем для всех команд подразумевается определенный порядок — подробнее об этом ниже. Ниже типичный пример синтаксиса, где первая строка является комментарием, а вторая — командой. # Print «Hello from Merionet!» RUN echo «Hello from Merionet!!» Перед тем, как переходить к собственно написанию собственно Докерфайла, сначала разберем все возможные команды. Все команды в Докерфайлах принято указывать заглавными буквами — к примеру RUN, CMD и т.д. Команда ADD — данная команда берет два аргумента, путь откуда скопировать файл и путь куда скопировать файлы в собственную файловую систему контейнера. Если же source путем является URL (т.е адрес веб-страницы) — то вся страница будет скачена и помещена в контейнер. # Синтаксис команды: ADD [исходный путь или URL] [путь назначения] ADD /my_merionet_app /my_merionet_app Команда CMD — довольно таки похожая на команду RUN, используется для выполнения определенных программ, но, в отличие от RUN данная команда обычно применяется для запуска/инициации приложений или команд уже после их установки с помощью RUN в момент построения контейнера. # Синтаксис команды: CMD %приложение% «аргумент», «аргумент», .. CMD «echo» «Hello from Merionet!». Команда ENTRYPOINT устанавливает конкретное приложение по умолчанию, которое используется каждый раз в момент построения контейнера с помощью образа. К примеру, если вы установили определенное приложение внутри образа и вы собираетесь использовать данный образ только для этого приложения, вы можете указать это с помощью ENTRYPOINT, и каждый раз, после создания контейнера из образа, ваше приложение будет воспринимать команду CMD, к примеру. То есть не будет нужды указывать конкретное приложение, необходимо будет только указать аргументы. #Синтаксис команды: ENTRYPOINT %приложение% «аргумент» # Учтите, что аргументы опциональны — они могут быть предоставлены командой CMD или #во время создания контейнера. ENTRYPOINT echo #Синтаксис команды совместно с CMD: CMD «Hello from Merionet!» ENTRYPOINT echo Команда ENV используется для установки переменных среды (одной или многих). Данные переменные выглядят следующим образом «ключ = значение» и они доступны внутри контейнера скриптам и различным приложениям. Данный функционал Докера, по сути, очень сильно увеличивает гибкость в плане различных сценариев запуска приложений. # Синтаксис команды: ENV %ключ% %значение% ENV BASH /bin/bash Команда EXPOSE используется для привязки определенного порта для реализации сетевой связности между процессом внутри контейнера и внешним миром — хостом. # Синтаксис команды: EXPOSE %номер_порта% EXPOSE 8080 Команда FROM — данную команду можно назвать одной из самых необходимых при создании Докерфайла. Она определяет базовый образ для начала процесса построения контейнера. Это может быть любой образ, в том числе и созданные вами до этого. Если указанный вами образ не найден на хосте, Докер попытается найти и скачать его. Данная команда в Докерфайле всегда должна быть указана первой. # Синтаксис команды: FROM %название_образа% FROM centos Команда MAINTAINER — данная команда не является исполняемой, и просто определяет значение поля автора образа. Лучше всего ее указывать сразу после команды FROM. # Синтаксис команды: MAINTAINER %ваше_имя% MAINTAINER MerionetNetworks Команда RUN - является основной командой для исполнения команд при написании Докерфайла. Она берет команду как аргумент и запускает ее из образа. В отличие от CMD данная команда используется для построения образа (можно запустить несколько RUN подряд, в отличие от CMD). # Синтаксис команды: RUN %имя_команды% RUN yum install -y wget Команда USER — используется для установки UID или имени пользователя, которое будет использоваться в контейнере. # Синтаксис команды: USER %ID_пользователя% USER 751 Команда VOLUME — данная команда используется для организации доступа вашего контейнера к директории на хосте (тоже самое, что и монтирование директории) # Синтаксис команды: VOLUME [«/dir_1», «/dir2» ...] VOLUME [«/home»] Команда WORKDIR указывает директорию, из которой будет выполняться команда CMD. # Синтаксис команды: WORKDIR /путь WORKDIR ~/ Создание своего собственного образа для установки MongoDB Для начала создадим пустой файл и откроем его с помощью vim: vim Dockerfile Затем мы можем указать комментариями для чего данный Докерфайл будет использоваться и все такое — это не обязательно, но может быть полезно в дальнейшем. На всякий случай напомню — все комментарии начинаются с символа #. ######## # Dockerfile to build MongoDB container images # Based on Ubuntu ######## Далее, укажем базовый образ: FROM ubuntu Затем, укажем автора: MAINTAINER Merionet_Translation После чего обновим репозитории(данный шаг совершенно необязателен, учитывая, что мы не будем их использовать ) : RUN apt-get update После укажем команды и аргументы для скачивания MongoDB (установку проводим в соответствии с гайдом на официальном сайте): RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 RUN echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/mongodb.list RUN apt-get update RUN apt-get install -y mongodb-10gen RUN mkdir -p /data/db После чего укажем дефолтный порт для MongoDB: EXPOSE 27017 CMD [«--port 27017»] ENTRYPOINT usr/bin/mongod Вот как должен выглядеть у вас финальный файл — проверьте и, затем, можно сохранить изменения и закрыть файл: ######### # Dockerfile to build MongoDB container images # Based on Ubuntu ######### FROM ubuntu MAINTAINER Merionet_Translation RUN apt-get update RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 RUN echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/mongodb.list RUN apt-get update RUN apt-get install -y mongodb-10gen RUN mkdir -p /data/db EXPOSE 27017 CMD ["--port 27017"] ENTRYPOINT usr/bin/mongod Запуск контейнера Docker Итак, мы готовы создать наш первый MongoDB образ с помощью Docker! sudo docker build -t merionet_mongodb . -t и имя здесь используется для присваивания тэга образу. Для вывода всех возможных ключей введите sudo docker build —help, а точка в конце означает что Докерфайл находится в той же категории, из которой выполняется команда. Далее запускаем наш новый MongoDB в контейнере! sudo docker run -name MerionetMongoDB -t -i merionet_mongodb Ключ -name используется для присвоения простого имени контейнеру, в противном случае это будет довольно длинная цифро-буквенная комбинация. После запуска контейнера для того, чтобы вернуться в систему хоста нажмите CTRL+P, а затем CTRL+Q. Заключение Всем спасибо за внимание, теперь вы можете очень много экспериментировать с созданием Докерфайлов и ваших собственных образов, не бойтесь пробовать упростить привычные вам процессы установки приложений с помощью контейнеров — возможности крайне велики, и мы постараемся охватить их в следующих статьях.
img
Настроим VoIP-шлюз Eltex TAU-16.IP в качестве мини - АТС.Данное устройство нет смысла использовать как полноценную мини - АТС, так как в ней будут отсутствовать многие функции, но в некоторых случаях такой вариант тоже применим. $dbName_ecom = "to-www_ecom"; $GoodID = "3152129363"; mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); mysql_select_db($dbName_ecom) or die(mysql_error()); $query_ecom = "SELECT `model`, `itemimage1`, `price`, `discount`, `url`, `preview115`, `vendor`, `vendorCode` FROM `items` WHERE itemid = '$GoodID';"; $res_ecom=mysql_query($query_ecom) or die(mysql_error()); $row_ecom = mysql_fetch_array($res_ecom); echo 'Кстати, купить '.$row_ecom['vendor'].' '.$row_ecom['vendorCode'].' можно в нашем магазине Merion Shop по ссылке ниже. С настройкой поможем 🔧 Купить '.$row_ecom['model'].''.number_format(intval($row_ecom['price']) * (1 - (intval($row_ecom['discount'])) / 100), 0, ',', ' ').' ₽'; $dbName_ecom = "to-www_02"; $GoodID = "3152129363"; mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); mysql_select_db($dbName_ecom) or die(mysql_error()); Главным достоинством шлюза является поддержка SIP-транков и наличие аналоговых портов FXS одновременно. Обычно Вы можете приобрести более доступную аналоговую мини - АТС с таким же количеством аналоговых портов, но возможность подключения входящих SIP-линий отсутствует или предполагает дополнительные затраты на лицензии или дополнительное оборудования. Или же Вы можете приобрести VoIP АТС с поддержкой SIP-транков и телефонов из коробки, и так же значительно дешевле. Но чтобы подключить к ней аналоговые телефоны необходимо докупить VoIP шлюз(ы) с количеством портов, соответствующим количеству аппаратов. В первую очередь следует настроить сеть. В самом простом случае, достаточно изменить адрес шлюза, который установлен по-умолчанию. Настройки выполняются в разделе "Сетевые настройки/Сеть": Если же необходимо разделить сеть для голоса и для управления, следует настроить сети на вкладке "VLAN", указав адреса для каждой сети, а так же указать, по каким сетям будет передаваться голос, сигнальная информация и осуществляться управление (указывается внизу страницы). Настройки выполняются в разделе "Сетевые настройки/VLAN": Общий принцип настройки устройства в качестве АТС заключается в следующем: создается два SIP-профиля, один из которых отвечает за связь с внешним миром (с оператором VoIP), а второй за работу аналоговых портов. В первом профиле задаются настройки транка для связи с оператором адрес сервера, порт, данные для регистрации (если требуется), поддерживаемые кодеки и план нумерации, согласно которому устройство будет отправлять вызовы на этот транк. Второй профиль создается без регистрации и дает возможность совершать вызовы по коротким номерам внутри шлюза. План набора этого профиля указывает устройству, какие вызовы выполняются внутри шлюза, а какие следует направлять во внешний мир. Итак, настройки профиля для связи с провайдером. Выполняются в разделе "PBX / Профили SIP/H323 / Профиль 1". Во вкладке "SIP настройки профиля": Здесь указываются данные, которые предоставляет оператор связи. Основные данные адрес, куда должен обращаться шлюз для совершения вызовов. Если используется транк с регистрацией, необходимо включить эту функцию в поле 1, и указать данные для регистрации (логин/пароль) в полях 2 и 3. Остальные настройки можно оставить по-умолчанию. Во вкладке "Кодеки" задаются используемые кодеки, а так же есть возможность задать настройки для передачи модема и факса. Эти данные так же обычно предоставляет оператор. В общем случае, у нас всегда должен работать кодек G.711a. Для успешного прохождения факсов обычно отключаем опцию "Передача модема", а в параметре "Основной кодек передачи факса" выбираем "Т38", резервный G.711a. Так же, с нашим оператором возникают проблемы с опциями "Эхокомпенсатор" и "Комфортный шум", поэтому их так же деактивируем. Переходим ко вкладке "План набора". Настройки на этой вкладке позволяют совершать вызовы через сеть нашего оператора. Здесь указываем префиксы, набрав которые, абонент должен звонить через внешнюю сеть. В данном случае, удобнее использовать опцию "Табличный план набора": Нажимаем кнопку "Добавить префикс": Указываем префикс, минимальное количество цифр в набираемом номере. В поле "Протокол и направление" в нашем случае указываем "SIP-транк" (транк по ip-адресу без регистрации). Тип номера Subscriber (при звонках внутри оператора связи) или National (при звонках на сеть МГ). На самом деле, вероятнее всего, на стороне оператора этот параметр все равно будет корректироваться. В поле "ip-адрес" указывается адрес станции оператора, на который обращается шлюз для выполнения вызовов. Этот же адрес указывался в настройках SIP-профиля. В форме "Абонентские порты" можно указать, какие именно абоненты могут выполнять вызовы по этому правилу. Переходим к настройке Профиля 2 (для локальных абонентов). Собственно, вся настройка сводится к настройке Плана набора, в основных настройках все поля оставляем по-умолчанию. Во вкладке "План набора" выбираем опцию "Строчный план набора" и вписываем следующую строчку: 1xx@192.168.130.58|x.@192.168.130.57 где: 1xx - нумерация, используемая для внутренних абонентов. В нашем случае, внутренние номера телефонов имеют вид 101,102, 103 и т.д. 192.168.130.58 локальный адрес нашего устройства. То есть, если внутренний абонент набирает номер вида 101, 102 и т.д., вызов осуществляется внутри устройства. x.@192.168.130.57 - данная строчка означает, что все остальные вызовы будут направляться на адрес 192.168.130.57 (адрес оператора), то есть через транк. Теперь настроим абонентские порты. Переходим на вкладку "PBX/Абонентские порты" В этой вкладке задаем внутренние номера, а в поле "SIP/H323 профиль" указываем тот профиль, который настраивали для внутренней связи ( в нашем случае, Профиль 2). После выполнения этих настроек исходящая связь уже должна работать. Остается настроить входящую связь. Следует помнить, что при настройке параметров на каждой вкладке следует нажимать кнопку "Применить изменения". После выполнения всех настроек необходимо нажать кнопку "Сохранить". В противном случае, после перезагрузки устройства настройки будут утеряны. Эту особенность так же можно использовать в случае, когда что-то пошло не так и необходимо вернуть исходные настройки. Перейдем к настройке входящих вызовов. Открываем вкладку "PBX/Группы вызова". Здесь нажимаем кнопку "Новая группа": Имя группы любое, пароль пропускаем, телефонный номер внешний номер, на который совершается вызов и который будет обозначен как B-номер во входящем вызове. Тип группы: групповой звонят все телефоны в группе, серийный после таймаута начинает звонить следующий телефон, при этом предыдущий продолжает звонить, циклический вызов по очереди переходит на следующий в списке порт. "SIP-профиль" - профиль, на котором работают внутренние номера (в нашем случае, Профиль 2). Кнопку "В работе" необходимо включить. После добавления группы вызова, ее нужно отредактировать: Для редактирования необходимо нажать иконку в столбце "Изменить". Здесь появилась новая вкладка "Порты", где можно добавлять или удалять порты, на которые будет поступать вызов и задавать очередность поступления вызова. На этом настройка шлюза Eltex TAU-16.IP закончена. Настройки применимы на всех устройствах серии ELTEX TAU стоечного исполнения (16,32,36,72 порта). Версия ПО в данном случае - 2.18.0.35
img
Sup! Сейчас я объясню тебе, что такое фаэрволл, он же брандмауэр и межсетевой экран. Давай сразу учиться говорить правильно! Поэтому запомни - не брандмаузер, не браузер, не фаерболл и поверь мне - никто в профессиональной среде не говорит "огненная стена" или "стена огня". Гуд, мы стали чуточку грамотнее. Видео: Что такое Firewall? | Простыми словами за 5 минут Почему он так странно называется? Всё дело в том, что это название пришло в мир сетевых технологий откуда бы вы, думали? Из пожарной безопасности, где фаэрволлом называется стена здания, из негорючих материалов, предназначенная для препятствования распространению огня на соседние части здания или другие строения. Фаэрволл, наряду с коммутаторами и роутерами является активным сетевым устройством и обеспечивает безопасность инфраструктуры. Он работает на 3 уровне модели OSI и защищает локальную сеть от неавторизованного доступа из внешних недоверенных сетей, таких как например этот ваш Интернет. В Интернете полно ужасов, там много хакеров, вредоносных файлов и ресурсов, там постоянно кто-то кого-то пытается взломать и происходят всякие кибератаки. Мы же не хотим, чтобы всё это беспрепятственно проникало в нашу сеть? В то же время, мы хотим, чтобы нормальный трафик мог свободно как входить в нашу сеть, так и покидать её. Тут нам и помогает Firewall. Он блокирует нежелательный трафик (как на вход, так и на выход) и пропускает разрешенный трафик. Делает он это с помощью специальных правил, которые называются списками контроля доступа или ACL. В этих правилах определяется какой трафик может входить в сеть и покидать её, а какой - нет. Ну, ОК, а кто определяет, что можно, а что нельзя? Сетевой администратор. Он настраивает списки контроля доступа для обеспечения прохождения нужного трафика и блокировки нежелательного. Так что, если ты не можешь смотреть ютубчик и сидеть в одноклассниках с рабочего компа - это сисадмин постарался! Самое простое, что может сделать сисадмин чтобы запретить доступ к ресурсу - это настроить ACL на блокировку IP адреса этого ресурса.А что если у ресурса много IP адресов и они постоянно меняются? Не беда - фаэрволл может решать что делать с трафиком не только на основе IP, но ещё портов, доменных имён, протоколов, и даже приложений[2]. Рассмотрим простенький пример Допустим сисадмин не нашёл ответа на свой вопрос в нашей базе знаний wiki.merionet.ru и решил заблочить её на фаэрволле для всего IT отдела, который живет в подсети 10.15.15.0/24. Для этого он создал примерно такой ACL: Action = DENY Source IP = 10.15.15.0/24 Destination =wiki.merionet.ru Destination Port = ANY Теперь инженер Фёдор с адресом 10.15.15.5 не может прочитать как настроить BGP на нашем ресурсе. В тоже время для отдела разработки, живущего в подсети 10.15.20.0/24 таких запретов нет, поэтому разработчик Илья спокойно может читать наши статьи дальше. Ну или такой пример - сисадмин Василий узнал, что бухгалтер Ирина использует приложение TikTok и снимает видео в рабочее время, загружая свои танцы под Cardi B через офисную вай-фай сеть. Вернувшись на рабочее место, Василий настроил блокировку приложения TikTok для всех Wi-Fi сетей в офисе и получил премию. Нужно сказать, что такое возможно только если фаэрволл Васи поддерживает определение приложений в трафике. Обычно такие фичи есть только у крутых Stateful фаэрволлов следующего поколения - NGFW (Next Generation Firewall) Воу, воу - что за Stateful? Есть два типа фаэрволов - Stateful и Stateless. Stateful фаэрволлы более крутые. Они понимают весь контекст траффика и следят за состоянием соединения. Если Stateful фаэрволл получает пакет, он также проверяет метаданные этого пакета, такие как порты и IP-адреса, принадлежащие источнику и получателю, длину пакета, информацию уровня 3, флаги и многое другое. Таким образом, Stateful фаэрволл анализирует пакет в потоке и может принимать решения основываясь на множестве параметров. Stateless фаэрволлы более простые, они исследуют каждый пришедший пакет изолированно и принимают решение на основании того, что сказано ACL. А на содержимое пакета и что было до него им пофиг. Кстати, мы немного слукавили, когда сказали, что фаэрволл - это устройство. На самом деле, они бывают разными. Это может быть: крутая железяка, которая стоит как машина, простенький девайс, у которого есть функции фаэрволла, как например - домашний роутер, программное обеспечение, которое устанавливается на компьюстер, виртуальная машина или вообще - облачное приложение. Программное обеспечение с функциями фаэрволла для компа называется Host-Based firewall. Его задача - защита одного хоста, на которое оно установлено. Например, почти все антивирусы имеют функции хостовых фаэрволлов. Почти во всех остальных случаях фаэрволл защищает всю сеть. Таким образом, обеспечивается двойной уровень защиты, на уровне сети и на уровне хоста. Фаэрволл - это важнейший элемент любой сети, к его настройке следует относиться предельно внимательно, в противном случае можно поставить под угрозу безопасность всей инфраструктуры. Кстати, если ты хочешь реально хочешь научиться общаться с сетевыми железками, освоить настройку сетевых протоколов и построить свою собственную сеть, то не пропусти наш большой курс по сетевым технологиям: Учиться! Кстати, еще, по промокоду PRIVET_YA_PODSYADU ты получишь скидку 10% на весь ассортимент нашего магазина shop.merionet.ru! А теперь вопрос - чтобы заблокировать facebook.com достаточно ли будет stateless firewall или необходим stateful и почему? Ответ пиши в комент.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59