web-dev-qa-db-fra.com

Erreur «Docker: format de publication non valide» lors de l'exécution du conteneur Docker Graphviz sur Mac Os

Je suis complètement nouveau dans Docker et je l'utilise pour la première fois.

J'ai installé Docker Desktop pour Mac OS et exécuté avec succès le conteneur "Hello-world". J'essaie maintenant d'exécuter ce 'omerio/graphviz-server' de https://hub.docker.com/r/omerio/graphviz-server (ce pour quoi je veux vraiment Docker) et bien que la commande 'docker pull omerio/graphviz-server' se termine avec succès:

devops$ docker pull omerio/graphviz-server
Using default tag: latest
latest: Pulling from omerio/graphviz-server
863735b9fd15: Pull complete 
4fbaa2f403df: Pull complete 
44be94a95984: Pull complete 
a3ed95caeb02: Pull complete 
ae092b5d3a08: Pull complete 
d0edb8269c6a: Pull complete 
Digest: sha256:02cd3e2355526a927e951a0e24d63231a79b192d4716e82999ff80e0893c4adc
Status: Downloaded newer image for omerio/graphviz-server:latest

la commande pour démarrer le conteneur (donnée sur https://hub.docker.com/r/omerio/graphviz-server ): 'docker run -d -p : omerio/graphviz-server' me donne le message d'erreur:

devops$ docker run -d -p : omerio/graphviz-server
docker: invalid publish opts format (should be name=value but got ':').
See 'docker run --help'.

La recherche de ce message d'erreur ne renvoie aucune information. Je constate que le conteneur en question a été mis à jour pour la dernière fois il y a plus de 3 ans - pourrait-il s'agir d'un ancien format que Docker ne prend plus en charge?

4
Steve Ives

L'option -p De la commande docker run Lie les ports entre l'hôte et le conteneur (voir docs ), et son utilisation est la plupart du temps la suivante:

docker run <other options> \
    -p <port on the Host>:<port in the container> \
    <my_image> <args>

Quant à votre exemple: il semble que l'exécution de l'image nécessite un argument (le port dans le conteneur). Choisissons par exemple 8080 (Cela signifie que le port 8080 Sera utilisé par l'application à l'intérieur du conteneur).

Si vous souhaitez y accéder directement sur votre hôte (via localhost), vous devez lier le port 8080 (Dans le conteneur, le port que nous avons choisi précédemment) à n'importe quel port disponible sur votre hôte (disons dites 8081), comme ceci:

docker run \
    -p 8081:8080 \
    omerio/graphviz-server 8080

Vous devriez maintenant pouvoir accéder à l'application (port 8080 De l'application en cours d'exécution dans le conteneur) depuis votre hôte via localhost:8081.

1
norbjd