求助老师,centos7上用docker启动mariadb一直报没有权限创建directory '/bitnami/mariadb': Permission denied

centos7上用docker启动mariadb一直报没有权限创建directory ‘/bitnami/mariadb’: Permission denied
启动容器使用的命令已经指定了root用户,但是依然报无权限创建目录’/bitnami/mariadb’
docker run -d --name mariadb -p 3306:3306 --user root -e MARIADB_ROOT_PASSWORD=mariadb -e MARIADB_USER=bn_testlink -e MARIADB_PASSWORD=bn_testlink -e MARIADB_DATABASE=bitnami_testlink --net testlink -v /root/mariadb:/bitnami bitnami/mariadb:10.3.22

  • 你绑定上去的本地目录/root/mariadb 权限要设置好,启动命令中的root并不是用本地root启动 而是在容器里的那个系统中使用root运行,这种方式并不能让你的容器在本地有root权限,所以它也操作不了你挂在上去的这个root目录,这个应该在课上讲过了
  • 另外,不要绑定上级目录 里面可能会有别的内容需要操作 直接绑定/bitnami/mariadb这个官网指定的目录路径试试看。

老师,我启动是用的本地的root启动的,以及挂载本地的目录的权限也是最大的,不管启动命令中加不加–user root,但还是报cannot create directory ‘/bitnami/mariadb’: Permission denied,实在是搞不懂为什么,还望老师能指导下
image
image

注意这句话
你现在绑定的目录还跟官方不一致 先改完再看看

另外 你运行docker容器的用户 和docker容器再去操作你本地目录的用户 并不是同一个用户
你用root来启动并不代表docker会用root去操作,两者没什么关系

启动mariadb成功了,原因是挂载的宿主机的目录对于容器用户没有权限,把宿主机的目录修改所属为UID的1001就可以了。但是启动testlink又失败了,启动testlink的日志也没报错信息,我是按照上面的github上的步骤来的呢,老师再帮我看看呢,因为没有看到报错,不知道怎么去定位了,谢谢老师

image
image

是不是启动命令少了个 -d啊,看你启动命令没加那个参数,然后就直接中断了

是的,楼上说的对
你没有加-d参数,导致容器的运行并不是后台运行 当你把命令行的运行退出之后容器自动就停止了
另外你写的端口号也是旧镜像的 你按照最后一张截图里面的命令改一下 现在是用8080和8443端口了

我加-d也是启动失败docker ps看不到testlink,用docker logs -f testlink看到的日志就只有截图那么点,没有报错的信息。
那我晚上改下端口试试。
另外,老师,我用df -h我看到/dev/scd0满了,会不会影响这个启动失败呀

老师好,我也遇到这个问题了,docker搭建testlink的录播课上没有讲这个,我是20期的学员,那节课讲了此问题?

在当前目录下给/bitnami/mariadb添加权限:chmod 777 mariadb/,然后再执行命令docker start mariadb就可以了

加-d的启动命令执行前 你把旧的容器删掉了么?很有可能是因为旧的容器还存在导致新的容器根本没有启动起来。正常来说如果是启动不正常的话都是会有报错的,如果还是有问题可以把启动命令和日志截图发一下看看