Согласно моему пониманию докера, я ожидаю следующих результатов от шагов процесса, которые вы описали:
Сначала: данные могут быть сохранены в контейнерах докеров - фактически любая операция над вашим контейнером, которая создает, удаляет или обновляет файлы, вызовет AUFS записать этот файл в слой контейнера . При удалении или обновлении это будет скрывать записи для тех же файлов в нижних слоях изображений . Конечно, любые записанные данные сохраняются только до тех пор, пока вы не удалите контейнер. Если вы запустите новый контейнер на основе того же изображения, эти данные, естественно, не будут существовать.
Кроме того, цель сборки Docker состоит в создании образов из файла Dockerfile. Вы не можете использовать его, чтобы начать контейнер.
Относительно ваших наблюдений
- После шага 3 я бы ожидал, что все ваши данные все еще будут там, поскольку остановка и перезапуск контейнера оставляет слой контейнера без изменений. stop просто убивает основной процесс, который поддерживает ваш контейнер, а start разжигает основной процесс, выполняя соответствующий сценарий точки входа.
- После шага 5 Я все еще ожидаю, что ваши данные будут там, так как вы передали контейнер новому образу. Теперь это изображение должно содержать измененный слой контейнера. Когда вы вызываете docker commit , имейте в виду, что это не обновляет исходный образ, а создает новый.