Cassandra数据库在Docker崩溃中运行



每次我尝试在Docker中运行Cassandra数据库时,它都会崩溃并显示一些错误消息。它昨天起了作用,但我想有什么东西坏了,我试了所有的方法。正在删除所有卷、容器和配置。。。除了重新安装Docker和重新安装操作系统之外,我尝试了所有我能想到的事情。我在用Ubuntu。

at com.google.inject.Guice.createInjector(Guice.java:96)
at com.google.inject.Guice.createInjector(Guice.java:73)
at com.google.inject.Guice.createInjector(Guice.java:62)
at com.datastax.bdp.ioc.DseInjector.get(DseInjector.java:36)
at com.datastax.bdp.DseModule.main(DseModule.java:96)
ERROR [main] 2022-09-14 09:07:13,143  DseModule.java:102 - {}. Exiting...
com.google.inject.CreationException: Unable to create injector, see the following errors:
1) An exception was caught and reported. Message: commitlog directory '/var/lib/cassandra/commitlog' or, if it does not already exist, an existing parent directory of it, is not readable and writable for the DSE. Check file system and configuration.
at com.datastax.bdp.DseModule.configure(Unknown Source)
1 error
at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:466)
at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:155)
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107)
at com.google.inject.Guice.createInjector(Guice.java:96)
at com.google.inject.Guice.createInjector(Guice.java:73)
at com.google.inject.Guice.createInjector(Guice.java:62)
at com.datastax.bdp.ioc.DseInjector.get(DseInjector.java:36)
at com.datastax.bdp.DseModule.main(DseModule.java:96)
Caused by: org.apache.cassandra.exceptions.ConfigurationException: commitlog directory '/var/lib/cassandra/commitlog' or, if it does not already exist, an existing parent directory of it, is not readable and writable for the DSE. Check file system and configuration.
at org.apache.cassandra.config.DatabaseDescriptor.resolveAndCheckDirectory(DatabaseDescriptor.java:1033)
at org.apache.cassandra.config.DatabaseDescriptor.applySimpleConfig(DatabaseDescriptor.java:429)
at org.apache.cassandra.config.DatabaseDescriptor.applyAll(DatabaseDescriptor.java:293)
at org.apache.cassandra.config.DatabaseDescriptor.daemonInitialization(DatabaseDescriptor.java:127)
at com.datastax.bdp.DseCoreModule.(DseCoreModule.java:82)
at com.datastax.bdp.DseModule.getRequiredModules(DseModule.java:150)
at com.datastax.bdp.server.AbstractDseModule.configure(AbstractDseModule.java:27)
at com.datastax.bdp.DseModule.configure(DseModule.java:82)
at com.google.inject.AbstractModule.configure(AbstractModule.java:62)
at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:340)
at com.google.inject.spi.Elements.getElements(Elements.java:110)
at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:138)
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:104)
... 5 common frames omitted

如果有人有任何建议,我将非常感谢任何想法。

从错误日志输出中,我认为您的Docker容器没有写入/var/lib/cassandra/commitlog目录的权限。

如果我的猜测是真的,那么装载的卷使用的文件系统需要root用户权限才能进行写入。如果是这样,您可以尝试将已装入的卷更改为只需要非root权限的目录,例如/home/your_user/

最新更新