J'ai configuré le conteneur Docker pour accéder à mon conteneur Docker de machine à une autre machine en local.
Créez un conteneur sous la commande:
docker run -it -d --name containerName -h www.myhost.net -v /var/www/html -p 7000:8000 --net mynetwork --ip 172.11.0.10 --privileged myimagename bash
Après avoir créé les détails d'un conteneur:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e1e5e9b74b4 myimgaename "bash" 21 minutes ago Up 6 minutes 0.0.0.0:7000->8000/tcp containername
Détails NetWork:
"NetworkSettings": {
"Bridge": "",
"SandboxID": "fe357c54c816fff0f9d642037dc9a173be7f7e42a80776d006572f6a1395969e",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"8000/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "7000"
}
]
}
si j'accède à docker ipaddr (172.11.0.10) ou au nom d'hôte (www.myhost.net) dans mymachine (hostmachine), cela fonctionne
Mais si j'accède avec Port ne fonctionne pas: hostmachine ip: 192.168.1.1
go to the browser 192.168.1.1:7000 hostmachine and locally connected anoter machine also.
Mais mes ports 7000 sont à l'écoute dans la machine hôte:
# ps aux | grep 7000
root 10437 0.0 0.2 194792 24572 pts/0 Sl+ 12:33 0:00 docker-proxy -proto tcp -Host-ip 0.0.0.0 -Host-port 7000 -container-ip 172.11.0.10 -container-port 8000
root 10941 0.0 0.0 118492 2324 pts/3 R+ 12:44 0:00 grep --color=auto 7000
mise à jour 1:
$ docker version
Client:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:39:21 2016
OS/Arch: linux/AMD64
Server:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:39:21 2016
OS/Arch: linux/AMD64
Suggérez-moi pourquoi je ne peux pas accéder à mon conteneur à une autre machine. Comment résoudre ce problème
J'ai trouvé ce message, mais j'ai eu un autre problème et je suis sûr que les conseils suivants peuvent aider quelqu'un:
Liez votre app dans Docker à .0.0., pas à 127.0.0.1 adresse pour permettre à Docker d'atteindre l'application dans le conteneur.
Port 7000
sur l'hôte redirige vers le port 8000
dans le conteneur, mais est-ce que quelque chose écoute sur ce port dans le conteneur?
Votre docker run
la commande est un peu bizarre: -it
permet d'exécuter un conteneur de manière interactive avec un terminal connecté; -d
est utilisé pour exécuter détaché, en arrière-plan; bash
à la fin remplace tout ce que l'image configure comme commande de démarrage, c'est pourquoi je pense qu'il n'y a rien à écouter sur le port 8000
.
Essayez d'exécuter le conteneur NGINX le plus simple avec ceci:
docker run -d -p 8081:80 nginx:Alpine
Et puis vérifiez que vous pouvez accéder à la page d'accueil:
curl http://localhost:8081
Si cela fonctionne, je regarderai comment vous exécutez votre image.
Cela m'arrivait avec Docker pour Mac. Cliquer sur l'icône Docker, puis sur Restart
a fait l'affaire.
Réponse partielle:
Maintenant, j'ai résolu ce problème partiellement, alors que j'essaye sans bash dans créer un conteneur et changer mon port à 3000 (-p 3000: 80) cela a fonctionné pour moi.
Avant la commande:
docker run -it -d --name containerName -h www.myhost.net -v /var/www/html -p 3000:80 --net mynetwork --ip 172.11.0.10 --privileged myimagename bash
Après commande:
docker run -it -d --name containerName -h www.myhost.net -v /var/www/html -p 3000:80 --net mynetwork --ip 172.11.0.10 --privileged myimagename
Ensuite,
exécuter le conteneur avec bin/bash
docker exec -it containerName bin/bash
Maintenant, fonctionne localement une autre machine connectée.
hostmachineip:3000
I don't know docker have any port restrictions.But This solution works for me.
Lorsque j'ai rencontré ce problème (avec un ensemble géré d'instances de docker-composer), j'ai constaté que la suppression du réseau qui docker-compose a résolu le problème:
docker-compose stop
# find the network related to my docker-compose setup
docker network ls
docker network rm NETWORKNAME
# let docker-compose recreate the network:
docker-compose up -d