

`docker run -it -p 8080:8080 ubuntu:20.04`を実行した後  
コンテナ内で

[code]

    apt update
    apt install python3 python3-pip curl nano
    pip install flask
    
[/code]

で環境構築した後に

[code]

    # test.py
    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route('/')
    def hello():
        return "hello"
    
    if __name__ == "__main__":
        app.run(host="0.0.0.0", port=8080, debug=True)
    
[/code]

`python3 test.py`を実行しています。

コンテナ内で  
`curl localhost:8080`や`curl 172.17.0.2:8080`を実行すると"hello"と正常に動作するのですが、  
**ホストpcから`curl localhost:8080`や`curl 172.17.0.2:8080`を実行しても  
`curl: (52) Empty reply from server`と正常に動作しません。**

どのようにすればホストからアクセスできるようになるでしょうか？

以下の環境でdockerを利用しています。

  * ubuntu21.04
  * Docker version 20.10.8, build 3967b7d

* * *
[code]

    $ docker ps
    CONTAINER ID   IMAGE          COMMAND   CREATED       STATUS         PORTS                                       NAMES
    f370c9214bf8   ubuntu:20.04   "bash"    2 hours ago   Up 6 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   jovial_elgamal
    
    $ systemctl status docker
    ● docker.service - Docker Application Container Engine
         Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
         Active: active (running) since Sun 2021-09-12 19:26:33 JST; 6 days ago
    TriggeredBy: ● docker.socket
           Docs: https://docs.docker.com
       Main PID: 3205 (dockerd)
          Tasks: 37
         Memory: 146.9M
         CGroup: /system.slice/docker.service
                 ├─   3205 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
                 ├─3029807 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8080 -container-ip 172.17.0.2 -container-port 8080
                 └─3029813 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8080 -container-ip 172.17.0.2 -container-port 8080
    
    
[/code]

* * *

ちなみにdockerの環境は以下のようにして構築しました

[code]

    sudo apt update
    sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt update
    sudo apt install docker-ce docker-ce-cli containerd.io
    
[/code]


CC BY-SA 4.0
2021-09-18T13:36:12.387
82565
2021-09-18T23:51:00.657
2021-09-18T23:51:00.657
48272
48272
question
ubuntu docker flask
dockerでport forwardingがうまくいかない