От кода к взгляду: использование NLP и анализа сентимента в истории Git

Этот статья является дополнением серии вебинаров по развертыванию и управлению рабочими нагрузками в облаке с использованием контейners. Серия рассматривает основы контейners, включая мануальную управление жизненным циклом контейners, развертывание приложений с использованием мультиконтейners, масштабирование рабочих нагрузок, а также ознакомление с Kubernetes, а также выделенные лучшие практики для работы приложений состоящих из данных.

Этот урок включает концепции и команды, которые были рассмотрены во время первого сеанса серии, начавшегося с «Интеграции начала».

ИнTRОДУКЦИЯ

Docker – это плаatforma для развертывания и управления приложениями, которые развернуты в контейners. Контейners популярны среди разработчиков, администраторов и инженеровdevops из-за своей гибкости.

Docker имеет три основные составляющие:

  • Docker Engine
  • Docker Tools
  • Docker Registry

Docker Engine предоставляет основные возможности управления контейners. Он обращается к подсистеме Linux, чтобы представить простые API для работы с жизненным циклом контейners.

Docker Tools – это набор команд, которые работают с API, которые выдают Docker Engine. Они используются для запуска контейners, создания новых образов, настройки хранилищ и сетей, и много других действий, которые влияют на жизненный цикл контейners.

Регистратор Docker — это место, где хранятся образы контейners. Каждый образ может иметь несколько версий, идентифицированных через уникальные теги. Пользователи вытягивают существующие образы из регистратора и pushes новые образы в него. Docker Hub – это домашний регистратор, которым управляет Docker, Inc.. также возможно использовать свой регистратор внутри вашей среды, чтобы образы были ближе к двигателю.

Когда все же попробуем пройти этот пример, вы будете установить Docker на Dropleton DigitalOcean, управлять контейнерами, работать с образами, добавлять persistencю, и развертывать частный регистратор.

Предисловия

Чтобы последовать за этим примером, вам понадобится:

По умолчанию команда docker требует привилегий root. Однако вы можете выполнить команду без префикса sudo, выполнив docker как пользователь в группе docker.

Чтобы настроить ваш Droplet таким образом, выполните команду sudo usermod -aG docker ${USER}. Это добавит текущего пользователя в группу docker. Затем выполните команду su - ${USER}, чтобы применить новое членство в группе.

Этот руководство предполагает, что ваш сервер настроен на выполнение команды docker без префикса sudo.

Шаг 1 — Установка Docker

После подключения к Droplet по SSH выполните следующие команды, чтобы удалить любые уже установленные пакеты, связанные с docker, и затем установите Docker из официального репозитория:

  1. sudo apt-get remove docker docker-engine docker.io
  2. sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
  3. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  4. sudo apt-key fingerprint 0EBFCD88
  5. sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  6. sudo apt-get update
  7. sudo apt-get install -y docker-ce

После установки Docker проверьте установку с помощью следующих команд:

  1. docker info

Проверьте детали развертывания образа Docker Engine в окружении. Следующий команда проверяет правильную установку и конфигурацию инструментов Docker. Она должна вывести версии как Docker Engine, так и Toolset.

  1. docker version

### Шаг 2 — Стартувание контейнеров

Докер контейнеры стартуют из существующих образов, которые хранятся в репозитории. Имейлы образов могут быть сохранены в частных или общественных репозиториях. Приватные репозитории требуют авторизации перед получением образов. Общественные образы доступны любому пользователю.

Чтобы поискать образ с названием hello-world, используйте следующий команду:

  1. docker search hello-world

Максимальное число звездочек указывает на популярность образа. При выборе образа необходимо принимать во внимание его популярность.

Просмотрите доступные образы в вашем окружении с помощью следующего команды:

  1. docker images

Как мы еще ни разу не запустили ни одного контейнера, то там не будет ни одного образа. Теперь мы можем скачивать образ и запустить его локально:

  1. docker pull hello-world
  2. docker run hello-world

Если вы выполните команду docker run без получения образа, Docker Engine первым приложит свои силы к получению образа, а после этого выполнит его. Если вы выполните команду docker images после этого, то вы увидите, что образ hello-world доступен для использования локально.

Попробуем запустить более значительный контейner: веб-сервер Apache.

  1. docker run -p 80:80 --name web -d httpd

Вы можете замечать дополнительные опции, переданные команде docker run. Ниже дается расшифровка этих флагов:

  • -p — Это указывает Docker Engine экспортировать порт контейнера 80 на порт хоста 80. Так как Apache прослушивает порт 80, нам нужно экспортировать его на порт хоста.
  • --name — Этот параметр назначает имя нашему запущенному контейнеру. Если мы его опустим, Docker Engine назначит случайное имя.
  • -d — Эта опция указывает Docker Engine запустить контейнер в отключенном режиме. Без этого контейнер будет запущен в фоновом режиме, блокируя доступ к оболочке. Поместив контейнер в фоновый режим, мы можем продолжать использовать оболочку, пока контейнер все еще работает.

Чтобы убедиться, что наш контейнер действительно работает в фоновом режиме, попробуйте следующую команду:

  1. docker ps

Вывод показывает, что контейнер с именем web работает с портом 80, сопоставленным с портом хоста 80.

Теперь доступ к веб-серверу:

  1. curl localhost

Давайте остановим и удалим запущенный контейнер с помощью следующих команд:

  1. docker stop web
  2. docker rm web

Запуск docker ps снова подтверждает, что контейнер завершен.

Шаг 3 — Добавление хранилища в контейнеры

Контейнеры временными являются, что значит все, что сохраненно внутри контейнера, будет потеряно после его прервания. Чтобы иметь доступ к данным после разрушения контейнера, мы должны привязать воume к контейnerу. Воume представляет собой директорию из файловой системы хоста.

Начать с созданием новых директории на хосте:

  1. mkdir htdocs

Теперь выпустите контейнер с новым переключением для подключения директории htdocs. Директория htdocs должен быть указан как начальная папка для веб-сервера Apache.

  1. docker run -p 80:80 --name web -d -v $PWD/htdocs:/usr/local/apache2/htdocs httpd

Команда -v указывает директорию htdocs внутри контейнера на файловую систему хоста. Любые изменения, которые будут сделаны в этой директории, будут видны и на обоих сторонах.

Доступиться к директории из контейнера используйте команду:

  1. docker exec -it web /bin/bash

Эта команда прикрепляет ваш терминал к шлему контейнера в режиме интеративного работы. Вы должны видеть, что вы теперь находитесь внутри контейнера.

Перейдите в директорию htdocs и создайте простой HTML-файл. Затем выйти из шлема контейнера:

  1. cd /usr/local/apache2/htdocs
  2. echo '<h1>Hello World from Container</h1>' > index.html
  3. exit

Исполните команду curl localhost. Это показывает, что веб-сервер возвращает страницу, которую мы создали.

Мы можем получить доступ к этому файлу не только от хоста, но и изменять его:

  1. cd htdocs
  2. cat index.html
  3. echo '<h1>Hello World from Host</h1>' | sudo tee index.html >/dev/null

Исполните команду curl localhost. Это подтверждает, что веб-сервер возвращает последний раз измененную страницу, созданную из хоста.

Отключите контейNER с помощью следующий команды. (Символ -f принудительно завершает контейNER без прервания.)

  1. docker rm -f web

Шаг 4 — Создание изображений

В addition to running images from the registry, you can create your own images and store them in the registry.

You can create new images from existing containers. Changes made to the container are first committed and then the images are tagged and pushed to the registry.

Let’s start the httpd container again and make some modifications to the default document:

  1. docker run -p 80:80 --name web -d httpd
  2. docker exec -it web /bin/bash
  3. cd htdocs
  4. echo '<h1>Welcome to my Web Application</h1>' > index.html
  5. exit

The container is now running with a customized index.html. You can check it with the command curl localhost.

Before committing the changed container, it’s a good idea to stop it. After stopping it, we will run the commit command:

  1. docker stop web
  2. docker commit web doweb

Confirm the creation of the image with the docker images command. It displays the image doweb that you just created.

To tag and store this image in Docker Hub, run the following commands to push your image to the public registry:

  1. docker login
  2. docker tag your_docker_hub_username/doweb
  3. docker push your_docker_hub_username/doweb

You can verify the new image by searching for it on Docker Hub from a web browser or the command line.

Шаг 5 — Запуск частного регистратора

Можно использовать регистрацию в приватныхenvironmentых, чтобы сохранить изображения более безопасно. Это также уменьшаетlatency между Docker Engine и репозиторием образов.

Docker Registry доступен как контейнер, который может быть запущен как любой другойконтейner. Поскольку регистрация хранит многообразиеimagery, стоит привязать к нему объектstorage-volume.

  1. docker run -d -p 5000:5000 --restart=always --name registry -v $PWD/registry:/var/lib/registry registry

Объявите, что контейнер был запущен вbackground с открытым портом 5000. Примечательно, чтоdirectory registry maped наfile-system хоста. Вы можете проверчить, чтоконтейнер работает, выполнив команду docker ps.

Мы можем теперь тагнутьlocal image и его push-ать вprivate registry. Первым делом,let’s pull the busybox container from Docker Hub and tag it.

  1. docker pull busybox
  2. docker tag busybox localhost:5000/busybox
  3. docker images

The previous command confirms that the busybox container is now tagged with localhost:5000, so push the image to the private registry.

  1. docker push localhost:5000/busybox

Наш предыдущий команд подтвердила, чтоконтейнер busybox сейчас тагнут с localhost:5000, так чтоpush-атим образ вprivate registry.

  1. docker rmi -f localhost:5000/busybox
  2. docker images
  3. docker pull localhost:5000/busybox
  4. docker images

Сохраненныйimage можно удалить изenvironment иpulling it back from the registry.

Мы прошли полный круг:pulling the image, tagging it, pushing it to the local registry, and, finally, pulling it back.

Иногда вам может понадобитьсяrunning the private registry on a dedicated host. Docker Engine running on different machines will talk to the remote registry to pull and push images.

Registry не защищён, поэтому нам нужно модифицировать конфигурацию Docker Engine, чтобы разрешить доступ к небезопасному регистру. Для этого нужно отредактировать файл daemon.json, который находится в /etc/docker/daemon.json. Если файл не существует, создайте его.

Добавьте следующий ввод:

Editing /etc/docker/daemon.json
{
  "insecure-registries" : ["REMOTE_REGISTRY_HOST:5000"]
}

Замените REMOTE_REGISTRY_HOST на имя хоста или адрес IP удаленного регистра. Перезапустите Docker Engine, чтобы убедиться, что изменения конфигурации были применены.

## Заключение
Этот учебник помог вам начать работу с Docker. Он охватывает основные концепции, включая установку, управление контейнерами, управление образами, хранение и частный регистр. Следующие сеансы и статьи в этой серии помогут вам выйти за базовые аспекты Docker.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-docker