> тогда как докер разворачивает контейнер налету из образа, а при остановке его уничтожает, т.е.
> не хранит его состояние между запускамитут тебя тоже обманули - контейнер может быть персистентным, и сохраняться при остановке.
Небольшая проблема в том, что если, опять, макака завела внутри целиком эмулятор операционной системы вместо одной задачи, причем задача ДОЛЖНА уметь корректно завершать работу по сигналу извне, docker stop выглядит не как shutdown, а как обрубание питания на ходу.
Собственно, настоящий системный shutdown точно так же выглядит, это init снабжен кучей хитрой механики, плавно останавливающей демонов, в правильном порядке и дожидаясь завершения их работы.
Но внутри докера нет такого init ;-) и, главное, места под него не предусмотрено. Каждый макак чуть поумнее типового вынужден сам себе изобретать - причем докер ему тут не помогает, а мешает. Например, в докерфайле нельзя задать таймаут шатдауна, отличающийся от дефолта. И если у тебя там что-то сложное, что просто так не выключить - остается только писать жалобные просьбы в документации - "останавливайте, пожалуйста docker exec stop, или хотя бы docker -t 20000 stop, иначе я за базу не ручаюсь".
А система с нескучным restapi у нас называется k8s + openshift
> Например, для открытия TCP портов в контейнере нужно это явно прописать в докерфайле
не, не нужно. Так было задумано, когда-то давно, когда хотели чтобы докерфайл был единственным и законченным хранилищем всей метаинфы, что именно может понадобиться этой задаче.
Это все сломали и выбросили еще на ранних этапах, вместе с persistent volumes и volume-from, точнее, объявили немодно-deprecated, и понаписали сверху еще две разных обертки, ни одну из которых тоже не доделали - некогда, смузи киснет, макака, задрав обос...ный хвост уже убежала в другой прожект.