Рубрики
Uncategorized

Удобность |. Suse: Орхестровка — Докер

Это пятая статья в серии, UDAMICE: Suse Cloud Noundal Foundations. В этой третьей … с меткой 100Дасофкода, дежопта, облаконапитание, Куберов.

Это пятая статья в серии, Удоход: Сью облако родные основы. В этом третьем взносе вы получите, чтобы узнать, какие контейнеры, в частности докера. Обсуждается, как и Kubernetes, который используется для оркестроительных контейнеров.

Этот раздел на самом деле является частью одного урока, Контейнерная оркестровка с использованием Kubernetes , Но так как это будет слишком долго, я решил поставить Кубернаны на следующую статью.

Как только приложение было разработано, следующий шаг теперь будет упаковывать его, контейнеризировать и наконец, развернуть его. Здесь мы будем упаковывать приложение с помощью контейнера Docker, и мы разверним его с помощью кластера Kubernetes для управления контейнерами в масштабе.

От VMS к контейнерам

Традиционный способ развертывания приложений был через Виртуальные машины или VMS Отказ Приложение будет использовать файловую систему ОС, ресурсы OS и пакеты по умолчанию установили.

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

Пока оказалось полезным, у него все еще есть свои недостатки. Каждая виртуальная машина потребует собственной операционной системы. Если у вас есть три VMS, сидя на гипервизоре, это означало бы, что есть также три операционной системы, работающей на верхней части гипервизора. ОС Плюс необходимые библиотеки каждого VM занимают кусок пространства на базовой машине.

Введите контейнеры. Чтобы дополнительно оптимизировать использование сервера, контейнер можно использовать для Виртуализировали операционную систему. Через контейнеры нам не нужно будет запускать реплицированную ОС. Независимо от того, сколько контейнеров мы работаем на машине, они все будут использовать такую же базовую операционную систему самой физической машины.

Чтобы облегчить создание и управление контейнерами, мы можем использовать инструмент для контейнеров, например Докер. В целом, контейнеры:

  • Легкий в природе
  • обеспечивает лучшее использование ресурсов

Докер

После того, как вы реализовали программное обеспечение, следующий этап будет выпустить его. Шаги в основном будут:

  • Пакет исходного кода, файлы конфигурации и зависимости в контейнере
  • Разверните его с помощью управления контейнерами

Есть три объекта докера, которые вам нужно знать здесь: Dockerfile, Docker Image и Docker Registry.

Docker File.

Это набор пошаговых инструкций о том, как создать изображение

  • Операция о том, как упаковать код и его зависимости
  • Каждая операция представляет собой слой и кэшируется
  • Когда DockerFile модифицирован, измененные слои будут строить только

Полный список инструкций можно найти в официальном Докерный сайт Отказ Вот некоторые из широко используемых инструкций:

  • От — Устанавливает базовое изображение
  • Беги — Выполняет команду
  • Скопировать и Добавить — Скопируйте файлы с хоста в контейнер
  • CMD — Команда по умолчанию для выполнения Когда запуска контейнера
  • Выставить — обнажает порт

Для упражнений вы можете проверить следующую статью в этой серии

Ниже приведен пример DockerFile, который целена для упаковки приложения Python Hello-World:

# set the base image. A Python base image is used
FROM python:3.8

# set a key-value label for the Docker image
LABEL maintainer="Eden Jose"

# All the files in the current directory is copied
# to the  `/app` directory in the container
COPY . /app

#  defines the working directory within the container
WORKDIR /app

# run commands within the container. 
# Here we install dependencies defined in the requirements.txt file. 
RUN pip install -r requirements.txt

# provide a command to run on container start. 
# For example, start the `app.py` application.
CMD [ "python", "app.py" ]

Docker Image

После того, как вы создали DockerFile, теперь вы можете создать образечку докера.

  • Шаблон только для чтения
  • Создает родильный экземпляр приложения
  • используется для запуска контейнера

Образ докера может быть построен из существующего DockerFile, используя команду Docker Build. Ниже приведен синтаксис для этой команды:

# build an image
# OPTIONS - optional;  define extra configuration
# PATH - required;  sets the location of the 
# Dockefile and  any referenced files 
docker build [OPTIONS] PATH

# Where OPTIONS can be:
-t, --tag - set the name and tag of the image
-f, --file - set the name of the Dockerfile
--build-arg - set build-time variables

Чтобы найти все действительные варианты для построить команда:

docker build --help

Например, для создания изображения приложения Python «Hello-World» от DockerFile в текущем каталоге можно использовать следующую команду:

docker build -t python-helloworld .

Кроме того, вы можете построить то же приложение, которое находится в другом каталоге, скажем, A Урок1/Python-App каталог

docker build -t python-helloworld lesson1/python-app

Чтобы перечислить все доступные изображения

docker images

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

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

# OPTIONS - optional;  define extra configuration
# IMAGE -  required; provides the name of the image to be executed
# COMMAND and ARGS - optional; instruct the container to run specific commands when it starts 
# Where OPTIONS can be:

-d, --detach - run in the background 
-p, --publish - expose container port to host
-it - start an interactive shell

Чтобы найти все допустимые варианты для этой команды

docker run --help

Например, для запуска примера приложения Python Hello-World, используя создаваемое изображение, можно использовать следующую команду:

docker run -d -p 5111:5000 python-helloworld

Здесь мы связываем порт Docker Container (5000) к порту на хосте (5111) или локальной машине. Чтобы просмотреть приложение, открыть http://127.0.0.1:511.1/ в вашем браузере. 5000 — это контейнерный порт, который приложение прослушивает для входящих запросов.

Чтобы перечислить все беговые контейнеры,

docker ps

Чтобы получить журналы контейнеров Docker, мы можем использовать команду ниже, где 95173091EB5E это идентификатор контейнера.

docker logs 95173091eb5e

## Example output from a Flask application
 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off

Docker Registry

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

Для этого вы можете протолкнуть изображение в публичный реестр докера, например

  • Docker Hub.
  • Гавань
  • Amazon ECR (реестр упругости контейнера)
  • Реестр контейнера Google

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

Перед точком нажатия изображения в реестр Docker настоятельно рекомендуется пометить его первым. Без пометок изображение будет выделено со случайным идентификатором во время этапа сборки.

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

# tag an image
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

# SOURCE_IMAGE[:TAG]  
# - required and the tag is optional; 
# - defines the name of an image on the current machine 

# TARGET_IMAGE[:TAG] 
# - required and the tag is optional;
# - defines the repository, name, and version of an image

Войти в Dockerhub

docker login

После того, как изображение будет помечено, последний шаг — это толкать изображение в реестр.

docker push NAME[:TAG]

# NAME[:TAG] - required and the tag is optional; 
# - name, set the image name to be pushed to the registry

Например, чтобы продвинуть образец приложения Python Hello-World Tagged с V1 для хранилища «My-Reppo» в DockerHub

docker push my-repo/python-helloworld:v1.0.0

Чтобы вытащить изображение из Dockerhub,

docker pull NAME[:TAG]

Другие ссылки, которые вы можете прочитать

Исследуйте лучшие практики DockerFiles и действительный список инструкций:

Исследуйте, как создать и запустить изображение Docker, со списком всех доступных вариантов:

Исследуйте реестры Docker, альтернативы на упаковке приложения и стандарты OCI:

Конечно, изучение новых технологий не будет завершено, не добивая ваших рук. Перейдите к следующей статье, чтобы попробовать создать изображение и нажать на свой собственный аккаунт Dockerhub! 😃

Если вам наслаждаться этой записью и хотели бы узнать больше, убедитесь, что нажмите Следуйте за чуть ниже и заблокирован сериал. Я также буду рад связаться с вами на Twitter Отказ Увидимся там! 😃

Эдем Джозефолл

Оригинал: «https://dev.to/jeden/udacity-suse-container-orchestration-docker-5d87»