Docker创建容器时目录权限踩坑

作者:清浅 时间:2021-10-28 23:33:14 

昨天写项目时需要用到Mysql的衍生版本percona, 就想用Doker来安装.结果踩了一晚上坑, 今早终于解决. 现记录在此.
这个坑原因是我对linux的目录权限问题不敏感导致的. 我的系统是ubuntu16.04, 运行 docker pull percona 拉取镜像时一切正常.

Docker创建容器时目录权限踩坑

拉取完后,输入 docker images查看所有镜像, 显示正常:

Docker创建容器时目录权限踩坑

然后我创建容器,命令为(执行时不要有换行):


docker create --name percona -v /data/mysql-data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root percona:lates

这个命令的意思是我创建一个名为percona的容器, 然后把我本地的/data/mysql-data目录映射到docker容器中的/var/lib/mysql目录 并指定3306端口,然后设数据库root用户密码也为root,最后的percona:latest是指定我上面拉取的版本.

因为docker容器中的数据库只是一个镜像,可以理解为并不是真实存在的,映射到我本地目录的作用就是docker往/var/lib/mysql目录存储的数据都可以同步存储到我的本地/data/mysql-data目录. 这样保证了数据不丢失,而且方便我本地操作.

命令的参数不了解的可以看下官方文档或者随便搜个docker视频教程, 都有解释. 然后我开启此容器, docker start percona. 开启完后查询所有运行中的容器docker ps, 这时候出问题了:

Docker创建容器时目录权限踩坑

为空,即没有查到运行中的容器... 然后我查了下所有的容器,包括运行的和没运行的的. docker ps -a, 显示如下:

Docker创建容器时目录权限踩坑

原来是端口没有绑定成功, 所以没有运行!, 每次运行就自动exited

这时我查看了一下docker日志, 输入命令 docker logs 容器id, 显示如下:

Docker创建容器时目录权限踩坑

注: 这里的71是我此容器的container_id的开头前两个数字, docker支持这种简化写法.

日志报错说我没有对容器中/var/lib/mysql目录下的创建和写权限.
现在找到这个问题原因了, 可是搜了一晚上都没有解决, 不得不说网上的一些不负责任的水贴是真的坑!
终于在早上找了解决办法:
即检查我本地目录的所有者和docker容器中的/var/lib/mysql目录的所有者是否为同一个用户.


docker run -ti --rm --entrypoint="/bin/bash" percona -c "whoami && id"

此命令的作用是查看容器的所有者, 显示为:

Docker创建容器时目录权限踩坑

然后输入(不能换行):


docker run -ti --rm -v /data/mysql-data:/var/lib/mysql --entrypoint="/bin/bash" percona -c "ls -la /var/lib/mysql"

此命令的作用是查看映射本地数据卷时, 此目录的拥有者

Docker创建容器时目录权限踩坑

原因就出在这里, 这就是为什么mysql用户访问docker中的目录时, 会报权限错误! 因为 本地映射目录的主人是root用户, 而docker容器中/var/lib/mysql目录的主人是mysql用户,uid为999!
然后解决方法就是, 把当前目录的拥有者赋值给uid 999即mysql用户, 再重新启动容器

Docker创建容器时目录权限踩坑

问题解决了! 浪费了一晚上时间, 不得不说, linux的权限控制知识还要加深!

来源:https://segmentfault.com/a/1190000021917842

标签:Docker,容器,目录,权限
0
投稿

猜你喜欢

  • WordPress 3.3:将更注重上传功能和更新方式

    2011-07-13 19:53:59
  • Windows下PHP5和Apache的安装与配置

    2008-12-01 12:51:00
  • 看Google如何审核你的网站

    2008-08-06 20:22:00
  • 在Serv-U中使用SSL证书增强FTP服务器安全性

    2010-04-30 22:02:00
  • IIS 301重定向到www.开头的域名教程

    2010-04-24 15:16:00
  • 网易梦幻人生开始封闭测试 对用户进行细分

    2009-11-17 08:21:00
  • VMware Server的工作原理

    2009-09-09 13:04:00
  • IIS 7 Web服务器管理介绍

    2009-01-06 16:55:00
  • Google工程师解释Googlebot抓取网页的原理

    2009-02-10 18:04:00
  • Skype乱局将终结 创始人重返独立公司董事会

    2009-11-05 10:49:00
  • 很好很快乐 花儿世界v1.1新版尝鲜报告

    2009-11-23 15:56:00
  • 教你如何防止收到垃圾邮件

    2007-06-23 14:20:00
  • 十分钟让你的外贸网站更专业

    2009-01-23 16:51:00
  • 提高IIS网站服务器执行效率的第八种方法:

    2012-01-29 17:56:07
  • Vsftpd在SuSE Linux操作系统上安装配置

    2009-12-10 19:08:00
  • 解析Win 2000中的EXE文件(1)

    2007-08-29 13:56:00
  • centos 7系统下安装Jenkins的步骤详解

    2023-07-23 07:29:38
  • 网站内页排名高于首页排名的原因分析

    2008-12-09 17:34:00
  • 搜索不更新网站怎么办?

    2008-03-21 18:41:00
  • 在校学生如何通过网络赚钱

    2010-05-16 07:36:00
  • asp之家 网站运营 m.aspxhome.com