Docker SELinux 将 NFS 卷安装到容器时出错

Docker SELinux 将 NFS 卷安装到容器时出错

我创建了一个 NFS 卷

docker volume create --driver local --opt type=nfs --opt o=addr=preisschild-server-2.lan,rw --opt device=:/mnt/tank/MariaDB MariaDBData

这似乎有效,但是当我在 docker 容器上使用该卷时:

docker run --name MariaDB -v MariaDBData:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=topsecretpassword --network bridged -p 3306:3306 -d mariadb:latest

我得到/usr/bin/docker-current: Error response from daemon: SELinux relabeling of /var/lib/docker/volumes/MariaDBDataNFS/_data is not allowed: "operation not supported" 作为输出。我已经尝试过设置许可,但这没有用。

其他信息:操作系统:CentOS7 Docker 版本:1.13.1

答案1

尝试

docker run --name MariaDB -v MariaDBData:/var/lib/mysql:z -e MYSQL_ROOT_PASSWORD=topsecretpassword --network bridged -p 3306:3306 -d mariadb:latest

或者

docker run --name MariaDB -v MariaDBData:/var/lib/mysql:Z -e MYSQL_ROOT_PASSWORD=topsecretpassword --network bridged -p 3306:3306 -d mariadb:latest

或者

运行命令之前禁用 Selinux

答案2

当您使用时,docker-current我假设您使用的是 RHEL(7) 并且 SELinux 已配置(强制或许可)。

我想你已经被这个错误击中了: https://bugzilla.redhat.com/show_bug.cgi?id=1492113#c0

在链接评论的底部,您可以找到解决方法,我也很高兴将其粘贴在这里。使用nocopy选项代替zZ

docker run --name MariaDB -v MariaDBData:/var/lib/mysql:nocopy -e MYSQL_ROOT_PASSWORD=topsecretpassword --network bridged -p 3306:3306 -d mariadb:latest

请参阅这篇精彩的 github 评论,了解 nocopy 的含义。 https://github.com/docker/docker.github.io/issues/2992#issuecomment-299596714

相关内容