Utilizo una GUI de terceros (paquete de Synology Docker) para configurar un contenedor de Docker. Sin embargo, su limitación me obliga a ejecutar el contenedor desde la línea de comandos. (Quiero mapear otra IP de host para vincular el puerto)
Ahora, dado que hay muchas configuraciones que ya están hechas, me gustaría recuperar el comando de ejecución original que inicia este contenedor, luego puedo cambiar el puerto de mapeo de puertos a uno nuevo. p.ej. " docker run -p 80:8080 gitlab
"
No puedo encontrar la manera de hacerlo, uso del evento "Docker inspeccionar", no se proporciona dicha información.
Proporcione algunos consejos para resolver este problema.
Respuestas:
Hay un repositorio de github que intenta realizar la ingeniería inversa del comando docker run, pero actualmente no es perfecto, la versión sí lo es
0.1.2
. Debe seguirlo para actualizar. Tal vez algún día pueda usarlo para obtener el comando de ejecución correcto con él.Repositorio de Github: runlike
Actualizaciones:
Ejecutar sin instalar (Gracias @tilo)
o establecer un alias
fuente
docker run -v /var/run/docker.sock:/var/run/docker.sock \ assaflavie/runlike YOUR-CONTAINER
Utilice Docker Inspect :
Puede analizar esto programáticamente con jq :
fuente
docker inspect <CONTAINER> | jq ".[0].Config.Cmd"
"Cmd": null,
¿Quizás esto solo funciona si el contenedor no se inició automáticamente como el demonio de la ventana acoplable?Escribí una herramienta CLI simple basada en Node para generar un
docker run
comando desde un contenedor existente.https://www.npmjs.com/package/rekcod
He aquí un ejemplo:
También maneja enlaces y volúmenes montados y otras cosas.
No es muy robusto en este momento, pero maneja más que algunas de las otras cosas mencionadas, y era más de lo que estaba buscando.
EDITAR: En un solo comando, sin instalar ningún software:
fuente
Una alternativa más simple (?) Es ejecutar esta plantilla de inspección de la ventana acoplable , que utiliza las capacidades integradas de plantillas de Go para generar un
docker run
comando compatible. La plantilla solo cubre las opciones de línea de comandos más habituales, pero se puede ampliar fácilmente.Esta solución no depende de otras herramientas, excepto la propia ventana acoplable.
fuente
Utilice el siguiente comando para obtener los argumentos de todos los contenedores. Docker inspect -f "{{.Name}} {{.Path}} {{.Args}}" $ (docker ps -a -q)
fuente
Actualmente, parece que tenemos que ir a 'inspección de la ventana acoplable' y luego volver a crear manualmente el comando de ejecución.
He encontrado a alguien intentando escribir un script bash para hacer esto: https://gist.github.com/miracle2k/c85b7b077fdb8d54bc89
pero está incompleto y depende de jq.
fuente
Lo que podría ser una opción más simple (robusta) sería usar algo como bash-preexec para capturar comandos que comienzan con "docker run". Luego, puede almacenar estos comandos en algún lugar y recuperarlos más tarde.
Por ejemplo, podría agregar algo como esto en su perfil de bash:
Entonces podrías ejecutar tus cosas:
Qué salidas:
fuente
Si no desea instalar nada en la configuración actual del servidor Docker en ejecución, simplemente puede ejecutar (reemplazar
$CONTAINER_NAME
con el nombre del contenedor que desea tener los argumentos de ejecución):(para el
rekcod
método )o
(para el
runlike
método )fuente
Ese comando de ejecución de la ventana acoplable no se especifica en el Dockerfile ni en ningún otro documento relacionado con la ventana acoplable.
O encuentra un ejemplo en la documentación asociada a su contenedor, o puede inferir que la ventana acoplable se ejecuta con (al menos para el comando y el mapeo de puertos) a
docker ps -a
(pero eso no le dará el posible--volumes-from
opciones )Compruebe también
/usr/syno/etc/packages/Docker-GitLab/config
Esto difiere de la propia configuración de gitlab, que en Synology está disponible en
/usr/syno/etc/packages/Docker/synology_gitlab.config
fuente
Para revertir el comando docker run, también existe el siguiente paquete npm.
https://github.com/nexdrew/rekcod
fuente
Todos los archivos de la ventana acoplable están aquí, puede encontrar cmd y montajes, por ejemplo,
ls -la /proc/1
simplemente cat itfuente