MySQL数据目录挂载到Docker宿主上,容器自动退出


MySQL数据目录挂载到宿主上,容器自动退出,取消挂载,正常运行,请问这是什么原因,怎么解决?
已邀请:

xds2000 - 数人科技CTO

赞同来自: jamlee


这里的问题,我能想到的就是主机的目录你赋予的用户是mysql,但到容器里面,默认是root用户,这样就导致目录权限的uid混乱了。 当mysql写数据的时候就会有权限问题。

解决办法是:先把目录挂载一个容器里,我们叫它data container,然后再用mysql的容器挂载。这样就把目录的权限问题解决了。具体的案例看这里:

blog.tutum.co/2014/05/27/containerize-your-database-volume-with-tutum-mysql-images/

DockOne - DockOne官方账号

赞同来自:


有日志么?

houyy

赞同来自:


原因是文件夹没权限,同时把宿主和容器中相应的文件夹设置为归属mysql用户,但结果是只有一个文件夹归属mysql用户,再次把不是归属mysql的文件夹设置为归属mysql用户后,另一个文件夹又变成不归属mysql用户,这是什么原因?如下所示:
宿主:
chmod +w /data/volumes-mysql
chown -R mysql:mysql /data/volumes-mysql
chcon -R -t mysqld_db_t /data/volumes-mysql

容器:
chmod +w /home/databases/mysql/data
chown -R mysql:mysql /home/databases/mysql/data
chcon -R -t mysqld_db_t /home/databases/mysql/data

cd /data/volumes-mysql
ls -al
drwxr-xr-x. 2   27   27     4096 12月  3 20:09 .
drwxr-xr-x. 6 root root     4096 12月  3 19:54 ..
-rw-rw----. 1   27   27 18874368 12月  3 20:09 ibdata1
-rw-rw----. 1   27   27  5242880 12月  3 20:09 ib_logfile0
-rw-rw----. 1   27   27  5242880 12月  3 20:09 ib_logfile1


cd  /home/databases/mysql/data
ls -al
drwxr-xr-x. 2 mysql mysql     4096 Dec  3 12:09 .
drwxr-xr-x. 3 root  root      4096 Dec  3 12:02 ..
-rw-rw----. 1 mysql mysql  5242880 Dec  3 12:09 ib_logfile0
-rw-rw----. 1 mysql mysql  5242880 Dec  3 12:09 ib_logfile1
-rw-rw----. 1 mysql mysql 18874368 Dec  3 12:09 ibdata1

syshack

赞同来自:


目测是因为容器内外的mysql用户的uid不同导致的,修改成一致 应该就ok了

要回复问题请先登录注册