关于docker容器启动时没有权限出现错误:chown: changing ownership of '/var/lib/mysql/': Permission denied

一、出现问题

一、报错情况

在未关闭selinux时输入创建docker容器命令

docker run --name mysql -p 3306:3306 -v /etc/mysql:/var/lib/mysql -v /etc/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD='root' --restart=always -d mysql:5.7.37 

报错

 

 二、解决思路

映射时宿主机的地址为/etc/mysql,容器的地址为/var/lib/mysql,报错情况显示的是对于docker容器里面的/var/lib/mysql没有读写操作权限,是由于在这个mysql容器中,它的所有者是mysql,而我们使用的docker  run命令的在宿主机上操作的是root用户,而在docker容器里面宿主机的root用户只是相当于普通用户,而没有root用户的那种权限。

解决方法:

1.在使用docker  run命令的时候将“--privileged=true” 这个参数添加

如:

docker run --name mysql  --privileged=true -p 3306:3306 -v /etc/mysql:/var/lib/mysql -v /etc/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD='root' --restart=always -d mysql:5.7.37 

注意:docker有比较强的命令规范性

只能将--privileged=true这个参数写在拉取镜像前面即   -d  前面

而不能写在后面,写在后面会报错如下

 

 2.永久性解决,直接关闭电脑的selinux

修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。

不想重启就使用这条命令

setenforce 0

或者使用命令

sed -i 's/enforcing/disabled/'  /etc/selinux/config

再使用命令

setenforce  0

 

posted @ 2022-04-07 14:28  Ayheng  阅读(6651)  评论(0编辑  收藏  举报