Хорошо, данные будут сохраняться в контейнере до тех пор, пока вы явно или неявно (например, с docker system prune
) не уничтожите их.
Как это работает?
Допустим, вы придерживаетесь классического подхода и запускаете новый контейнер с помощью команды docker run
, например
docker run ubuntu echo 'Hello' > /hello.txt
(ubuntu
простопример)
Docker извлекает изображение ubuntu
, создает новый контейнер (не имя, но с идентификатором), и в этом контейнере вы получаете файл /hello.txt
.Но если вы попробуете подобную команду еще раз, например
docker run -it ubuntu ls /
, вы не найдете свой файл, потому что это другой контейнер, построенный на том же исходном изображении.
Вам нужно отозвать контейнер, используя ID.Я бы?Шутки в сторону??Конечно, нет) вы можете дать человеку понятное имя для вашего контейнера и затем использовать его:
docker run --name foo ubuntu echo 'Hello' > /hello.txt
Теперь, если вы хотите использовать его повторно, просто позвоните
docker exec foo ls /
Это будетнайдите свой контейнер foo
и укажите корневой путь.Вы увидите ваш файл.Если вы не хотите, чтобы контейнер сохранялся, используйте аргумент --rm
с docker run
, и контейнер будет удален сразу после выхода.
Итак, чтобы завершить:
1) Создайте именованный контейнерс docker run --name foo IMAGE
2) Используйте их с docker exec foo