Поиск по сайту:

3 совета по именованию контейнеров Docker


Введение

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

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

Вот три совета, которые помогут вам сохранять ориентацию, пока вы учитесь работать с контейнерами.

1 — Назовите контейнер при его запуске.

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

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

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

  1. docker run --name nginx -d nginx

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

  1. docker ps
Output
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 контейнера и может быть полезен на этапах обучения установке с несколькими контейнерами. К нему непросто получить доступ извне контейнера, но он появится в файлах журнала контейнера, и когда эти файлы будут записаны на том, независимый от хоста, это может упростить идентификацию контейнера.

CLI и Dockerfile:

Хотя --name и --hostname полезны для идентификации контейнеров, иногда речь идет вовсе не об именовании контейнера. Скорее, речь идет о том, чтобы контейнер убирал за собой, не забывая делать это самостоятельно.

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

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

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

CLI и Dockerfile:

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

Заключение

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