Docker в Docker'е, или как я случайно призвал демона

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Вы когда-нибудь чувствовали, что нарушаете естественный порядок вещей? Что копаетесь в глубинах, которые лучше не тревожить? Именно так я чувствовал себя, когда решил запустить Docker в Docker'е. Всё началось как обычный рабочий день, а закончилось — хорошо, что не вызовом экзорциста.

Начало конца

Идея казалась простой: запустить контейнер внутри контейнера. Казалось бы, зачем? Потому что можно. Как говорят великие разработчики, если ты можешь что-то сделать в IT — рано или поздно ты это сделаешь, даже если знаешь, что не стоит.

Итак, я запустил:

docker run -it --rm --privileged docker:dind

И в этот момент где-то в тёмном углу серверной закричал один админ.

Симптомы одержимости

Всё шло хорошо… примерно пять минут. Потом начались странные вещи:

  • Логов стало подозрительно много. Их было больше, чем строк в коде проекта. Они просто лились бесконечным потоком, как будто я случайно открыл портал в ад.

  • Память сервера превратилась в мем:

  • Контейнеры начали появляться сами по себе. Я не запускал их. Они просто были. Как будто Docker решил, что теперь он сам себе хозяин.

  • Команды docker ps и docker stop перестали работать. Точнее, они работали, но результаты были… сюрреалистичными. Как будто я разговаривал с сущностью, которая больше меня не слушается.

Расплата

Я попытался остановить процесс. docker stop, docker kill, docker rm -f — ничего не помогало. Тогда я пошёл ва-банк и выполнил:

sudo systemctl restart docker

На секунду всё стихло. Затем экран терминала мигнул, и в логах появилось странное сообщение:

[daemon]: You shouldn't have done that.

Я посмотрел на коллегу. Он посмотрел на меня. Мы оба нервно рассмеялись. Очевидно, это просто шутка в логах. Верно? Верно?

Итог: мораль сей басни

  1. Не запускайте Docker в Docker'е, если не готовы к сюрреализму.

  2. Если что-то работает — не трогайте.

  3. Если ваш сервер внезапно начинает вести себя как разумное существо — бегите.

  4. Лучший способ исправить проблему с Docker — это форматнуть сервер и начать новую жизнь.

P.S. Через день после этого у нас на сервере почему-то появилась папка lost+found с файлом docker_is_watching_you.txt. Я не открывал его. И вам не советую.

Источник: https://habr.com/ru/articles/885104/


Интересные статьи

Интересные статьи

Евгений Петриченко пришел в Битрикс24 студентом. За 16 лет в компании он прошел путь от специалиста техподдержки до эксперта по мобильной разработке. И ни разу не думал сменить место работы.  ...
Последний пост про развитие моего Telegram чата для сайта (Telegram Feedback) был в марте, чуть больше полугода назад. С тех пор проект подрос, пользователей стало больше, а деньги пусть и не пол...
Особенность архитектуры 1С-Битрикс предполагает наличие контента как в базе (например: инфоблоки), так и непосредственно в статических файлах проекта.Данный формат создавал проблемы при совместной р...
Художник-монументалист - человек, который выполняет действительно Большие Задачи. Вот и со мной рядом был такой человек, у которого еще не горел, но активно приобретал характерную черную корочку дипло...
Много всякого сыпется в мой ящик, в том числе и от Битрикса (справедливости ради стоит отметить, что я когда-то регистрировался на их сайте). Но вот мне надоели эти письма и я решил отписатьс...