Il semble que les options liées à docker soient disponibles à partir de la version 0.9.37
de digdag.
Note de publication: https://docs.digdag.io/releases/release-0.9.37.html?highlight=run_options
RP applicable: https://github.com/treasure-data/digdag/pull/1025
Citant le PR, il semble que vous pouvez définir comme suit.
_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"]
Voici run_options: [" -v "," / tmp: / tmp "]
, mais je me suis demandé si cela pouvait être quelque chose comme run_options: [" -v / tmp: / tmp "]
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.
Je n'ai pas pu le faire car j'ai eu une erreur (la même chose est vraie pour build_options
.)
Vous pouvez afficher le journal de débogage avec digdag run -l debug
.
--Commandes à exécuter lorsque 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 ..Abréviation
--Commandes à exécuter lorsque 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 ..Abréviation
Les commandes docker
affichées dans le journal DEBUG sont ** exactement les mêmes **, et aucune ne semble être un problème de commande.
Vous pouvez l'exécuter en copiant uniquement la commande et en l'exécutant dans le terminal local.
Je n'obtiens pas d'erreur comme docker: réponse d'erreur du démon
ci-dessus.
run_options
est cette partie ʻAddAll est ajouté à ʻImmutableList
déclaré comme command
.
Cette variable command
est finalement transmise à ProcessBuilder
commeProcessBuilder docker = new ProcessBuilder (command.build ());
.
ProcessBuilder
ne connecte pas les commandes en une seule avant d'exécuter le processus, c'est command.toArray (new String [command.size ()]);
, donc run_options: ["-v / tmp: Si vous le définissez comme / tmp "]
, il sera entré comme une seule commande ..?
En d'autres termes, ** en termes d'image **
--Commandes à exécuter lorsque run_options: [" -v "," / tmp: / tmp "]
"docker" "run" "-v" "/tmp:/tmp" "nannka-image:0.1"
--Commandes à exécuter lorsque run_options: [" -v / tmp: / tmp "]
"docker" "run" "-v /tmp:/tmp" "nannka-image:0.1"
docker: Réponse d'erreur du démon
se produira.Dans le journal DEBUG,
logger.debug("Running in docker: {} {}", command.build().stream().collect(Collectors.joining(" ")), imageName);
Il semblait qu'il n'y avait pas de problème avec run_options: [" -v / tmp: / tmp "]
, mais il était en fait exécuté par ProcessBuilder
, donc il y avait un problème.
C'est comme, "C'est vrai. C'est pourquoi c'est un arrangement."
Si vous trouvez quelque chose qui ne va pas, je vous serais reconnaissant si vous pouviez le signaler.
Recommended Posts