Введение
Когда вы создаёте контейнер 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.
Связанные статьи:
- Установка и использование Docker в Linux (Debian, Ubuntu, Arch Linux) (100%)
- Как удалить образы, контейнеры и тома Docker (100%)
- Как передавать данные между контейнером Docker и хостом (100%)
- Как передавать данные между контейнерами Docker (100%)
- Для чего нужен Docker и когда его следует использовать? (100%)
- Как восстановить удалённый файл в Linux (RANDOM - 50%)