Это пятая статья в серии, Удоход: Сью облако родные основы. В этом третьем взносе вы получите, чтобы узнать, какие контейнеры, в частности докера. Обсуждается, как и 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:
- Введение в Docker Registry
- Команда Docker Tag
- Docker Push Command
- Спецификации открытого контейнера инициативы (OCI)
- Buildpacks: краткое путешествие приложения от источника к изображению
Конечно, изучение новых технологий не будет завершено, не добивая ваших рук. Перейдите к следующей статье, чтобы попробовать создать изображение и нажать на свой собственный аккаунт Dockerhub! 😃
Если вам наслаждаться этой записью и хотели бы узнать больше, убедитесь, что нажмите Следуйте за чуть ниже и заблокирован сериал. Я также буду рад связаться с вами на Twitter Отказ Увидимся там! 😃
Эдем Джозефолл
Оригинал: «https://dev.to/jeden/udacity-suse-container-orchestration-docker-5d87»