Записать данные в доступный для записи слой контейнера и зафиксировать изменения в изображении с другим тегом (ИЛИ), используя то же имя контейнера для запуска контейнера.
Например: запустил один контейнер Ubuntu и записал некоторые данные в файл.
$ docker run --name elastic_spence -it ubuntu /bin/bash
root@5f4a60fb6348:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@5f4a60fb6348:/# mkdir data
root@5f4a60fb6348:/# cd data
root@5f4a60fb6348:/data# echo "Sample text" > data.txt
root@5f4a60fb6348:/data# ls -lrth
total 4.0K
-rw-r--r-- 1 root root 12 Apr 9 17:06 data.txt
root@5f4a60fb6348:/data# cat data.txt
Sample text
root@5f4a60fb6348:/data#
Остановил контейнер и запустил контейнер с тем же именем.
$ docker start elastic_spence
elastic_spence
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5f4a60fb6348 ubuntu "/bin/bash" 2 minutes ago Up 3 seconds elastic_spence
Файл, созданный в предыдущем сеансе, был сохранен и доступен в новом сеансе.
$ docker exec -it 5f4a60fb6348 /bin/bash
root@5f4a60fb6348:/# ls
bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@5f4a60fb6348:/# cd data/
root@5f4a60fb6348:/data# ls -lrth
total 4.0K
-rw-r--r-- 1 root root 12 Apr 9 17:06 data.txt
root@5f4a60fb6348:/data# cat data.txt
Sample text
root@5f4a60fb6348:/data#
Кроме того, вы можете зафиксировать изменения контейнера в новом изображении, как показано ниже.
$ docker commit elastic_spence datastore:1.0
sha256:9fd236a965f655b86c0b17588b7c87f823caaf6cd02eafb62457576e4e02b514
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
datastore 1.0 9fd236a965f6 4 seconds ago 88.9MB
Запустите новый образ, и вы сможете увидеть сохраненные данные.
$ docker run -it datastore:1.0
root@759a9a50b015:/# cat data/data.txt
Sample text