docker запустите -v / host / path: / container / path, проблема разрешения, когда / host / path не существует - PullRequest
0 голосов
/ 29 апреля 2020

Правда в том, что даже если мы используем -u 1000 для запуска docker, если путь тома хоста не существует, путь будет создан root пользователем (который запускает docker), и если контейнер внутренним пользователем является uid: 1000, тогда запись на том будет завершена без разрешения.

В настоящее время я решаю эту проблему путем создания пути к первому тому с использованием uid: 1000.

Знаете ли вы, почему Это случилось? И есть ли у вас более официальный или лучший способ справиться с этим?

Пожалуйста, просмотрите сообщение об ошибке:

[go] Task: bash -c "docker run -e JAVA_OPTS=\"-DapiKey=$apiKey -Drate=1 -Dduration=5\" -i --rm -v `pwd`/perf/gatling:/home/gatling/gatling/user-files -v `pwd`/perf/gatling/results:/home/gatling/gatling/results -u 1000:1000 yayayahei/gatling -s defaultTest"took: 22.311sexited: 1
GATLING_HOME is set to /home/gatling/gatling
Simulation defaultTest started...
02:20:31.813 [ERROR] i.g.c.s.w.LogFileDataWriter - DataWriter failed to initialize
java.nio.file.AccessDeniedException: /home/gatling/gatling/results/****---20200429022030398
    at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
    at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:384)
    at java.nio.file.Files.createDirectory(Files.java:674)
    at java.nio.file.Files.createAndCheckIsDirectory(Files.java:781)
    at java.nio.file.Files.createDirectories(Files.java:767)
    at io.gatling.commons.util.PathHelper$RichPath$.mkdirs$extension(PathHelper.scala:48)
    at io.gatling.core.config.GatlingFiles$.simulationLogDirectory(GatlingFiles.scala:48)
    at io.gatling.core.stats.writer.BufferedFileChannelWriter$.apply(LogFileDataWriter.scala:41)
    at io.gatling.core.stats.writer.LogFileDataWriter.onInit(LogFileDataWriter.scala:297)
    at io.gatling.core.stats.writer.LogFileDataWriter.onInit(LogFileDataWriter.scala:291)
    at io.gatling.core.stats.writer.DataWriter$$anonfun$1.applyOrElse(DataWriter.scala:47)
    at io.gatling.core.stats.writer.DataWriter$$anonfun$1.applyOrElse(DataWriter.scala:43)
    at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
    at akka.actor.FSM.processEvent(FSM.scala:707)
    at akka.actor.FSM.processEvent$(FSM.scala:704)
    at io.gatling.core.stats.writer.DataWriter.processEvent(DataWriter.scala:29)
    at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:701)
    at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:695)
    at akka.actor.Actor.aroundReceive(Actor.scala:539)
    at akka.actor.Actor.aroundReceive$(Actor.scala:537)
    at io.gatling.core.akka.BaseActor.aroundReceive(BaseActor.scala:25)
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:612)
    at akka.actor.ActorCell.invoke(ActorCell.scala:581)
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268)
    at akka.dispatch.Mailbox.run(Mailbox.scala:229)
    at akka.dispatch.Mailbox.exec(Mailbox.scala:241)
    at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

1 Ответ

0 голосов
/ 29 апреля 2020

Вы пытались запустить приложение с -u root вместо -u 1000:1000? Это должно исправить проблему, если она связана с правами доступа к файлу.

Запуск от имени root не всегда является хорошим вариантом с точки зрения безопасности, но может решить вашу проблему, пока вы не выясните, как установить разрешения для файла для не root пользователь.

...