По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Что это вообще такое? Docker Compose является инструментом для определения и запуска контейнерных приложений. С Compose вы получаете возможность настраивать службы используя файл YAML. С помощью одной команды Compose вы создаете и запускаете все службы в соответствии с вашей конфигурацией. Установка начинается с создания каталога проекта: $ mkdir composetest $ cd composetest Создайте файл под названием app.py и вставьте в него следующие данные: import time import redis from flask import Flask app = Flask(__name__) cache = redis.Redis(host='redis', port=6379) def get_hit_count(): retries = 5 while True: try: return cache.incr('hits') except redis.exceptions.ConnectionError as exc: if retries == 0: raise exc retries -= 1 time.sleep(0.5) @app.route('/') def hello(): count = get_hit_count() return 'Hello World! I have been seen {} times. '.format(count) В нашем случае название хоста - redis, который использует порт 6379. Создайте файл под названием needs.txt в каталоге вашего проекта и вставьте его в: flask Redis Теперь следует написать код для файла Dockerfile, содержащий все необходимые переменные для среды разработки. В каталоге вашего проекта создайте файл с именем Dockerfile (файл будет определять среду приложения) и вставьте следующее содержимое: FROM python:3.7-alpine WORKDIR /code ENV FLASK_APP app.py ENV FLASK_RUN_HOST 0.0.0.0 RUN apk add --no-cache gcc musl-dev linux-headers COPY requirements.txt requirements.txt RUN pip install -r requirements.txt COPY . . CMD ["flask", "run"] Определение сервисов осуществляется при создании файла с именем docker-compose.yml в каталоге вашего проекта со следующей информацией: version: '3' services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine" На основании содержания файла происходит запуск двух сервисов: Web и Redis, а в дальнейшем вы можете вносить в этот файл различные БД и иную важную информацию. C помощью команды Compose создайте ваше приложение, после чего из каталога проекта запустите приложение, запустив docker-compose. Вот так: $ docker-compose up Creating network "composetest_default" with the default driver Creating composetest_web_1 ... Creating composetest_redis_1 ... Creating composetest_web_1 Creating composetest_redis_1 ... done Attaching to composetest_web_1, composetest_redis_1 web_1 | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) redis_1 | 1:C 17 Aug 22:11:10.480 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo redis_1 | 1:C 17 Aug 22:11:10.480 # Redis version=4.0.1, bits=64, commit=00000000, modified=0, pid=1, just started redis_1 | 1:C 17 Aug 22:11:10.480 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf web_1 | * Restarting with stat redis_1 | 1:M 17 Aug 22:11:10.483 * Running mode=standalone, port=6379. redis_1 | 1:M 17 Aug 22:11:10.483 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. web_1 | * Debugger is active! redis_1 | 1:M 17 Aug 22:11:10.483 # Server initialized redis_1 | 1:M 17 Aug 22:11:10.483 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled. web_1 | * Debugger PIN: 330-787-903 redis_1 | 1:M 17 Aug 22:11:10.483 * Ready to accept connections Compose извлекает образ Redis, создавая образ для вашего приложения и запускает выбранные службы. В этом случае код копируется в образ во время сборки. Как вам такое? Теперь попробуйте ввести http://localhost:5000/ в браузере, чтобы чекнуть запущенное приложение. Если вы используете Docker для Linux, Docker Desktop для Mac или Docker Desktop для Windows, то теперь веб-приложение должно "смотреть" на порт 5000 на хосте Docker. Введите в своем веб-браузере адрес http://localhost:5000, чтобы увидеть сообщение Hello World. Если не сработает, вы также можете попробовать зайти на http://127.0.0.1:5000. Если вы используете Docker Machine на Mac или Windows, используйте ip MACHINE_VM docker-machine для получения IP-адреса вашего хоста Docker. Затем откройте http://MACHINE_VM_IP:5000 в браузере. Вы должны увидеть сообщение в своем браузере: Hello World! I have been seen 1 times. Переключитесь на другое окно терминала и введите docker image ls, чтобы вывести список локальных образов/контейнеров. Вывод на этом этапе должен показывать redis и web. $ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE composetest_web latest e2c21aa48cc1 4 minutes ago 93.8MB python 3.4-alpine 84e6077c7ab6 7 days ago 82.5MB redis alpine 9d8fa9aa0e5b 3 weeks ago 27.5MB Важно: Вы можете просматривать запущенные контейнеры с помощью Docker Inspect Tag или ID Запустите docker-compose из каталога вашего проекта во втором терминале, либо нажмите CTRL + C в исходном терминале, где приложение уже запущено и отредактируйте файл Compose. Отредактируйте docker-compose.yml в каталоге вашего проекта для внесения той или иной правки в веб-службе version: '3' services: web: build: . ports: - "5000:5000" volumes: - .:/code environment: FLASK_ENV: development redis: image: "redis:alpine" Новый ключ редактирует каталог проекта на хосте внутри контейнера, что позволяет изменять код без необходимости перестраивать весь образ. Ключ среды устанавливает переменную FLASK_ENV, которая сообщает о запуске в режиме разработки и перезагрузке кода при изменении. Важно: этот режим должен использоваться только при разработке. В каталоге проекта введите docker-compose up, чтобы создать приложение с обновленным файлом Compose, и запустите его. $ docker-compose up Creating network "composetest_default" with the default driver Creating composetest_web_1 ... Creating composetest_redis_1 ... Creating composetest_web_1 Creating composetest_redis_1 ... done Attaching to composetest_web_1, composetest_redis_1 web_1 | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) … Поскольку код приложения теперь добавляется в контейнер с помощью тома, вы можете вносить изменения в его код и мгновенно просматривать изменения без необходимости перестраивать образ. Измените сообщение в app.py и сохраните его: Hello from Docker!: return 'Hello from Docker! I have been seen {} times. '.format(count) Обновите результат в вашем браузере (нажмите F5 или Ctrl + F5) . Приветствие должно быть обновлено, а счетчик должен увеличиваться. Вы можете поэкспериментировать с другими командами. Если вы хотите запускать свои службы в фоновом режиме, вы можете сделать следующее: docker-compose up and use docker-compose ps to see what is currently running: $ docker-compose up -d Starting composetest_redis_1... Starting composetest_web_1... $ docker-compose ps Name Command State Ports ------------------------------------------------------------------- composetest_redis_1 /usr/local/bin/run Up composetest_web_1 /bin/sh -c python app.py Up 5000->5000/tcp Команда docker-compose run позволяет вам применять одноразовые команды к вашим сервисов. Например, чтобы увидеть, какие переменные среды доступны для веб-службы: $ docker-compose run web env Выполните команду docker-compose –help, чтобы увидеть весь список доступных команд. Если вы запустили Compose с помощью docker-compose up -d, то нужно будет остановить ваши службы после работы с ними, для этого поможет команда ниже:$ docker-compose stop Если хотите полностью уничтожить контейнер, используйте команду down.
img
Router-on-a-stick (роутер на палочке) - это термин, часто используемый для описания схемы, состоящей из маршрутизатора и коммутатора, которые соединены с использованием одного канала Ethernet, настроенного как 802.1Q транк. Стандарт 802.1Q используется для тегирования трафика, для передачи информации о принадлежности к VLAN. В этой схеме на коммутаторе настроено несколько VLAN и маршрутизатор выполняет всю маршрутизацию между различными сетями или VLAN (Inter-VLAN routing). /p> Хотя некоторые считают, что термин «маршрутизатор на палочке» звучит немного глупо, это очень популярный термин, который широко используется в сетях, где нет коммутатора 3-го уровня. Также такую схему иногда называют “леденец” – lollypop. Находите некоторое сходство? Пример Наш пример основан на сценарии, с которым вы, скорее всего, столкнетесь при работе с сетями VoIP. Поскольку реализации VoIP требуют разделения сети передачи данных и сети голоса для маршрутизации пакетов между ними, вам необходим либо коммутатор 3-го уровня, либо маршрутизатор. Эта конфигурация обеспечивает доступность и стабильность VoIP, особенно в часы пик трафика в вашей сети. Пакеты, передающиеся между VLAN маршрутизируются через один роутер, подключенный к коммутатору, используя один физический порт, настроенный как транк на обоих концах (коммутатор и маршрутизатор). Этот пример покажет вам, как настроить маршрутизатор и коммутатор Cisco для создания между ними 802.1Q транка и маршрутизации пакетов между вашими VLAN. Шаг 1 – Настройка коммутатора Первым шагом является создание необходимых двух VLAN на нашем коммутаторе Cisco и настройка их с IP-адресом. Поскольку все коммутаторы Cisco содержат VLAN1 (VLAN по умолчанию), нам нужно только создать VLAN2. Switch# configure terminal Switch(config)# vlan2 Switch(config-vlan)# name voice Switch(config-vlan)# exit Switch(config)# interface vlan1 Switch(config-if)# ip address 192.168.10.2 255.255.255.0 Switch(config-if)# exit Switch(config)# interface vlan2 Switch(config-if)# ip address 192.168.20.2 255.255.255.0 Switch(config-if)# exit Далее, нам нужно создать транк порт, который будет соединятся с маршрутизатором. Для этой цели мы выберем порт GigabitEthernet 0/1 Switch# configure terminal Switch(config)# interface gigabitethernet 0/1 Switch(config-if)# switchport trunk encapsulation dot1q Switch(config-if)# switchport mode trunk Switch(config-if)# spanning-tree portfast trunk При помощи данных команд мы определили, что транк будет использовать инкапсуляцию 802.1Q, установили порт в режим транка и включили функцию portfast trunk spanning-tree, чтобы гарантировать, что порт будет пересылать пакеты немедленно при подключении к устройству, например, маршрутизатору. Внимание: команда spanning-tree portfast trunk не должна использоваться на портах, которые подключаются к другому коммутатору, чтобы избежать петель в сети. Шаг 2 – Настройка маршрутизатора Мы закончили с коммутатором и можем переходить к настройке конфигурации нашего маршрутизатора, чтобы обеспечить связь с нашим коммутатором и позволить всему трафику VLAN проходить и маршрутизироваться по мере необходимости. Создание транка на порте маршрутизатора не сильно отличается от процесса, описанного выше - хотя мы транк на одном физическом интерфейсе, мы должны создать под-интерфейс (sub-interface) для каждого VLAN. Router# configure terminal Router(config)# interface gigabitethernet0/1 Router(config-if)# no ip address Router(config-if)# duplex auto Router(config-if)# speed auto Router(config-if)# interface gigabitethernet0/1.1 Router(config-subif)# encapsulation dot1q 1 native Router(config-subif)# ip address 192.168.10.1 255.255.255.0 Router(config-subif)# interface gigabitethernet0/1.2 Router(config-subif)# encapsulation dot1q 2 Router(config-subif)# ip address 192.168.20.1 255.255.255.0 Чтобы сформировать транк с нашим коммутатором, необходимо создать один под-интерфейс для каждого VLAN, сконфигурированного на нашем коммутаторе. После создания под-интерфейса мы назначаем ему IP-адрес и устанавливаем тип инкапсуляции 802.1Q и указываем номер VLAN, к которому принадлежит под-интерфейс. Например, команда encapsulation dot1q 2 определяет инкапсуляцию 802.1Q и устанавливает под-интерфейс на VLAN 2. Параметр native который мы использовали для под-интерфейса gigabitethernet0/1.1, сообщает маршрутизатору, что нативный vlan - это VLAN 1. Это параметр по умолчанию на каждом коммутаторе Cisco и поэтому должен совпадать с маршрутизатором. Для проверки можно использовать на роутере команду show vlans, где будут отображены созданные нами под-интерфейсы, а также при помощи команды show ip route в таблице маршрутизации мы должны увидеть наши под-интерфейсы. Готово! Теперь при помощи роутера мы можем маршрутизировать файлы между разными VLAN.
img
Продолжим наш рассказ о Deployment Service (DLS) в OpenScape Voice и сегодня поговорим о поиске и настройке телефонных аппаратов в DLS. В предыдущей статье мы рассказали про то, как просканировать телефоны и зарегистрировать их в DLS. Теперь нам может понадобиться найти определенный телефон среди всех остальных. Настройка Для этого переходим во вкладку Deployment Service → IP Devices → IP Device Management → IP Device Configuration. Здесь нам нужно ввести критерии поиска аппарата: IP Address – IP адрес устройства; Device IP – MAC адрес устройства (в формате XX:XX:XX:XX:XX:XX); Device Tylie – тип устройства; E.164 – номер телефона на устройстве; Basic E.164 – номер телефона в базе DLS; SW Version – версия прошивки устройства; SW Tylie – тип прошивки; Reg-Address – адрес регистрации устройства; Last Registration – время последней регистрации (за выбранный период); Поиск можно выполнять по одному или нескольким критериям. Также можно использовать символ “*” в качестве символа подстановки. После заполнения форм нажимаем Search и нас автоматически переносит во вкладку Object с найденным телефоном. Если результатов несколько по между ними можно переключаться кнопками со стрелками внизу экрана, либо перейти во вкладку Table для отображения результатов в виде таблицы. При помощи DLS можно производить настройку телефонного аппарата напрямую, не заходя при этом на его веб-интерфейс. Для этого нужно перейти во вкладку Deployment Service – IP Devices – IP Phone Configuration. Настройки телефонов в DLS представлены в виде ряда независимых разделов, каждый из которых отвечает за настройку определенных параметров. В выбранном разделе производим поиск аппарата и после этого можем начинать его настройку. Для сохранения внесенных изменений нажимаем Save.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59