3 совета по именованию контейнеров Docker
Введение
Когда вы создаете контейнер Docker, ему присваивается универсальный уникальный идентификатор (UUID). Это необходимо, чтобы избежать конфликтов имен и способствовать автоматизации без вмешательства человека. Они эффективно идентифицируют контейнеры для хоста и сети. Однако людям требуется больше усилий, чтобы различать их, будь то 64-символьный удобочитаемый длинный дисплей или более часто отображаемая 12-символьная короткая форма, которая может выглядеть примерно так: 285c9f0f9d3d
.
Чтобы помочь людям, Docker также предоставляет контейнерам случайно сгенерированное имя из двух слов, соединенных символом подчеркивания, например. evil_ptolemy
. Это может облегчить отличить один контейнер от другого, но случайные имена не дают больше информации о функции контейнера, чем UUID.
Вот три совета, которые помогут вам сохранять ориентацию, пока вы учитесь работать с контейнерами.
1 — Назовите контейнер при его запуске.
При добавлении --name=meaningful_name
в команду docker run
evil_ptolomy
становится более узнаваемым в интерактивных сеансах как а также в выводе таких команд, как docker ps
. Однако есть ограничения. Поскольку имена контейнеров должны быть уникальными, вы не можете использовать преднамеренное именование и масштабировать службу за пределами одного контейнера.
В командной строке или в Dockerfile:
Например, если мы запустили контейнер на основе базового образа nginx
и запустили его так:
- docker run --name nginx -d nginx
Имя появится в списке запущенных контейнеров:
- docker ps
OutputCONTAINER 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.