Этот статья является дополнением серии вебинаров по развертыванию и управлению рабочими нагрузками в облаке с использованием контей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ю, и развертывать частный регистратор.
Предисловия
Чтобы последовать за этим примером, вам понадобится:
-
Один Dropleton Ubuntu 16.04, который был установлен по этому установке первого сервера Ubuntu 16.04, включая sudo пользователя без root и развертанную файрwal.
-
Учетная запись Docker Hub. Эта обзор Docker Hub поможет вам начать.
По умолчанию команда docker
требует привилегий root. Однако вы можете выполнить команду без префикса sudo
, выполнив docker
как пользователь в группе docker.
Чтобы настроить ваш Droplet таким образом, выполните команду sudo usermod -aG docker ${USER}
. Это добавит текущего пользователя в группу docker
. Затем выполните команду su - ${USER}
, чтобы применить новое членство в группе.
Этот руководство предполагает, что ваш сервер настроен на выполнение команды docker
без префикса sudo
.
Шаг 1 — Установка Docker
После подключения к Droplet по SSH выполните следующие команды, чтобы удалить любые уже установленные пакеты, связанные с docker, и затем установите Docker из официального репозитория:
После установки Docker проверьте установку с помощью следующих команд:
Проверьте детали развертывания образа Docker Engine в окружении. Следующий команда проверяет правильную установку и конфигурацию инструментов Docker. Она должна вывести версии как Docker Engine, так и Toolset.
### Шаг 2 — Стартувание контейнеров
Докер контейнеры стартуют из существующих образов, которые хранятся в репозитории. Имейлы образов могут быть сохранены в частных или общественных репозиториях. Приватные репозитории требуют авторизации перед получением образов. Общественные образы доступны любому пользователю.
Чтобы поискать образ с названием hello-world
, используйте следующий команду:
Максимальное число звездочек указывает на популярность образа. При выборе образа необходимо принимать во внимание его популярность.
Просмотрите доступные образы в вашем окружении с помощью следующего команды:
Как мы еще ни разу не запустили ни одного контейнера, то там не будет ни одного образа. Теперь мы можем скачивать образ и запустить его локально:
Если вы выполните команду docker run
без получения образа, Docker Engine первым приложит свои силы к получению образа, а после этого выполнит его. Если вы выполните команду docker images
после этого, то вы увидите, что образ hello-world
доступен для использования локально.
Попробуем запустить более значительный контейner: веб-сервер Apache.
Вы можете замечать дополнительные опции, переданные команде docker run
. Ниже дается расшифровка этих флагов:
-p
— Это указывает Docker Engine экспортировать порт контейнера80
на порт хоста80
. Так как Apache прослушивает порт80
, нам нужно экспортировать его на порт хоста.--name
— Этот параметр назначает имя нашему запущенному контейнеру. Если мы его опустим, Docker Engine назначит случайное имя.-d
— Эта опция указывает Docker Engine запустить контейнер в отключенном режиме. Без этого контейнер будет запущен в фоновом режиме, блокируя доступ к оболочке. Поместив контейнер в фоновый режим, мы можем продолжать использовать оболочку, пока контейнер все еще работает.
Чтобы убедиться, что наш контейнер действительно работает в фоновом режиме, попробуйте следующую команду:
Вывод показывает, что контейнер с именем web
работает с портом 80
, сопоставленным с портом хоста 80
.
Теперь доступ к веб-серверу:
Давайте остановим и удалим запущенный контейнер с помощью следующих команд:
Запуск docker ps
снова подтверждает, что контейнер завершен.
Шаг 3 — Добавление хранилища в контейнеры
Контейнеры временными являются, что значит все, что сохраненно внутри контейнера, будет потеряно после его прервания. Чтобы иметь доступ к данным после разрушения контейнера, мы должны привязать воume к контейnerу. Воume представляет собой директорию из файловой системы хоста.
Начать с созданием новых директории на хосте:
Теперь выпустите контейнер с новым переключением для подключения директории htdocs
. Директория htdocs
должен быть указан как начальная папка для веб-сервера Apache.
Команда -v
указывает директорию htdocs
внутри контейнера на файловую систему хоста. Любые изменения, которые будут сделаны в этой директории, будут видны и на обоих сторонах.
Доступиться к директории из контейнера используйте команду:
Эта команда прикрепляет ваш терминал к шлему контейнера в режиме интеративного работы. Вы должны видеть, что вы теперь находитесь внутри контейнера.
Перейдите в директорию htdocs
и создайте простой HTML-файл. Затем выйти из шлема контейнера:
Исполните команду curl localhost
. Это показывает, что веб-сервер возвращает страницу, которую мы создали.
Мы можем получить доступ к этому файлу не только от хоста, но и изменять его:
Исполните команду curl localhost
. Это подтверждает, что веб-сервер возвращает последний раз измененную страницу, созданную из хоста.
Отключите контейNER с помощью следующий команды. (Символ -f
принудительно завершает контейNER без прервания.)
Шаг 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:
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:
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:
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.
Объявите, что контейнер был запущен в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.
The previous command confirms that the busybox
container is now tagged with localhost:5000
, so push the image to the private registry.
Наш предыдущий команд подтвердила, чтоконтейнер busybox
сейчас тагнут с localhost:5000
, так чтоpush-атим образ вprivate registry.
Сохраненный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
. Если файл не существует, создайте его.
Добавьте следующий ввод:
{
"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