По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
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
Для начальной настройки маршрутизатора (здесь и далее в качестве примера взяты устройства компании Cisco) нужно выполнить следующие шаги в режиме конфигурации роутера, перейти к которому можно командой configure terminal: 1. Задаем название устройства Router(config)# hostname 2. Задаем пароль для входа в привилегированный режим. Router(config)# enable secret password 3. Задаем пароль на подключение через консоль. Router(config)# line console 0 Router(config-line)# password password Router(config-line)# login 4. Задаем пароль для удаленного доступа по Telnet / SSH. Router(config-line)# line vty 0 4 Router(config-line)# password password Router(config-line)# login Router(config-line)# transport input {ssh | telnet} 5. Шифруем все пароли введенные на устройстве. Router(config-line)# exit Router(config)# service password-encryption 6. Задаем баннер, который будет выводится при подключении к устройству. В данном баннере обычно указывается правовая информация о последствиях несанкционированного подключения Router(config)# banner motd delimiter message delimiter 7. Сохраняем конфигурацию. Router(config)# end Router# copy running-config startup-config Пример базовой настройки маршрутизатора В данном руководстве на маршрутизаторе R1 из топологии ниже будет сделана первичная конфигурация: Чтобы настроить маршрутизатор вводим следующие команды: Router> enable Router# configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)# hostname R1 R1(config)# Все методы доступа к настройкам маршрутизатора должны быть защищены. Привилегированный режим EXEC дает пользователю полный доступ к устройству и его настройкам. Поэтому нужно надёжно защитить доступ к этому режиму. Следующие команды позволяют защитить доступ к пользовательскому и привилегированному режимам EXEC, включает Telnet/SSH и шифрует все пароли в конфигурации. R1(config)# enable secret class R1(config)# R1(config)# line console 0 R1(config-line)# password cisco R1(config-line)# login R1(config-line)# exit R1(config)# R1(config)# line vty 0 4 R1(config-line)# password cisco R1(config-line)# login R1(config-line)# transport input ssh telnet R1(config-line)# exit R1(config)# R1(config)# service password-encryption R1(config)# Далее сконфигурируем баннер Message of the Day. Обычно такой баннер включает в себя юридическое уведомление предупреждающее пользователей о том, что доступ к устройству разрешен только авторизованным лицам. Данный тип баннера конфигурируется следующим образом: R1(config)# banner motd # Enter TEXT message. End with a new line and the # *********************************************** WARNING: Unauthorized access is prohibited! *********************************************** # R1(config)# Настройка интерфейсов маршрутизатора На данный момент на нашем роутере выполнена первичная настройка. Так как без настроек интерфейсов роутеры не будут доступны для других устройств, далее сконфигурируем его интерфейсы. На маршрутизаторах компании Cisco бывают разные интерфейсы. Например, маршрутизатор Cisco ISR 4321 оснащен двумя гигабитными интерфейсами. GigabitEthernet 0/0/0 GigabitEthernet 0/0/1 Для настройки интерфейсов маршрутизатора нужно ввести следующие команды: Router(config)# interface type-and-number Router(config-if)# description description-text Router(config-if)# ip address ipv4-address subnet-mask Router(config-if)# ipv6 address ipv6-address/prefix-length Router(config-if)# no shutdown Как только порт включиться, на консоли выведется соответствующее сообщение. Несмотря на то, что команда description не требуется для включения интерфейса, все же рекомендуется ее использовать. Это может быть полезно при устранении неполадок в производственных сетях, предоставляя информацию о типе подключенной сети. Например, если интерфейс подключается к поставщику услуг или провайдеру услуг, команда description будет полезна для ввода внешнего соединения и контактной информации. Длина текста description составляет 240 символов. Команда no shutdown используется для включения интерфейса, это похоже на включение питания на интерфейсе. Также маршрутизатор следует подключить к другому устройству, чтобы установилась связь на физическом уровне. Пример настройки интерфейсов на маршрутизаторе В данном примере на маршрутизаторе R1 включим непосредственно подключенные порты. Для настройки портов на R1 введите следующие команды: R1> enable R1# configure terminal Enter configuration commands, one per line. End with CNTL/Z. R1(config)# interface gigabitEthernet 0/0/0 R1(config-if)# description Link to LAN R1(config-if)# ip address 192.168.10.1 255.255.255.0 R1(config-if)# ipv6 address 2001:db8:acad:10::1/64 R1(config-if)# no shutdown R1(config-if)# exit R1(config)# *Aug 1 01:43:53.435: %LINK-3-UPDOWN: Interface GigabitEthernet0/0/0, changed state to down *Aug 1 01:43:56.447: %LINK-3-UPDOWN: Interface GigabitEthernet0/0/0, changed state to up *Aug 1 01:43:57.447: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0/0, changed state to up R1(config)# R1(config)# R1(config)# interface gigabitEthernet 0/0/1 R1(config-if)# description Link to R2 R1(config-if)# ip address 209.165.200.225 255.255.255.252 R1(config-if)# ipv6 address 2001:db8:feed:224::1/64 R1(config-if)# no shutdown R1(config-if)# exit R1(config)# *Aug 1 01:46:29.170: %LINK-3-UPDOWN: Interface GigabitEthernet0/0/1, changed state to down *Aug 1 01:46:32.171: %LINK-3-UPDOWN: Interface GigabitEthernet0/0/1, changed state to up *Aug 1 01:46:33.171: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0/1, changed state to up R1(config)# Информационные сообщения говорят нам, что оба порта включены. Проверка настроек портов Для проверки настроек портов используются несколько команд. Самыми полезные из них это команды show ip interface brief и show ipv6 interface brief. R1# show ip interface brief Interface IP-Address OK? Method Status Protocol GigabitEthernet0/0/0 192.168.10.1 YES manual up up GigabitEthernet0/0/1 209.165.200.225 YES manual up up Vlan1 unassigned YES unset administratively down down R1# show ipv6 interface brief GigabitEthernet0/0/0 [up/up] FE80::201:C9FF:FE89:4501 2001:DB8:ACAD:10::1 GigabitEthernet0/0/1 [up/up] FE80::201:C9FF:FE89:4502 2001:DB8:FEED:224::1 Vlan1 [administratively down/down] unassigned R1#
img
С чего начинается Linux? LPI (Linux Professional Institute) считает, что изучение необходимо начинать с темы "Обнаружение и настройка комплектующих". Это работа с "железом", это работа с комплектующими вся аппаратная часть, то что мы видим и настраиваем. На сайте LPI (www.lpi.org) мы можем найти, что должен знать обучающийся Linux. Включение и отключение встроенного "железа" Настройка системы с помощью или без помощи внешних устройств. Разница между устройствами хранения информации Разница между устройствами, поддерживающими "Горячую замену" Выделение аппаратных ресурсов для устройств Инструменты и утилиты для просмотра списка оборудования Инструменты и утилиты для работы с USB Разбор понятий sysfs, udev, dbus. Далее. Возьмем для простоты Ubuntu 20.04 Директория /sys Содержится вся информация об подключенных устройствах. В данную директорию монтируется файловая система sysfs. В данной директории есть определенных набор основных папок: devices/ - все устройства ядра bus/ - перечень шин drivers/ - каталог драйверов block/ - каталог блочных устройств class/ - группировка устройств по классам. Навигацию по папкам осуществляем с помощью команды cd. Учитывая вложенность папок переход на уровень вверх, т.е в родительскую папку используем cd .. , где двоеточие обозначает родительский каталог. А также переход в любую папку, например, cd /sys/bus. Следующий момент, если мы зайдем в папку с устройствами, то мы можем увидеть, как ОС наша видит устройства. Неудобно. Чтобы удобно было работать с устройствами, используется udev. Он позволяет ОС предоставлять устройства в удобно используемом виде, чтобы было понятно нам. Далее папка /proc - Она находится в корне нашей ОС и содержит информацию о всех запущенных процессах. Она создается в оперативной памяти при загрузке ПК. Количество фалов зависит от конфигурации данной системы. Для работы с файлами необходимы права суперпользователя. Внесённые изменения сохраняются только до конца сеанса. В данную папку монтируется виртуальная система procfs. В ней находится информация о состоянии ядра и вообще операционной системе в целом. Вот так выглядит данная папка. Мы можем посмотреть всю информацию, которая нам известна о процессоре. Данная информация содержится в файле cpuinfo. Для вывода информации, содержащейся в файле, используем команду cat имя_файла. Результат работы команды cat cpuinfo. Есть еще интересный файл mounts. Он показывает все смонтированные файловые системы. Результат вывода будет примерно такой. Можно увидеть, когда мы просматриваем содержимое каталога командой ls , то файлы подсвечиваются белым цветом, а каталоги синим. Переходим немного глубже по дереву каталогов файловой системы cd /prox/sys в данной папке все о настройках и процессах, происходящих с нашей текущей файловой системой. В данной директории есть несколько подпапок. И зайдем в подпапку, относящуюся к файловой системе fs. Посмотрим, например file-max в данном файле информация о том сколько файлов одновременно может открыть пользователь. В последней версии число таких фалов увеличилось. До версии 20.04, число файлов было по умолчанию 204394. Можно изменить число или данные, например, с помощью команды echo 10000000000> file-max Все изменения, которые мы делаем в данной директории они сохраняются только до перезагрузки! Это надо учитывать. Еще одна основная папка в корневой директории папка /dev она в себе содержит интерфейсы работы с драйверами ядра. /dev/sd буква - жесткий диск (в системах на ядре Linux) /dev/sd буква номер раздел диска /dev/sr номер (/dev/scd номер) CD-ROM /dev/eth номер Сетевой интерфейс Ethernet /dev/wlan номер Сетевой интерфейс Wireless /dev/lp номер Принтер /dev/video номер - устройство изображений, камеры, фотоаппараты. /dev/bus/usb/001/номер устройство номер на шине USB /dev/dsp звуковой вывод Набор оборудования Команды вывода перечня устройств. Lsmod информация о модуле ядра Lspci - информация об устройствах PCI Lspcmcia - информация об устройствах PCMCIA Lsusb - информация о шине USB Lshw детальная информация о комплектующих. Команда lsmod утилита которая показывает нам модули ядра. Модуль ядра - это объект, который содержит код позволяющий расширить функционал ядра. Вот так выглядит ее вывод. По сути, если проводить аналогию с ОС Windows это драйвера. Вывод команды lshw Данная команда сканирует все устройства и выводит подробную информацию по ним и достаточно детально. Утилиты для работы с модулем ядра или утилиты управления моделями ядра. Lsmod информация о модулях ядра Modinfo - информация о конкретном модуле Rmmod - удаление модуля ядра Insmod установка модуля ядра Modprobe деликатное удаление или добавление модуля ядра Фактически эти команды используются для добавления и удаления "драйверов" устройств в linux системе. В большинстве случаев ОС самостоятельно подключит устройство, но бывает такое, что устройство не стандартное и требуется добавить модель, для того чтобы ядро ОС, корректно работало с данным устройством. Rmmod и insmod - команды грубые и не умеют работать с зависимостями, поэтому необходимо использовать Modprobe с различными ключами. Взаимодействие с CPU, основные понятия IRQ - механизм прерываний IO адреса обмен информацией между устройствами и CPU DMA обращение к ОЗУ минуя CPU Выделение ресурсов. IRQ - механизм прерываний это система которая сообщает центральному процессору о наступлении какого либо события, на которое процессор должен отреагировать. Есть определенные адреса прерываний, их можно увидеть в биосе ПК. Есть стандартные номера прерываний. Ранее была необходимость при конфликте устройств назначать в ручном режиме данные прерывания, в настоящее время с появлением технологии Plug and Play, данная потребность исчезла. IO адреса это область памяти в которой процессор считывает информацию об устройствах и туда же ее записывает. Это выделенный диапазон. Вообще она бывает в памяти и адресация по портам. DMA- технология появилась относительно недавно и позволяет устройствам обращаться к памяти минуя процессор. Существенно повышает быстродействие. Все технологии настраиваются автоматически. Устройства хранения PATA параллельный интерфейс SATA - последовательный интерфейс SCSI - стандарт передачи данных SAS замена SCSI Современные SATA, SAS нужно понимать есть устройства, поддерживающие горячую замену и устройства, не поддерживающие горячую замену. Устройства, которые можно выдернуть из ПК, безболезненно, и это не обрушит систему, причем ОС не подвиснет, не перезагрузится, это устройства поддерживающие горячую замену, например, USB. Устройство, которое не поддерживает горячую замену, например, оперативная память. Если мы ее выдернем из материнской платы, ОС однозначно обрушится. Команда blkid показывает какие устройства у нас смонтированы. Нужно отметить, что у каждого устройства есть уникальный UUID, что udev умеет читать UUID, и он монтирует в понятном виде нам.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59