如何在无根容器上启用端口绑定?
How to enable port bindings on rootless containers?
我在 Ec-2 实例上有一个 Flask 应用程序 运行ning。我可以使用 http:ip-address:5000
从外部环境访问它,其中 IP 地址是我的 ec-2 实例的 public 地址。
我的烧瓶应用代码:
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 容器中的烧瓶服务 运行ning?
我怀疑您正在使用 运行ning docker 命令的机器上的用户是 non-root 用户。
假设您当前在 ec2-machine 上的用户是 user1
(您可以通过 运行ning users
命令验证)。然后 运行 这个命令将 user1 添加到 docker group
.
usermod -aG docker user1
然后尝试 运行 你的容器。
试试这个然后告诉我。
有关什么是无根容器的更多信息,请查看 this。
在构建 docker 图像和 运行 宁 docker 容器时使用 sudo
解决了这个问题。 sudo
有助于 运行 non-root 个容器
我在 Ec-2 实例上有一个 Flask 应用程序 运行ning。我可以使用 http:ip-address:5000
从外部环境访问它,其中 IP 地址是我的 ec-2 实例的 public 地址。
我的烧瓶应用代码:
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 容器中的烧瓶服务 运行ning?
我怀疑您正在使用 运行ning docker 命令的机器上的用户是 non-root 用户。
假设您当前在 ec2-machine 上的用户是 user1
(您可以通过 运行ning users
命令验证)。然后 运行 这个命令将 user1 添加到 docker group
.
usermod -aG docker user1
然后尝试 运行 你的容器。
试试这个然后告诉我。
有关什么是无根容器的更多信息,请查看 this。
在构建 docker 图像和 运行 宁 docker 容器时使用 sudo
解决了这个问题。 sudo
有助于 运行 non-root 个容器