Es scheint, dass Optionen für Docker ab Version 0.9.37 von digdag verfügbar sind.
Versionshinweis: https://docs.digdag.io/releases/release-0.9.37.html?highlight=run_options
Anwendbare PR: https://github.com/treasure-data/digdag/pull/1025
Aus der PR zitierend, scheint es, dass Sie wie folgt einstellen können.
_export:
docker:
image: ruby:2.5.1
build:
- apt install vim
docker: /usr/local/bin/nvidia-docker
run_options: ["-v", "/tmp:/tmp"]
build_options: ["--pull"]
Hier ist run_options: [" -v "," / tmp: / tmp "]
, aber ich habe mich gefragt, ob es so etwas wie run_options: [" -v / tmp: / tmp "]
sein könnte
docker: Error response from daemon: create /: " /" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.
Ich konnte es nicht tun, weil ich einen Fehler bekommen habe (das gleiche gilt für build_options
.)
Sie können das Debug-Protokoll mit digdag run -l debug
ausgeben.
run_options: [" -v "," / tmp: / tmp "]
2019-08-30 19:19:07 +0900 [DEBUG](0017@[0:default]+sample_wf+sample_docker_run_options) io.digdag.standards.command.DockerCommandExecutor: Running in docker: docker run -v /tmp:/tmp -i --rm -v ..Abkürzung
run_options: [" -v / tmp: / tmp "]
2019-08-30 19:20:22 +0900 [DEBUG](0017@[0:default]+sample_wf+sample_docker_run_options) io.digdag.standards.command.DockerCommandExecutor: Running in docker: docker run -v /tmp:/tmp -i --rm -v ..Abkürzung
Die im DEBUG-Protokoll angezeigten Docker-Befehle sind ** genau gleich ** und scheinen auch kein Befehlsproblem zu sein.
Sie können es ausführen, indem Sie nur den Befehl kopieren und im lokalen Terminal ausführen.
Ich erhalte keinen Fehler wie "Docker: Fehlerantwort vom Daemon" oben.
run_options
ist dieser Teil. Der deklarierte Befehl "ImmutableList" war "addAll".
Diese Variable command
wird schließlich als ProcessBuilder docker = new ProcessBuilder (command.build ());
an ProcessBuilder
übergeben.
ProcessBuilder
verbindet die Befehle nicht mit einem, bevor der Prozess ausgeführt wird, sondern command.toArray (neuer String [command.size ()]);
, also run_options: ["-v / tmp: Wenn Sie es als / tmp "]
definieren, wird es als ein Befehl eingegeben ..?
Mit anderen Worten, ** in Bezug auf das Bild **
run_options: [" -v "," / tmp: / tmp "]
"docker" "run" "-v" "/tmp:/tmp" "nannka-image:0.1"
run_options: [" -v / tmp: / tmp "]
"docker" "run" "-v /tmp:/tmp" "nannka-image:0.1"
Im DEBUG-Protokoll
logger.debug("Running in docker: {} {}", command.build().stream().collect(Collectors.joining(" ")), imageName);
Es schien, dass es kein Problem mit "run_options: [" -v / tmp: / tmp "]" gab, aber es wurde tatsächlich von "ProcessBuilder" ausgeführt, also gab es ein Problem.
Es ist wie: "Das ist richtig. Deshalb ist es ein Arrangement."
Wenn Sie etwas falsch finden, würde ich es begrüßen, wenn Sie darauf hinweisen könnten.
Recommended Posts