web-dev-qa-db-ja.com

Dockerポート転送が機能しない

マシンのDockerコンテナーにローカルの別のマシンにアクセスするためのDockerコンテナーをセットアップしました。

コマンドの下にコンテナを作成します。

    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

コンテナの詳細を作成した後:

        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

ネットワークの詳細:

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

mymachine(hostmachine)でdocker ipaddr(172.11.0.10)またはhostname(www.myhost.net)にアクセスすると、機能します

しかし、Portでアクセスすると機能しません:hostmachine ip:192.168.1.1

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

しかし、私の7000ポートはホストマシンでリッスンしています:

        # 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

更新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

コンテナを別のマシンにアクセスできない理由を教えてください。この問題を解決する方法

11
Rajkumar .E

私はこの投稿を見つけましたが、別の問題があり、次のアドバイスが誰かを助けることができると確信しています:

Docker内のapp127.0.0.1アドレスではなく.0.0.にバインドして、Dockerがコンテナー内のアプリに到達できるようにします。

19
DenisKolodin

ホストのポート7000はコンテナーのポート8000にリダイレクトしていますが、コンテナーのそのポートでリッスンしているものはありますか?

docker runコマンドは少し奇妙です:-itは、ターミナルを接続した状態でコンテナをインタラクティブに実行するためのものです。 -dは、バックグラウンドで分離して実行するためのものです。最後のbashは、イメージが起動コマンドとして構成するものをすべて上書きするため、ポート8000でリッスンしているものは何もないと思います。

これで最も簡単なNGINXコンテナを実行してみてください:

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

次に、ホームページにアクセスできることを確認します。

curl http://localhost:8081

それが機能している場合は、イメージの実行方法を確認します。

16
Elton Stoneman

これは、Docker for Macを使用して私に起こっていました。 Dockerアイコンをクリックすると、Restartがうまくいきました。

1
Parris Varney

部分的な回答:

今、私はこの問題を部分的に解決しましたが、bashなしで試してコンテナを作成し、私のportを3000(-p 3000:80)に変更しました。

コマンドの前:

     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

コマンドの後:

    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

そして、

bin/bashでコンテナを実行します

  docker exec -it containerName bin/bash

今、ローカルで接続された別のマシンで動作します。

 hostmachineip:3000 


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

(docker-composeで管理されたdockerインスタンスのセットで)この問題が発生したとき、docker-composeであるネットワークを削除すると問題が解決することがわかりました。

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