J'utilise une interface graphique tierce (package Synology Docker) pour configurer un conteneur Docker. Cependant, sa limitation me oblige à exécuter le conteneur à partir de la ligne de commande. (Je veux mapper une autre adresse IP d'hôte pour lier le port)
Maintenant, comme il y a beaucoup de paramètres déjà définis, je voudrais récupérer la commande d'exécution originale qui démarre ce conteneur, puis je peux changer le port de mappage de port en un nouveau. par exemple. " docker run -p 80:8080 gitlab
"
Je ne trouve pas le moyen de le faire, utilisez l'événement "docker inspect", aucune information de ce type n'est fournie.
Veuillez fournir quelques conseils pour résoudre ce problème.
Réponses:
Il existe un référentiel github qui tente de rétroconcevoir la commande d'exécution de docker, mais ce n'est pas parfait actuellement, la version l'est
0.1.2
. Vous devriez le suivre pour la mise à jour. Peut-être qu'un jour vous pourrez l'utiliser pour obtenir une commande d'exécution correcte.Dépôt Github: runlike
Mises à jour:
Exécutez sans installer (merci @tilo)
ou définir un alias
la source
docker run -v /var/run/docker.sock:/var/run/docker.sock \ assaflavie/runlike YOUR-CONTAINER
Utilisez docker inspect :
Vous pouvez analyser cela par programme avec jq :
la source
docker inspect <CONTAINER> | jq ".[0].Config.Cmd"
"Cmd": null,
Peut-être que cela ne fonctionne que si le conteneur n'a pas été démarré automatiquement par le démon docker?J'ai écrit un simple outil CLI basé sur un nœud pour générer une
docker run
commande à partir d'un conteneur existant.https://www.npmjs.com/package/rekcod
Voici un exemple:
Gère également les liens et les volumes montés et autres choses.
Pas très robuste pour le moment, mais gère plus que certaines des autres choses mentionnées, et c'était plus ce que je recherchais.
EDIT: En une seule commande, sans installer de logiciel:
la source
Une alternative plus simple (?) Consiste à exécuter ce modèle d'inspection de docker , qui utilise les capacités de création de modèles Go intégrées pour générer un
docker run
commande compatible. Le modèle ne couvre que les options de ligne de commande les plus courantes, mais il peut facilement être étendu.Cette solution n'a aucune dépendance vis-à-vis d'autres outils, à l'exception de docker lui-même.
la source
Utilisez la commande suivante pour obtenir les arguments de tous les conteneurs docker inspect -f "{{.Name}} {{.Path}} {{.Args}}" $ (docker ps -a -q)
la source
Actuellement, il semble que nous devions aller «inspecter docker», puis recréer manuellement la commande d'exécution.
J'ai trouvé quelqu'un essayant d'écrire un script bash pour faire ceci: https://gist.github.com/miracle2k/c85b7b077fdb8d54bc89
mais il est incomplet et dépend de jq.
la source
Ce qui pourrait être une option plus simple (robuste) serait d'utiliser quelque chose comme bash-preexec pour capturer les commandes qui commencent par "docker run". Vous pouvez ensuite stocker ces commandes quelque part et les récupérer plus tard.
Par exemple, vous pouvez ajouter quelque chose comme ceci dans votre profil bash:
Ensuite, vous pouvez simplement exécuter vos affaires:
Quelles sorties:
la source
Si vous ne souhaitez rien installer dans la configuration actuelle de votre serveur Docker, vous pouvez simplement exécuter (remplacez-le
$CONTAINER_NAME
par le nom du conteneur dont vous souhaitez avoir les arguments d'exécution):(pour la
rekcod
méthode )ou
(pour la
runlike
méthode )la source
Cette commande d'exécution du docker n'est pas spécifiée dans le fichier Docker ou dans tout autre document lié au docker.
Soit vous trouvez un exemple dans la documentation associée à votre conteneur, soit vous pouvez en déduire que docker fonctionne avec (au moins pour la commande et le mappage de port) a
docker ps -a
(mais cela ne vous donnera pas le--volumes-from
options )Vérifiez aussi
/usr/syno/etc/packages/Docker-GitLab/config
Cela diffère de la configuration de gitlab elle-même, qui sur Synology est disponible dans
/usr/syno/etc/packages/Docker/synology_gitlab.config
la source
Pour inverser la commande d'exécution de docker, il existe également le package npm suivant.
https://github.com/nexdrew/rekcod
la source
Tous les fichiers docker sont ici, vous pouvez trouver cmd et les montages, par exemple,
ls -la /proc/1
juste le chatla source