it-swarm.com.de

Docker-Port-Weiterleitung funktioniert nicht

Ich habe den Docker-Container eingerichtet, um auf den Docker-Container meines Computers auf einen anderen lokalen Computer zuzugreifen.

Erstellen Sie einen Container unter dem Befehl:

    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

Nach dem Erstellen eines Containers Details:

        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

Netzwerkdetails:

     "NetworkSettings": {
        "Bridge": "",
        "SandboxID": "fe357c54c816fff0f9d642037dc9a173be7f7e42a80776d006572f6a1395969e",
        "HairpinMode": false,
        "LinkLocalIPv6Address": "",
        "LinkLocalIPv6PrefixLen": 0,
        "Ports": {
            "8000/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "7000"
                }
            ]
        }

wenn ich auf docker ipaddr (172.11.0.10) oder hostname (www.myhost.net) in mymachine (hostmachine) zugreife, funktioniert es

Aber wenn ich mit Port zugreife, funktioniert das nicht: hostmachine ip: 192.168.1.1

  go to the browser  192.168.1.1:7000  hostmachine and locally connected anoter machine also.

Aber meine 7000 Port sind in Hostmachine zu hören:

        # 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

Update 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

Schlagen Sie mir vor, warum ich auf meinem Container nicht auf einen anderen Computer zugreifen kann. Beheben dieses Problems

3
Rajkumar .E

Port 7000 auf dem Host leitet zu Port 8000 im Container um, aber lauscht irgendetwas an diesem Port im Container?

Ihr docker run-Befehl ist etwas seltsam: -it dient zum interaktiven Ausführen eines Containers mit einem angeschlossenen Terminal. -d wird im Hintergrund ausgeführt. bash am Ende überschreibt, was auch immer das Image als Startbefehl konfiguriert, weshalb ich denke, dass Port 8000 nicht abgehört wird.

Versuchen Sie, den einfachsten NGINX-Container folgendermaßen auszuführen:

docker run -d -p 8081:80 nginx:Alpine

Und dann überprüfen Sie, ob Sie auf die Homepage gelangen können:

curl http://localhost:8081

Wenn das funktioniert, würde ich sehen, wie Sie Ihr Image ausführen.

14
Elton Stoneman

Teilweise Antwort:

Jetzt habe ich dieses Problem teilweise gelöst, während ich versuche, ohne bash einen Container anzulegen und meinen Port auf 3000 (-p 3000: 80) zu ändern es hat bei mir funktioniert.

Vor dem Befehl:

     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

Nach Befehl:

    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

Dann,

führe den Container mit bin/bash aus

  docker exec -it containerName bin/bash

Jetzt arbeitet lokal Connected Another machine.

 hostmachineip:3000 


I don't know docker have any port restrictions.But This solution works for me.
2
Rajkumar .E

Als ich auf dieses Problem stieß (mit einem von Docker Compose verwalteten Satz von Docker-Instanzen), stellte ich fest, dass das Löschen des von Docker Compose verwalteten Netzwerks das Problem behebt:

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
0
dsummersl