docker-compose进行部署容器的时候,报错权限不足

刚刚用docker-compose部署elk的时候,没有起来,查看日志的时候,发现在数据卷挂载的时候,报错权限不足。

由于日志不在了,这里就直接贴出解决办法。

问题原因及解决办法
原因是CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题:
1.在运行容器的时候,给容器加特权,及加上 --privileged=true 参数:
docker run -i -t -v /soft:/soft --privileged=true 686672a1d0cc /bin/bash

注:这种适合docker run
2.临时关闭selinux:
setenforce 0

用这种解决了问题。
3.添加selinux规则,改变要挂载的目录的安全性文本
# 更改安全性文本的格式如下

chcon [-R] [-t type] [-u user] [-r role] 文件或者目录

选顷不参数:
-R :连同该目录下癿次目录也同时修改;
-t :后面接安全性本文的类型字段!例如 httpd_sys_content_t ;
-u :后面接身份识别,例如 system_u;
-r :后面街觇色,例如 system_r

[[email protected] Desktop]# chcon --help
Usage: chcon [OPTION]... CONTEXT FILE...
or: chcon [OPTION]... [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE...
or: chcon [OPTION]... --reference=RFILE FILE...
Change the SELinux security context of each FILE to CONTEXT.
With --reference, change the security context of each FILE to that of RFILE.

Mandatory arguments to long options are mandatory for short options too.
--dereference affect the referent of each symbolic link (this is
the default), rather than the symbolic link itself
-h, --no-dereference affect symbolic links instead of any referenced file
-u, --user=USER set user USER in the target security context
-r, --role=ROLE set role ROLE in the target security context
-t, --type=TYPE set type TYPE in the target security context
-l, --range=RANGE set range RANGE in the target security context
--no-preserve-root do not treat ‘/‘ specially (the default)
--preserve-root fail to operate recursively on ‘/‘
--reference=RFILE use RFILE‘s security context rather than specifying
a CONTEXT value
-R, --recursive operate on files and directories recursively
-v, --verbose output a diagnostic for every file processed

The following options modify how a hierarchy is traversed when the -R
option is also specified. If more than one is specified, only the final
one takes effect.

-H if a command line argument is a symbolic link
to a directory, traverse it
-L traverse every symbolic link to a directory
encountered
-P do not traverse any symbolic links (default)

--help display this help and exit
--version output version information and exit

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils ‘chcon invocation‘

在主机中修改/soft目录的安全性文档

[[email protected] Desktop]# chcon -Rt svirt_sandbox_file_t /soft

[[email protected] soft]# ll
total 384264
-rw-r--r--. 1 root root 212046774 Aug 8 10:01 hadoop-2.7.2.tar.gz
-rw-r--r--. 1 root root 181435897 Aug 8 09:23 jdk-8u102-linux-x64.tar.gz
在docker中就可以正常访问该目录下的相关资源了。

原文链接:https://blog.csdn.net/rznice/article/details/52170085

原文地址:https://www.cnblogs.com/dalianpai/p/11986419.html

时间: 2024-10-02 06:30:06

docker-compose进行部署容器的时候,报错权限不足的相关文章

Docker Compose 一键部署Nginx代理Tomcat集群

Docker Compose 一键部署Nginx代理Tomcat集群 目录结构 [[email protected] ~]# tree compose_nginx_tomcat/ compose_nginx_tomcat/ ├── docker-compose.yml ├── mysql │   ├── conf │   │   └── my.cnf │   └── data ├── nginx │   ├── Dockerfile │   ├── nginx-1.12.1.tar.gz │  

Docker Compose—简化复杂容器应用的利器

Compose是用于定义和运行复杂Docker应用的工具.你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,然后所有相关的操作都会被自动完成. 1. 安装Docker和Compose # 当前最新的Docker是1.6.2,Compose为1.2.0 curl -s https://get.docker.io/ubuntu/ | sudo sh sudo apt-get update sudo apt-get install lxc-docker # 参考http://do

部署禅道数据库报错

一 故障描述 部署禅道后,无法登录页面.有如下报错信息: 60507 17:03:49 [ERROR] /opt/zbox/run/mysql/mysqld: Table './zentao/zt_group' is marked as crashed and last (automatic?) repair failed 禅道所有的数据库表都是使用的MyISAM存储引擎,而MyISAM存储引擎很容易导致数据库表崩溃. 二 解决办法 停掉mysql,然后使用myisamchk检查zt_group

easy-mock本地部署成功,访问报错:EADDRNOTAVAIL 0.0.0.0:7300 解决方案

easy-mock本地部署成功后,迫不及待的想看看是否能正常访问,执行命令 npm run dev 启动项目,访问 127.0.0.1:7300 ,结果郁闷的是报错:EADDRNOTAVAIL 0.0.0.0:7300 一开始看到这个报错信息我就懵逼了,按照官网文档上一步一步的部署过来的,按套路来说应该不会出现这种情况啊,理所应当的就是访问的easy-mock的登录页面呀,谁成想出现这个问题. 郁闷了良久,到处找解决方案,最终发现这个报错原因是因为IP问题. 马上查看了easy-mock项目源代

开发环境无错,部署至测试环境报错“NoSuchMethodError”OR&quot;NoSuchClassError&quot;

背景: 实现一个简单的功能,需要用到jedis的jar包连接Redis.在之前便已经有使用jedis,它的版本比较旧,是2.1的.而新实现的功能,在编码的时候使用的是2.8的.在开发环境完成单元测试后,将编译好的class文件拷贝更新至测试环境.因种种原因,导致功能无法运行,排查后,觉得可能是jedis版本问题.于是,将jedis的版本重新降为2.1.运行,开始报如题错误. 报错: java.lang.NoSuchMethodError   PS:报这个错误的方法或者类明明存在,但是系统就是报这

已解决: idea创建并部署SpringMVC项目时 报错 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

用IDEA创建并运行SpringMVC项目时,最初发现没有Servlet包,这个问题已在上篇解决,然而当我们尝试去运行此时的SpringMVC项目时,发现仍然有错误.ClassNotFoundException 笔者也是IDEA的新手,在网上查了很多资料 有帖子说是Tomcat Server 的  VM options 没有填写,按照帖子填上这一项后,重启项目依然报错,最后终于找到了问题的原因,spring springmvc 的jar包没有导入.. 下面来解决这个问题: 现在问题解决了 原文地

记录一次SpringBoot打成war包部署到tomcat启动报错

启动时,报错信息如下: 28-Sep-2018 16:55:41.567 严重 [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal Error during ServletContainerInitializer processing javax.servlet.ServletException: Failed to instantiate WebApplicationInitializer

canal部署启动的时候报错com.alibaba.druid.pool.DruidDataSource - testWhileIdle is true, validationQuery not set

报错信息:com.alibaba.druid.pool.DruidDataSource - testWhileIdle is true, validationQuery not set 解决方法: 找到conf/canal.properties 文件里面的 canal.instance.tsdb.spring.xml=classpath:spring/tsdb/h2-tsdb.xml 信息,给注释掉 原文地址:https://www.cnblogs.com/houzs/p/10329384.ht

Docker compose 一键部署LNMP平台

docker-compose.yml version: '3' services: nginx: hostname: nginx build: context: ./nginx dockerfile: Dockerfile ports: - 80:80 links: - php:php-cgi volumes: - ./wwwroot:/usr/local/nginx/html php: hostname: php build: ./php links: - mysql:mysql-db vol