我一直在考虑为我在服务器上运行的Docker容器设置数据卷。容器是从这个FreePBX图像https://hub.docker.com/r/jmar71n/freepbx/ 基本上我想持久性数据,所以我不会失去我的VoIP扩展和设置在Docker停止的情况下。我已经尝试了很多指南,其中有堆栈溢出,还有Docker的man页面,但我无法完成它的工作。无法为Docker映像设置持久数据量
任何人都可以用我需要运行的命令来帮助我,以便将卷连接到上面链接的FreePBX映像上?
我一直在考虑为我在服务器上运行的Docker容器设置数据卷。容器是从这个FreePBX图像https://hub.docker.com/r/jmar71n/freepbx/ 基本上我想持久性数据,所以我不会失去我的VoIP扩展和设置在Docker停止的情况下。我已经尝试了很多指南,其中有堆栈溢出,还有Docker的man页面,但我无法完成它的工作。无法为Docker映像设置持久数据量
任何人都可以用我需要运行的命令来帮助我,以便将卷连接到上面链接的FreePBX映像上?
您可以通过运行带有-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
选项一样。
嗨,Elton Stoneman和user3608260!
是的,你假设正确的数据保存在Mysql(记录,用户,配置等)。
但是在星号中,所有配置保存在文件'.conf'和类似文件中。
在这种情况下,档案寻找user3608260在 '的/ etc /星号/ *' 的蓄能
你的回答是完全有更多的一个命令:-v/local_to_save:在/ etc /星号
最终搬运工命令:
搬运工运行-d -t -v /搬运工/ PBX-数据:在/ var/lib中/ MySQL的-v /搬运工/ PBX-星号:的/ etc /星号 jmar71n/FreePBX的
[假设/ docker/pbx-asterisk是一个主机目录。 ]