chown:更改“/var/lib/mysql/”的所有权:不允许操作

chown: changing ownership of '/var/lib/mysql/': Operation not permitted

我正在尝试在 openshift origin 上部署 mariadb 映像。我在 docker 文件中使用 mariadb:10.2.12。它在本地工作正常,但当我尝试在 openshift origin 上部署时出现以下错误。

Initializing database chown: changing ownership of '/var/lib/mysql/': Operation not permitted Cannot change ownership of the database directories to the 'mysql' user. Check that you have the necessary permissions and try again.

chown 命令来自mariadb:10.2.12 Docker 文件

最初我遇到了 root 用户的问题,这在 openshift origin 上是不允许的,所以现在我正在使用

USER mysql

在 docker 文件中。现在我没有收到 运行ning 作为 root 的警告,但 openshift origin 仍然不喜欢 chown。请记住,我不是原始管理员,只是一个用户。我的docker文件如下:

FROM mariadb:10.2.12

ENV MYSQL_DATABASE="db_profile"

COPY ./my.cnf /etc/mysql/my.cnf
COPY ./db_profile.sql /docker-entrypoint-initdb.d/

USER mysql

EXPOSE 3306

在本地我运行如下:

docker build . -t laeeq/ligandprofiledb:0.0.1

docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=mypassword -d laeeq/ligandprofiledb:0.0.1

是否有解决此 chown 问题的解决方法?

$ ls -ld /var/lib
drwxr-xr-x 79 root root 4096 Oct  7 20:58 /var/lib

因此,要更改该目录中的任何内容,包括 /var/lib/mysql/,您需要 root

DockerHub 上的 MariaDB 镜像没有遵循不要求 运行 成为 root 用户的良好做法。

您应该改用 OpenShift 提供的 MariaDB 映像。例如:

centos/mariadb-102-centos7

参见:

应该能够从 OpenShift Web 控制台中的服务目录浏览器 select MariaDB,或者从命令行使用 mariadb 模板。

您应该在 Dockerfile 中的 USER mysql 之前更改所有权,或者如果您需要 运行 容器作为根,您应该定义服务帐户并使其具有部署特权。你可以关注这个https://github.com/openshift/origin/issues/9131#issuecomment-231952259