zoukankan      html  css  js  c++  java
  • Docker安装Mysql挂载目录时报错:Entrypoint script for MySQL Server 5.7.31-1debian10 started.

    有几种方法可以存储在Docker容器中运行的应用程序使用的数据。

    • 让Docker管理您的数据库数据的存储,通过写入数据库文件到磁盘上的主机系统使用自己的内部卷管理。这是默认设置,对用户来说很简单而且相当透明。缺点是,对于直接运行在主机系统(即外部容器)上的工具和应用程序,这些文件可能很难找到。

    • 在主机系统上(容器外部)创建一个数据目录,并将其挂载到容器内部可见的目录中。这将数据库文件放置在主机系统上的已知位置,并且使得主机系统上的工具和应用程序可以更容易地访问这些文件。缺点是用户需要确保目录存在,例如目录权限和主机系统上的其他安全机制被正确设置。

      1. 在您的主机系统中,在合适的卷上保存一个数据目录,例如/my/own/datadir

      2. 启动mysql容器。

        docker run --name mysql03 -p 3306:3306 -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.31
        

    然后按照上面这种方式创建容器后,使用docker ps查看正在运行的容器,发现mysql没有运行,再使用docker ps -a查看后,发现mysql容器刚一创建就exit了。

    使用docker logs 容器id查看运行日志,报错内容如下:

    2020-10-04 07:28:06+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.31-1debian10 started.
    find: '/var/lib/mysql/': Permission denied
    chown: changing ownership of '/var/lib/mysql/': Permission denied
    
    

    很显然,是mysql容器中/var/lib/mysql/没有权限。

    那么目标就很明显了,赋予容器这个权限。

    一般来说,无法访问目录,权限拒绝。该问题通常在centos7下出现。或者一个容器启动成功后,里面的服务无法成功访问,这是

    因为centos7中的安全模块selinux把权限禁掉了,一般的解决方案有以下两种:

    (1)临时关闭selinux

    直接在centos服务器上执行以下命令即可。执行完成以后建议重新docker run。

    etenforce 0
    

    (2)给容器加权限

    在docker run时给该容器加权限,加上以下参数即可:

    --privileged=true
    

    一般都推荐使用这种方式。

  • 相关阅读:
    C++标准转换运算符(2)
    C++标准转换运算符(1)
    未能加载视图状态。正在向其中加载视图状态的控件树必须与前一请求期间用于……
    我的第一篇博客
    C语言C语言程序
    C语言基本运算符
    C语言流程控制
    C语言关键字、标识(zhi)符、注释
    msado15.dll版本引发的离奇故障
    mySQL错误: The used table type doesn't support FULLTEXT indexes
  • 原文地址:https://www.cnblogs.com/nieaojie625/p/13767558.html
Copyright © 2011-2022 走看看