Как сохранить данные состояния докера между вызовами? - PullRequest
0 голосов
/ 28 декабря 2018

Что, как вы ожидаете, произойдет в следующем сценарии: загрузите какой-нибудь образ докера базы данных, создайте несколько таблиц, добавьте несколько строк и закройте контейнер - остаются ли данные при повторном запуске контейнера?Интуитивно я думаю, что ответ «конечно» - это так очевидно, но я не уверен, что это действительно так.Я только что прошел учебник по postgres, и я либо удаляю данные, так или иначе, при запуске, или данные не остаются на месте.Не уверен, что происходит.Спасибо

1 Ответ

0 голосов
/ 28 декабря 2018

Хорошо, данные будут сохраняться в контейнере до тех пор, пока вы явно или неявно (например, с 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...