[JAVA] Ich habe ein wenig digdags docker.run_options ausprobiert

digdag docker.run_options

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.)

Schauen Sie sich das DEBUG-Protokoll von digdag an

Sie können das Debug-Protokoll mit digdag run -l debug ausgeben.

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
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.

Warum dann nicht?

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 **


"docker" "run" "-v" "/tmp:/tmp" "nannka-image:0.1"

"docker" "run" "-v /tmp:/tmp" "nannka-image:0.1"

Zusammenfassung

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

Ich habe ein wenig digdags docker.run_options ausprobiert
Ich habe versucht, ein wenig mit BottomNavigationView zu spielen ①
Ich habe versucht, eine Formel in Javadoc einzubetten
Ich habe es mit Spring versucht.
Ich habe versucht, Tomcat zu setzen
Ich habe youtubeDataApi ausprobiert.
Ich habe versucht, ① umzugestalten
Ich habe FizzBuzz ausprobiert.
Ich habe JHipster 5.1 ausprobiert
[Persönliches Memo] Ich habe etwas über Modifikatoren gelernt
Java Ich habe versucht, einen einfachen Block zu brechen
Ich habe versucht, ein Personalmanagement-Tool zu entwickeln
Ich habe versucht, eine Website für das Studium von DUO3.0 zu entwickeln.
Ich habe versucht, eine Java-Methode von ABCL zu verwenden
Ich habe versucht, eine LINE-Klon-App zu erstellen
Ich habe versucht, ein Remote-Repository für Maven einzurichten
Ich habe versucht, eine Website zu entwickeln, um Ausgaben zu erfassen.
Ich habe versucht, einen Server mit Netty zu implementieren
Ich habe versucht, den Block mit Java zu brechen (1)
Ich habe versucht, Java in einem Mac-Terminal auszuführen
[Kleine Geschichte] Ich habe versucht, die Java-ArrayList etwas komfortabler zu gestalten
Ich habe versucht, eine Datenbankverbindung in der Android-Entwicklung zu verwenden
Ich habe versucht, Autoware auszuführen
Ich habe versucht, Gson zu benutzen
Ich habe sofort QUARKUS ausprobiert
Ich möchte ein kleines Symbol in Rails verwenden
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich habe versucht, TestNG zu verwenden
Ich habe versucht, Log4j2 auf einem Java EE-Server zu verwenden
Ich habe Spring Batch ausprobiert
Ich habe versucht, Galasa zu benutzen
Ich habe versucht, mit OCR eine PDF-Datei mit Java zu verarbeiten
Ich habe versucht, node-jt400 (Programme)
Ich habe versucht, node-jt400 (ausführen)
Ich habe versucht, ein Aktienchart mit Java (Jsoup) zu kratzen.
Ich habe versucht, node-jt400 (Transaktionen)
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen
Ich habe versucht, das GitHub-Repository als Bibliotheksserver zu verwenden
Ich habe versucht, TabLayout unter Android eine Trennlinie hinzuzufügen
Ich habe versucht, eine Java EE-Anwendung mit OpenShift zu modernisieren.
[Rails] Ich habe versucht, eine Mini-App mit FullCalendar zu erstellen
Ich habe JAX-RS ausprobiert und mir das Verfahren notiert
Ich habe versucht, die Umgebung nach und nach mit Docker aufzubauen
Ich habe versucht, in Java von einer Zeichenfolge in einen LocalDate-Typ zu konvertieren
Ich habe versucht, eine Webanwendung voller Fehler mit Kotlin zu implementieren
Ich habe einen RESAS-API-Client in Java erstellt
Ich habe versucht, mit Docker eine Padrino-Entwicklungsumgebung zu erstellen
Ich habe versucht, eine PDF-Datei mit Java part2 zu verarbeiten
Ich habe versucht, node-jt400 (Umgebungskonstruktion)
Ich habe DI mit Ruby versucht
Ich habe versucht, node-jt400 (IFS schreiben)
Ich habe versucht, node-jt400 (SQL Update)
Ich habe eine Chat-App erstellt.
Ich habe versucht, Azure Cloud-Init zu verwenden
Ich habe Spring State Machine ausprobiert
Ich habe Drools (Java, InputStream) ausprobiert.