J'ai tiré une image Docker:
$ docker pull ghost
Et exécuter un conteneur de l'image:
$ docker run --name test-ghost -p 8080:2368 -d ghost
7d984e974f6a75fe18b3d397b5c8f0a428928a2be9df83f0d61a679aa5f537fc
Ma compréhension est que le -p
Le commutateur mappera un port de l'hôte (8080) à un port à l'intérieur de Docker (2368), de sorte que je puisse frapper le serveur Web exécutant dans Docker, à partir de l'extérieur Docker, c'est-à-dire de mon hôte.
Cependant, lorsque j'essaie de naviguer sur l'une des adresses suivantes de Chrome, de mon hôte:
http://localhost:8080/
http://0.0.0.0:8080/
http://127.0.0.1:8080/
Je reçois l'erreur suivante:
This webpage is not available
ERR_CONNECTION_REFUSED
Cela semble être un problème de connectivité, plutôt qu'un problème à l'intérieur du conteneur, comme lorsque j'inspecte les processus d'exécution à l'intérieur du conteneur, il apparaît que Nodejs est en cours d'exécution:
$ docker top test-ghost
UID PID PPID ... CMD
docker 4290 1028 ... npm
docker 4324 4290 ... sh -c node index
docker 4325 4324 ... node index
Mais il semble que rien n'écoute sur le port 8080:
$ Sudo lsof -n -i4TCP:8080 | grep LISTEN
$
J'ai aussi vérifié et mon pare-feu Macos est éteint.
Je ne m'attends pas à une solution complète ici, car je suis au courant des informations que j'ai données sont minimes.
Ce que je me demande, c'est, comment allumera-t-on pour résoudre un tel problème?
Il semble que le port Docker soit inaccessible.
Existe-t-il une façon de découvrir pourquoi la cartographie du port n'a pas fonctionné? Ou quels ports sont être exposé par Docker? Peut-être que je cartographier le mauvais port interne?
Ou y a-t-il d'autres suggestions générales sur ce que je ferais peut-être mal ici?
Enfin compris comment faire de ce travail!
Je rencontre Docker sur MacOS et en utilisant 'Docker QuickStart Terminal'.
S'avère, naviguant sur 'localhost', "127.0.0.1", etc., était faux, car il ressemble à Docker installe son propre hôte:
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com
Quand j'utilise 192.168.99.100
, donné ci-dessus, tout fonctionne bien.
Pour connaître l'adresse IP du conteneur d'exécution, vous pouvez utiliser:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' myContainerID
Si vous exécutez Docker avec docker-machine
Utilisez la commande suivante pour obtenir l'adresse IP (en supposant que default
est votre nom):
docker-machine ip default
Commencé à jouer avec Docker et c'est le premier problème/problème que j'ai rencontré.
On dirait que Docker vous permet de spécifier si vous utilisez des ports dans différents modes tels que - hôte, pont (par défaut)
Dans le mode Bridge Mode Docker vous indique un message une fois que vous déployez Ghost - votre blog est maintenant disponible sur http: // localhost: 2368 / mais visitant cette URL affiche la connexion refusée.
pour résoudre ce problème, vous devez visiter les paramètres d'instance dans Kitematic (plus facile, puis à l'aide de la console). Aller à l'onglet HostName/Ports. Créez un mappage comme indiqué dans l'image du port Docker vers le port hôte et le bingo. Visitez maintenant l'URL à nouveau et tout fonctionne comme prévu.