По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
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
Эти команды помогут вам независимо от того, какую операционную систему вы используете - Linux, Windows или macOS На сегодняшний день создание виртуальной среды, или виртуализация, является одной из основных компьютерных технологий. С виртуальной машиной вы можете запустить практически любую операционную систему по вашему выбору на своем ПК, не разоряясь на дополнительное оборудование. Давайте рассмотрим, как использовать терминал командной строки для управления виртуальными машинами VirtualBox независимо от операционной системы, будь то Windows, macOS или Linux. Все установки VirtualBox сопровождаются инструментом командной строки VBoxManage – мощной и гибкой утилитой для управления вашими виртуальными машинами. Что такое VBoxManage? VBoxManage – это инструмент интерфейса командной строки, устанавливаемый по умолчанию как часть установки программного обеспечения VirtualBox. В отличие от управления виртуальными машинами через графический интерфейс, интерфейс командной строки VBoxManage дает больше функциональных возможностей, поскольку он обеспечивает прямой доступ к механизму виртуализации, что позволяет получить доступ к дополнительным функциям, которые недоступны через графический интерфейс. К тому же, большинство серверов Linux не имеют графического интерфейса вовсе, так что виртуальными машинами можно будет управлять даже в автономном режиме. Все команды VBoxManage начинаются со слова vboxmanage и обычно сопровождаются подкомандой, такой как list, controlvm и т.д. Часто требуется указать имя виртуальной машины, которую вы хотите настроить или которой хотите управлять. 1. Список виртуальных машин Здесь показано, как вы можете просмотреть список всех виртуальных машин, зарегистрированных на вашем ПК. Каждой виртуальной машине присваивается универсальный уникальный идентификатор, который используется для уникальной идентификации. vboxmanage list vms Если вам нужен более подробный список, добавьте флаг –l или –long к команде vboxmanage list vms. На выходе будет отображаться подробная информация, такая как конфигурация каждой виртуальной машины, сведения об аппаратном оборудовании, настройки и т.д. Чтобы вывести список всех запущенных в данный момент виртуальных машин, используйте подкоманду list с параметром runningvms: vboxmanage list runningvms 2. Запуск и остановка виртуальных машин Чтобы запустить виртуальную машину с помощью VBoxManage, воспользуйтесь подкомандой startvm, за которой следует имя виртуальной машины или ее универсальный уникальный идентификатор. Например, вы можете выполнить команду ниже, чтобы запустить виртуальную машину с именем Windows11. vboxmanage startvm Windows11 Когда дело дойдет до остановки виртуальной машины, то у вас будет несколько вариантов. У вас есть возможность полностью остановить, то есть выключить, виртуальную машину или поставить ее на паузу. Чтобы остановить виртуальную машину, воспользуйтесь подкомандой controlvm, за которой следует имя виртуальной машины, а затем параметр poweroff. vboxmanage controlvm Windows11 poweroff Если вы хотите, чтобы виртуальная машина просто не потребляла системные ресурсы, то не обязательно ее выключать, вы можете приостановить ее работу и возобновить ее позже. vboxmanage controlvm Windows11 pause Чтобы восстановить работу приостановленной виртуальной машины, воспользуйтесь следующей командой: vboxmanage controlvm Windows11 resume 3. Получение сведений о виртуальной машине Чтобы просмотреть сведения, относящиеся к конкретной виртуальной машине, вместо команды для просмотра списка всех виртуальных машин, воспользуйтесь подкомандой showvminfo. Например, вы можете запустить команду ниже, чтобы получить подробную информацию о виртуальной машине Windows11, включая информацию о ее аппаратном оборудовании и других сведений о конфигурации, состояния сети и т.д. vboxmanage showvminfo Windows11 4. Создание виртуальной машины Еще одной важной задачей при управлении виртуальными машинами является создание новых виртуальных машин. Воспользуйтесь подкомандой createavm для создания новой виртуальной машины. Например, чтобы создать виртуальную машину с именем «DebianVM», которая будет работать в операционной системе Debian Linux, вы можете выполнить следующую команду: vboxmanage createvm --name DebianVM --ostype Debian Debian_64 --register Если вы не уверены, какое имя операционной системы использовать на вашей виртуальной машине, вы можете проверить, какие операционные системы поддерживает VirtualBox с помощью следующей команды: vboxmanage list ostypes 5. Изменение виртуальной машины Если вы хотите изменить только что созданную виртуальную машину, например, изменить размер памяти, имя и другие соответствующие параметры, вы можете воспользоваться подкомандой modifyvm, за которой следует имя виртуальной машины, а затем параметр, который вы хотите изменить, и, наконец, новое значение этого параметра. Предположим, вы хотите изменить имя только что созданной виртуальной машины выше с DebianVM на Debian9, используя настройку имени. vboxmanage modifyvm DebianVM --name Debian9 Список настроек, которые вы можете изменить, можно посмотреть, выполнив команду: vboxmanage modifyvm 6. Резервное копирование Резервное копирование является важным компонентом поддержания надежности информационной системы. VirtualBox позволяет сохранять состояние вашей виртуальной машины, чтобы у вас была возможность ее сохранить, если вдруг что-то пойдет не так. Чтобы сделать снимок состояния виртуальной машины, вы можете запустить следующую команду, где «Christmas eve snapshot» - это имя, присвоенное вашему снимку состояния виртуальной машины. vboxmanage snapshot Windows11 take "Christmas eve snapshot" Чтобы восстановить упомянутую выше виртуальную машину с помощью только что созданного снимка состояния, для начала остановите виртуальную машину, если она запущена, а затем восстановите снимок состояния с помощью следующей команды: vboxmanage snapshot Windows11 restore "Christmas eve snapshot" 7. Получение справочной информации Чтобы вы могли использовать интерфейс командной строки VBoxManage на максимум, вы должны 7-komand-virtualnoj-mashiny-virtualbox-kotorye-nuzhno-znat, как получить справочную информацию или прочитать документацию из терминала командной строки, чтобы не запоминать все команды. Кроме того, есть множество других команд, которые не были рассмотрены нами в этом руководстве. У7-komand-virtualnoj-mashiny-virtualbox-kotorye-nuzhno-znat больше о командах VBoxManage и их параметрах можно, выполнив следующую команду: vboxmanage Заключение В данном руководстве мы изучили некоторые важные команды для управления вашими виртуальными машинами VirtualBox с помощью VBoxManage - мощного и легкого инструмента командной строки для управления вашими виртуальными машинами. Кроме того, вы можете легко создавать сценарии автоматизации на основе VBoxManage, чтобы легко управлять своими виртуальными машинами. Виртуальные машины дают возможность запускать и экспериментировать с несколькими операционными системами на вашем ПК безопасным и надежным способом.
img
Операционные системы Unix традиционно используют такие понятия, как стандартный ввод, вывод и вывод ошибки. Чаще всего ввод — это клавиатура, а вывод это на кран. Но конечно же мы можем выводить исполнение какой-то команды в файл и передавать другой команде, потому что работая в Linux, создается такая последовательность из команд, т.е результат предыдущей мы отправляем следующей и т.д Целью данной статьи является рассмотреть: Перенаправление стандартных ввода, вывода и ошибок; Передача вывода одной команды в качестве аргументов другой; Получение выходных данных в файл и на стандартный вывод; Основные понятия: Stdin (0) – ввод Stdout(1) – вывод Stderr (2) – вывод ошибки > - передать в >> - дописать в list.txt. По сути означает выполнить команду, а результат передать в файл. Фал можно посмотреть командой cat list.txt. И мы можем убедится, что в данном файле находится перечень, всего что находилось в данной папке. Если мы выполним еще раз команду ls > list.txt, то данный файл каждый раз будет перезаписываться. Если же мы хотим, чтобы наш файл не перезаписывался, а дописывался, используем другую стрелочку ls >> list.txt. И теперь вы можете видеть, что файл стал больше. Т.е. у нас записалось, то что было, а затем еще раз добавилось. Если опять выполнить команду со стрелочками >> , то опять допишется информация в файл. Вот таким образом работают “стрелочки”. Стандартный вывод ошибок. Мы можем, например, сказать машине, выведи нам содержимое папки bob, которая не существует ls bob > result.txt, естественно мы получим ошибку которую система вывела на экран. Экран является стандартным выводом ошибок. В нашем случае нет папки bob и нет файла resut.txt. Если мы хотим отправить ошибку в файл, так же как результат выполнения команды, то ls bob 2> result.txt, вспоминаем основные понятия, в которых было указанно, что 2 – это стандартный вывод ошибки. Следовательно, на экране мы уже не видим ошибки, потому что она отправилась в указанный файл. Кстати мы можем объединить стандартный вывод команды и стандартный вывод ошибки. Например: ls bob > result.txt 2> error.txt. Выведи содержимое папки bob в файл result.txt, а если возникнет ошибка внеси в файл error.txt. В таком случае и команда выполнится и что-то будет в файле и если ошибка возникнет, то она будет записана в файл error.txt. Это можно применять на практике, когда мы что-то делаем и предполагаем, что в процессе выполнения возникнут ошибки, то используя данную конструкцию данные ошибки мы все можем отправить в отдельный файл. Конвейер Конвейер умеет передавать выходные данные из одной программы, как входные данные для другой. Т.е. выполняется команда, мы получаем результат и передаем эти данные далее на обработку другой программе. Например, выполнить команду ls и далее мы могли стрелочкой отправлять результаты выполнения команды в файл, т.е. мы меняли только стандартный вывод, а не передавали другой программе. А можем выполнить ls | grep r , т.е. получить содержимое и передать по конвейеру команде сортировки и сказать отсортировать по наличию буквы r, а если перенаправить еще вывод в файл, то cat имя файла , мы сможем увидеть информацию в файле. Но есть другая команда tee которая позволяет работать немного удобнее. Например: ls | tee output.txt. Те данная команда выводит информацию сразу на экран и в указанный файл. Что достаточно удобно с точки зрения работы с выводами. И еще одна команда xargs – она построчно работает с выводами. Если у нас есть какая-то команда, которая выдает нам вывод в виде нескольких строк ответа, то мы можем эти строки построчно передавать этой команде, т.е. не одной кашей, а построчно. Например find . –name “*.txt” найти все файлы в текущем каталоге с расширением txt. И если бы мы захотели удалить все эти файлы нам бы пришлось построчно их удалять, но мы можем сказать, чтобы выходные данные были переданы по конвейеру xargs и удалить. find . –name “*.txt” | xargs rm -f Как видите после данной конструкции команд файлов не осталось. Т.е. данные построчно передались на команду удаления, которая построчно каждый файл с ключом –f (принудительно) их и удалила.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59