Принцесса для снятия стресса

Привет. Когда ты создаешь новый docker контейнер, то по умолчанию этому контейнеру назначается имя. Откуда оно берется?

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Docker генерирует случайные имена для контейнеров, используя сочетание прилагательных и фамилий известных учёных или инженеров.

<прилагательное><фамилия> и всегда написаны в нижнем регистре.

Например:

quirky_pare
agitated_turing
furious_heisenberg
romantic_curie

Окей. После некоторого ресёрча оказалось, что 90% докера написано на Golang. Вот это поворот!

Порывшись еще немного, нашел функцию по генерации этих имен для контейнеров.

Посмотреть можешь тут.

Мотаем этот код в самый низ и видим забавную хуйню:

if name == "boring_wozniak" /* Steve Wozniak is not boring */ {
    goto begin
  }

Этакая пасхалочка. Но зачем все эти имена?

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

Ну и на закуску адаптируем полученные знания на bash, генератор может выглядеть так:

#!/bin/bash

adjectives=(
  "adoring" "agitated" "amazing" "angry" "awesome" "blissful" "bold"
  "boring" "brave" "clever" "cool" "compassionate" "competent" "crazy"
  "dazzling" "determined" "ecstatic" "elegant" "eloquent" "epic"
  "exciting" "fervent" "focused" "furious" "gallant" "gifted" "goofy"
  "gracious" "happy" "hardcore" "hopeful" "hungry" "infallible" "inspiring"
  "jolly" "jovial" "keen" "kind" "laughing" "loving" "magical"
  "mystifying" "naughty" "nervous" "nostalgic" "optimistic" "peaceful"
  "practical" "priceless" "quirky" "recursing" "relaxed" "reverent"
  "sad" "serene" "sharp" "silly" "sleepy" "stoic" "strange" "stupefied"
  "suspicious" "tender" "thirsty" "trusting" "unruffled" "vibrant"
  "vigilant" "wizardly" "wonderful" "youthful" "zealous" "zen"
)

scientists=(
  "albattani" "allen" "archimedes" "ardinghelli" "babbage" "bashdays" "banach"
  "banzai" "bardeen" "bartik" "bassi" "bell" "benz" "bhabha" "bhaskara"
  "blackwell" "bohr" "booth" "borg" "bose" "boyd" "brahmagupta" "brattain"
  "brown" "carson" "chandrasekhar" "colden" "cori" "cray" "curie"
  "darwin" "davinci" "dijkstra" "dubinsky" "easley" "einstein"
  "elion" "engelbart" "euclid" "euler" "fermat" "fermi" "feynman"
  "franklin" "galileo" "galois" "goldberg" "goodall" "hawking"
  "heisenberg" "hermann" "herschel" "hertz" "hodgkin" "hoover" "hopper"
  "hypatia" "joliot" "kalam" "keller" "kowalevski" "lalande" "leavitt"
  "lichterman" "liskov" "lovelace" "mayer" "mccarthy" "mcclintock"
  "mclean" "mcnulty" "meitner" "mendel" "mendeleev" "minsky" "mirzakhani"
  "moore" "napier" "newton" "nobel" "noether" "panini" "pare"
  "pasteur" "payne" "perlman" "pike" "poincare" "ptolemy" "raman"
  "ramanujan" "ride" "ritchie" "roentgen" "rosalind" "saha"
  "sammet" "shockley" "sinoussi" "stallman" "stonebraker" "swanson"
  "tesla" "thompson" "torvalds" "turing" "varahamihira" "visvesvaraya"
  "wilbur" "wiles" "williams" "wilson" "wing" "wozniak" "wright"
  "yonath"
)

generate_container_name() {
  local adjective="${adjectives[RANDOM % ${#adjectives[@]}]}"
  local scientist="${scientists[RANDOM % ${#scientists[@]}]}"
  echo "${adjective}_${scientist}"
}

count=${1:-10}
for ((i=1; i<=count; i++)); do
  generate_container_name
done

После запуска скрипта, на экран выведутся 10 случайных имен в стиле docker. Количество можешь гибко менять.

Теперь ты в праве заполнить массивы своими данными и генерировать уникальные имена, например: pizdatiy_huy или ohuennaya_pizda.

А потом использовать сразу в командах:

docker run --name $(bash script.sh) -d nginx

Есть еще такая штука:

alias dn='curl -s https://frightanic.com/goodies_content/docker-names.php'

Это выплюнет тебе подобное имя прям в консоли без скриптов и приседаний.

А еще есть библиотека на питоне — codenamize, которая проворачивает тоже самое.

Короче есть из чего выбрать. В общем пользуйся, прикручивай, изучай!