zaLinux.ru

Присвоение имени контейнерам Docker: 3 совета для новичков


Введение

Когда вы создаёте контейнер Docker, то ему назначается универсальный уникальный идентификатор (UUID). Это важно для предотвращения конфликта имён и автоматизации без участия человека. Они эффективно идентифицируют контейнеры для хоста и сети. Тем не менее, такой подход затрудняет людям различать их друг от друга, будь это 64 символа или чаще отображаемая короткая 12-символьная форма, которая может выглядеть как 1bdb6d569dda.

В помощь людям, Docker также снабжает контейнеры случайно сгенерированным именем из двух слов, объединённых знаком подчёркивания, например, evil_ptolemy. Это помогает легче разграничивать один контейнер от другого, но случайные имена несут не больше ясности о функциональности контейнера чем UUID.

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

1 — Называйте контейнер, когда вы запускаете его

Добавив --name=нормальное_имя к команде docker run, имя вроде evil_ptolomy становится более распознаваемым в интерактивных сессиях, а также в командах вывода вроде docker ps. Тем не менее, имеются ограничения. Поскольку имя контейнера должно быть уникальным, вы не можете использовать осознанное наименование и масштабировать услугу за пределами одного контейнера.

В командной строке или в Dockerfile:

docker run --name=нормальное_имя

Например, мы работаем с контейнером, основанном на базовом образе nginx и запускаем его примерно так:

docker run --name nginx -d nginx

Имя должно появиться в списке запущенный контейнеров:

docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
08f333ef7216        nginx               "nginx -g 'daemon off"   15 seconds ago      Up 14 seconds       80/tcp, 443/tcp      nginx

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


2 — Назначение контейнеру имя хоста

Значение, передаваемое команде с --hostname устанавливается в контейнере внутри /etc/hostname и /etc/hosts. Следовательно, оно появляется в приглашении командной строки. Оно играет роль в конфигурировании DNS контейнера и может быть полезным при изучении стадий установки нескольких контейнеров. Нелегко получить доступ извне контейнера, но оно будет появляться в файлах журнала контейнера, а когда эти файлы записываются на независящий от хоста том, то это может упростить идентификацию контейнера.

Командная строка и Dockerfile:

docker run --hostname=значение
#ИЛИ
docker run -h значение

Опции --name, и --hostname полезны для идентификации контейнеров. Но иногда вместо того, чтобы запоминать, проще содержать систему в чистоте и не разводить лишних контейнеров.

3 — Автоматическое удаление контейнеров при выходе

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

Конечно, будьте осторожны! Если вы используете тома Docker, то --rm удалит любые тома НЕ указанные по имени.

Командная строка и Dockerfile:

docker run --rm

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

Заключение

Три флага для docker run: --name, --hostname и --rm, каждый, в своей собственной манере упрощают знание что есть что при изучении Docker.


Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *