【问题标题】:How to enable port bindings on rootless containers?如何在无根容器上启用端口绑定?
【发布时间】:2019-10-30 15:39:50
【问题描述】:

我有一个在 Ec-2 实例上运行的烧瓶应用程序。我可以使用 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 对烧瓶应用程序进行 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 容器中运行的烧瓶服务?

【问题讨论】:

  • 通过谷歌搜索错误消息,您似乎实际上并没有 Docker,而是某种称为 Podman 的替代方案,以及一个稍微过时的版本。

标签: docker dockerfile podman


【解决方案1】:

我怀疑你机器上运行 docker 命令的用户是非 root 用户。

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

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

试试这个,然后告诉我。

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

【讨论】:

    【解决方案2】:

    在构建 docker 镜像和运行 docker 容器时使用 sudo 解决了这个问题。 sudo 帮助运行非 root 容器

    【讨论】:

    • sudo 以 root 身份运行您的命令。这违背了非根或无根容器的定义。
    猜你喜欢
    • 2022-01-02
    • 1970-01-01
    • 2022-06-30
    • 2013-05-26
    • 2015-05-11
    • 1970-01-01
    • 2019-01-09
    • 2017-12-02
    • 2018-12-09
    相关资源
    最近更新 更多