Как включить привязку портов в контейнерах без root? - PullRequest
0 голосов
/ 17 июня 2019

У меня есть приложение фляги, работающее на экземпляре 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:

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

Как решить вышеуказанную проблему? Есть ли способ доступа к службе фляги, работающей в контейнере Docker, в экземпляре ec-2 извне?

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Использование sudo при создании образов Docker и запуске контейнера Docker решило эту проблему. sudo помогает запускать некорневые контейнеры

0 голосов
/ 17 июня 2019

Я подозреваю, что пользователь на вашем компьютере, с помощью которого вы запускаете команду docker, не является пользователем root.

Предположим, ваш текущий пользователь на ec2-машине - user1 (Вы можете проверить это, запустивusers команда).Затем выполните эту команду, чтобы добавить user1 к docker group.

usermod -aG docker user1, а затем попробуйте запустить свой контейнер.

Попробуйте и дайте мне знать.

Длябольше информации о том, что такое проверка без корня this out.

...