当前位置: 首页 > 知识库问答 >
问题:

如何在docker上绑定挂载的持久化卷?我想在docker上运行Sonarqube

黄宏毅
2023-03-14

我想在Docker上运行SonarQube。当我运行whiteout volume Persisted选项时,它与以下命令一起正常工作:

docker run -d --name sonarqube -p 9000:9000 sonarqube
 docker run -d --name sonarqube \
-p 9000:9000 \
-v /opt/docker-mounts/sonaarqube/conf:/opt/sonarqube/conf \
-v /opt/docker-mounts/sonaarqube/data:/opt/sonarqube/data \
-v /opt/docker-mounts/sonaarqube/logs:/opt/sonarqube/logs \
-v /opt/docker-mounts/sonaarqube/extensions:/opt/sonarqube/extensions \
sonarqube

2019-07-07 06:42:41,143无法创建文件/opt/sonarqube/logs/es.log java.io.io.ioException:在java.base/java.io.unixfilesystem.createFileTractional(本机方法)权限被拒绝,地址为java.base/java.io.file.createNewFile(file.java:1024),地址为org.apache.logging.log4j.core.appender.rolling.rollingFileManager$rollingFileManager factory.createManager(rollingFileManager.java:608)在org.apache.logging.log4j.core.appender.abstractManager.getManager(abstractManager.java:113)在org.apache.logging.log4j.core.appender.abstractManager.java:113),在org.apache.logging.log4j.core.appender.outputStreamManager.getManager(outputStreamManager.java:114)在145)在org.apache.logging.log4j.core.appender.rollingFileappender$builder.build(rollingfileappender.java:61)在org.apache.logging.log4j.core.config.plugins.util.pluginbuilder.build(pluginbuilder.java:123)在org.apache.logging.log4j.core.config.abstractConfiguration.createPluginObject(abstractConfiguration.java:959)在在org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:514)在org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:238)在org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:250)在common.logging。logconfigurator.configure(logconfigurator.java:234)在org.ellasticsearch.common.logging.logconfigurator.configure(logconfigurator.java:127)在org.ellasticsearch.bootstrap.bootstrap.bootstrap.init(bootstrap.java:302)在org.ellasticsearch.bootstrap.ellasticsearch.init(ellasticsearch.java:159),在org.ellasticsearch.java:159),在cli.command.main(command.java:90)在org.elasticsearch.bootstrap.elasticsearch.main(elasticsearch.java:116)在org.elasticsearch.bootstrap.elasticsearch.main(elasticsearch.java:93)

2019-07-07 06:42:41,148 main ERROR无法为元素rollingFile:java.lang.IllegalStateException:ManagerFactory[org.apache.logging.log4j.core.appender.rolling.Rolling.FileManager$RollingFileManagerFactory@5DCD8C7a]创建类型为org.apache.logging.log4j.core.appender.RollingFileManager@2250b9f2[pattern=/]无法为opt/sonarqube/logs/es.%d{yyyy-MM-dd}.log,append=true,bufferedio=true,buffersize=8192,policy=compositeTriggeringPolicy(policies=[timebasedtriggeringPolicy(Nextrollovermillis=0,interval=1,modulate=true)]),strategy=defaultrolloverStrategy(min=-2147483648,max=2147483647,usemax=false),,filePermissions=null,fileowner=null]]java.lang.IllegalStateException:ManagerFactory[org.apache.logging.log4j.core.appender.rolling.rollingFileManagER$RollingFileManagerFactory@5DCD8C7A]无法使用数据[org.apache.logging.log4j.core.appender.rolling.rolling.rollingFileManager$factorydata@2250b9f2[pattern=/opt/sonarqube/logs/es.log]为[/opt/sonarqube/logs/es.%d{yyyy-MM-dd}.log,append=true,bufferedio=true,buffersize=8192,TrolLoverStrategy(min=-2147483648,max=2147483647,usemax=false),adveredseuri=null,layout=%d{yyyy.mm.dd hh:mm:ss}%-5 level es[][%logger{1.}]%msg%n,filePermissions=null,fileowner=null]]在org.apache.logging.log4j.core.appender.abstractManager.getManager(abstractManager.java:115)在.apache.logging.log4j.core.appender.rolling.rollingFileManager.GetFileManager(RollingFileManager.java:188)位于org.apache.logging.log4j.core.appender.rollingFileAppender$Builder。在org.apache.logging.log4j.core.appender.rollingfileappender.builder.builder.build(rollingfileappender.java:145)在org.apache.logging.log4j.core.appender.rollingfileappender.juilder.builder.build(rollingfileappender.java:61)在org.apache.logging.log4j.core.config.plugins.util.pluginbuild.build(createConfiguration(AbstractConfiguration.java:891)在org.apache.logging.log4j.core.config.AbstractConfiguration.java:514)在org.apache.logging.log4j.core.config.AbstractConfiguration.doConfiguration(AbstractConfiguration.java:514)在org.apache.logging.log4j.core.config.AbstractConfiguration.Initialize(AbstractConfiguration.java:238)在.apache.logging。log4j.core.loggerContext.start(loggerContext.java:263),在org.ellasticsearch.common.logging.logconfigurator.configure(logconfigurator.java:234)在org.ellasticsearch.common.logging.logconfigurator.configure(logconfigurator.java:124)在org.ellasticsearch.bootstrap.bootstrap.init(bootstrap.java:302)在执行(environmentAwareCommand.java:86)在org.elasticSearch.cli.command.mainWithouTherrorhand(command.java:124)在org.elasticSearch.cli.command.main(command.java:90)在org.elasticSearch.bootstrap.elasticSearch.main(elasticSearch.java:93)在org.elasticSearch.java:93),在org.elasticSearch.bootstrap.elasticSearch.main

2019-07-07 06:42:41,152主要错误无法调用类org.apache.logging.log4j.core.appender.rollingFileAppender中的工厂方法。元素rollingFile:java.langging.log4j.core.appender.rollegalStateException:找不到类org.apache.logging.log4j.core.appender.rollegalStateException:找不到类org.apache.logging.log4j.core.appender.rollingFileAppender的工厂方法。java:235)在org.apache.logging.log4j.core.config.plugins.util.pluginbuilder.build(PluginBuilder.java:135)在org.apache.logging.log4j.core.config.abstractConfiguration.createPluginObject(AbstractConfiguration.java:959)在org.apache.logging.log4j.core.config.abstractConfiguration.createConfiguration(AbstractConfiguration.java:899)j.core.config.abstractConfiguration.doConfigure(AbstractConfiguration.java:514)在org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:238)在org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:250)在org.apache.logging.log4j.core.config.AbstractConfiguration.start(.java:234)在org.elasticsearch.common.logging.logconfigurator.configure(logconfigurator.java:127)在org.elasticsearch.bootstrap.bootstrap.bootstrap.init(bootstrap.java:302)在org.elasticsearch.bootstrap.elasticsearch.init(elasticsearch.java:159),在org.elasticsearch.bootstrap.elasticsearch.init(elasticsearch.java:159),在.elasticsearch.cli.command.main(command.java:90)在org.elasticsearch.bootstrap.elasticsearch.main(elasticsearch.java:116)在org.elasticsearch.bootstrap.elasticsearch.main(elasticsearch.java:93)

2019-07-07 06:42:41,154主错误为追加器中的RollingFile返回Null对象。2019-07-07 06:42:41,154主要错误无法找到记录器配置“root”的appender“file_es”2019.07.07 06:42:41警告应用程序[][O.S.A.P.AbstractManagedProcess]退出,退出值[es]:1 201 9.07.07 06:42:41信息应用程序[][O.S.A.ScheduleImpl]进程[es]停止2019.07.07 06:42:41信息应用程序[][O.S.A.ScheduleImpl]SonarQube停止

共有1个答案

柴嘉石
2023-03-14

我认为您已经保留了卷,但没有文件和所需的权限。按照以下步骤操作。

$ docker run -d --name sonarqube -p 9000:9000 sonarqube
$ docker ps -f name=sonarqube

记下容器ID。

$ cd /opt/docker-mounts/sonaarqube
$ chown -R 999:999 .
$ docker cp -a CONTAINER_ID:/opt/sonarqube/conf .
$ docker cp -a CONTAINER_ID:/opt/sonarqube/logs . # this can be skipped is not required 
$ docker cp -a CONTAINER_ID:/opt/sonarqube/data . # optional, if you need the existing data from the container 
$ docker cp -a CONTAINER_ID:/opt/sonarqube/extensions .
$ docker run -d --name sonarqube \
       -p 9000:9000 \
       -v /opt/docker-mounts/sonaarqube/conf:/opt/sonarqube/conf \
       -v /opt/docker-mounts/sonaarqube/data:/opt/sonarqube/data \
       -v /opt/docker-mounts/sonaarqube/logs:/opt/sonarqube/logs \
       -v /opt/docker-mounts/sonaarqube/extensions:/opt/sonarqube/extensions \
       sonarqube
 类似资料:
  • 问题内容: 在Mac上,如何将卷装载到Docker容器? 在我的Linux机器上,这很容易。我需要做的只是运行容器时的操作。但是Mac是不同的,因为我必须运行boot2docker才能在VirtualBox中运行VM。我试过跑步 但我明白了 如果我忽略了它,仍然尝试像这样挂载在虚拟机上 我懂了 我感觉好像缺少了一些非常简单的东西,但是我无法弄清楚。任何帮助将不胜感激。 问题答案: 好的,在研究了G

  • 我最近在Windows10上升级了我的Docker工具箱,现在我的音量挂载不再工作了。我什么都试过了。下面是当前的挂接路径:

  • 问题内容: 我最近创建了一个在Windows上的boot2docker上运行的mongodb docker实例。 不幸的是,在尝试kitematic的过程中,我意外地从mongo容器中删除了该卷,并且无法再访问我的数据。 mongo实例似乎创建了一个新卷,而旧卷现在仍悬空(孤立)并且未安装在任何容器中。 有什么办法可以恢复吗? 问题答案: 感谢您的答复,它使我处于正确的轨道,我设法使用以下命令启动

  • 问题内容: 我认为这在几个月前就可以解决了。常规命令行泊坞窗: 可以正常工作,但是我无法在docker-py中工作: ..总是告诉我,新的不存在。应该如何使用docker-py完成? 问题答案: 以下是进行卷绑定的当前工作方式:

  • 我找到的最接近的答案是这样的。 但我想知道的是,Dockerfile卷命令会被Kubernetes完全忽略吗?或者数据将被持久化到两个地方?一个用于docker卷(在主机中哪个豆荚运行),另一个是Kubernetes的PV? 之所以这样问,是因为我从docker hub部署了一些容器,其中包含VOLUME命令。同时,我也把PVC贴在我的豆荚上。我在考虑是否会在节点中创建本地卷(docker卷,而不

  • 问题内容: 我有一个从docker-compose.yml指向的Dockerfile。 我希望将docker-compose.yml中的卷挂载在Dockerfile中之前进行。 Dockerfile: docker-compose.yml 首先执行Dockerfile,然后从docker-compose挂载是完全有意义的,但是有一种解决方法。 我想保持Dockerfile通用,同时从compose