- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Docker创建容器时目录权限踩坑由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
昨天写项目时需要用到mysql的衍生版本percona, 就想用doker来安装.结果踩了一晚上坑, 今早终于解决. 现记录在此. 这个坑原因是我对linux的目录权限问题不敏感导致的. 我的系统是ubuntu16.04, 运行 docker pull percona 拉取镜像时一切正常. 。
拉取完后,输入 docker images查看所有镜像, 显示正常
然后我创建容器,命令为(执行时不要有换行)
1
|
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 ps -a, 显示如下
原来是端口没有绑定成功, 所以没有运行!, 每次运行就自动exited 。
这时我查看了一下docker日志, 输入命令 docker logs 容器id, 显示如下
注: 这里的71是我此容器的container_id的开头前两个数字, docker支持这种简化写法. 。
日志报错说我没有对容器中/var/lib/mysql目录下的创建和写权限. 现在找到这个问题原因了, 可是搜了一晚上都没有解决, 不得不说网上的一些不负责任的水贴是真的坑! 终于在早上找了解决办法: 即检查我本地目录的所有者和docker容器中的/var/lib/mysql目录的所有者是否为同一个用户. 。
1
|
docker run -ti --
rm
--entrypoint=
"/bin/bash"
percona -c
"whoami && id"
|
此命令的作用是查看容器的所有者, 显示为
然后输入(不能换行)
1
|
docker run -ti --
rm
-
v
/data/mysql-data
:
/var/lib/mysql
--entrypoint=
"/bin/bash"
percona -c
"ls -la /var/lib/mysql"
|
此命令的作用是查看映射本地数据卷时, 此目录的拥有者 。
原因就出在这里, 这就是为什么mysql用户访问docker中的目录时, 会报权限错误! 因为 本地映射目录的主人是root用户, 而docker容器中/var/lib/mysql目录的主人是mysql用户,uid为999! 然后解决方法就是, 把当前目录的拥有者赋值给uid 999即mysql用户, 再重新启动容器 。
问题解决了! 浪费了一晚上时间, 不得不说, linux的权限控制知识还要加深.
到此这篇关于docker创建容器时目录权限踩坑的文章就介绍到这了,更多相关docker创建容器目录权限内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://segmentfault.com/a/1190000021917842 。
最后此篇关于Docker创建容器时目录权限踩坑的文章就讲到这里了,如果你想了解更多关于Docker创建容器时目录权限踩坑的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
当我们浏览网页时,我们想对网页内容如文章、评论中的观点持赞同或反对意见时,可以通过点击网页中的“顶”和“踩”来进行投票。而整个交互过程,开发者可以通过ajax异步来实现,从而提高用户体验
我以为我了解了python中列表切片的基础知识,但是在切片上使用负步骤时收到了意外错误,如下所示: >>> a = list(range(10)) >>> a [0, 1, 2, 3, 4, 5, 6
本文实例为大家分享了基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码,供大家参考,具体内容如下 数据库操作: ?
我是一名优秀的程序员,十分优秀!