如何在无根容器上启用端口绑定?

时间:2019-06-17 04:12:57

标签: docker dockerfile podman

我有一个在Ec-2实例上运行的flask应用程序。我可以使用http:ip-address:5000从外部环境访问它,其中IP地址是我的ec-2实例的公共地址。

我的烧瓶应用程序代码:

from flask import Flask

app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def my_form_post():
    return "Hello World"

if __name__ == '__main__':
    app.run(host="my-ec2-private-address", port=5000, debug=True)

我使用以下Dockerfile来对Flask应用程序进行了docker化:

FROM python:2.7
MAINTAINER noob-reaper
COPY . /Mini
WORKDIR /Mini
RUN pip install -r requirements.txt
EXPOSE 5000
CMD python miniRobot.py

我的构建命令是: docker build -t robot . 构建成功。但是当我尝试使用以下命令运行时: docker run -p 5000:5000 robot
我收到以下错误- port bindings are not yet supported by rootless containers

如何解决以上问题?是否可以从外部访问在ec-2实例中的Docker容器中运行的flask服务?

2 个答案:

答案 0 :(得分:0)

我怀疑您正在运行docker命令的计算机上的用户是非root用户。

假设您在ec2-machine上的当前用户是user1(您可以通过运行users命令来验证)。然后运行此命令将user1添加到docker group

usermod -aG docker user1,然后尝试运行您的容器。

尝试一下,让我知道。

有关什么是无根容器的更多信息,请this

答案 1 :(得分:0)

在构建docker映像和运行docker容器时使用cooking-saladcss解决了此问题。 sudo帮助运行非根容器