Вы можете сделать это, запустив контейнер с параметром -v
и сопоставив его с каталогом хоста — вам просто нужно знать, где контейнер хранит данные.
Глядя на Dockerfile для этого изображения, я предполагаю, что интересующие вас данные хранятся в MySql. В MySql config каталог данных, который использует контейнер, — /var/lib/mysql
.
Таким образом, вы можете запустить свой контейнер следующим образом, сопоставив каталог данных MySql с /docker/pbx-data
на вашем хосте:
> docker run -d -t -v /docker/pbx-data:/var/lib/mysql jmar71n/freepbx
20b45b8fb2eec63db3f4dcab05f89624ef7cb1ff067cae258e0f8a910762fb1a
Используйте docker inpect
, чтобы подтвердить, что монтирование отображается должным образом:
> docker inspect --format '{{json .Mounts}}' 20b
[{"Source":"/docker/pbx-data",
"Destination":"/var/lib/mysql",
"Mode":"","RW":true,"Propagation":"rprivate"}]
Когда контейнер запускается, он загружает базу данных, поэтому на хосте вы сможете увидеть содержимое каталога данных MySql, который использует контейнер:
> ls -l /docker/pbx-data
total 28684
-rw-r----- 1 103 root 2062 Sep 21 09:30 20b45b8fb2ee.err
-rw-rw---- 1 103 messagebus 18874368 Sep 21 09:30 ibdata1
-rw-rw---- 1 103 messagebus 5242880 Sep 21 09:30 ib_logfile0
-rw-rw---- 1 103 messagebus 5242880 Sep 21 09:30 ib_logfile1
drwx------ 2 103 root 4096 Sep 21 09:30 mysql
drwx------ 2 103 messagebus 4096 Sep 21 09:30 performance_schema
Если вы уничтожите контейнер и запустите другой с тем же отображением тома, в нем будут все файлы данных из предыдущего контейнера, и состояние вашего приложения должно быть сохранено.
Я не знаком с FreePBX, но если состояние хранится в других каталогах, вы можете найти их в конфигурации и сопоставить их с хостом таким же образом, с несколькими параметрами -v
.
person
Elton Stoneman
schedule
21.09.2016