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

Docker 如何在无根容器上启用端口绑定?,docker,dockerfile,podman,Docker,Dockerfile,Podman,我有一个flask应用程序在Ec-2实例上运行。我可以使用http:ip地址: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__': ap

我有一个flask应用程序在Ec-2实例上运行。我可以使用http:ip地址: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应用程序对接:

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机器人

我得到以下错误---
无根容器尚不支持端口绑定


如何解决上述问题?有没有办法从外部访问ec-2实例中Docker容器中运行的flask服务?

我怀疑运行Docker命令的计算机上的用户是非root用户

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

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

试试这个,让我知道


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

在构建docker映像和运行docker容器时使用
sudo
解决了此问题
sudo
有助于运行非根容器

通过谷歌搜索错误消息,看起来您实际上没有Docker,但是调用了某种替代方法,并且有一个稍微过时的版本。
sudo
以根用户身份运行您的命令。这与非根或无根容器的定义背道而驰。