Экземпляр EC2 недоступен - соединение отклонено

Я следовал официальному руководству по докеру, чтобы создать контейнер, опубликовать его и развернуть на AWS в рой. Тем не менее, я не могу достичь своего экземпляра EC2 после его создания.

Вот шаги, которые я предпринял: Создал образ простого сервера Flask, который должен вернуть приветствие:

from flask import Flask


app = Flask(__name__)

@app.route("/")
def hello():
    return "muxik a cucc, juhuuuu"

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

Его Dockerfile также взят из руководства по докеру:

# Use an official Python runtime as a parent image
FROM python:2.7-slim

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
ADD . /app

# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

# Define environment variable
ENV NAME World

# Run app.py when the container launches
CMD ["python", "app.py"]

Я поместил это изображение в Docker Hub и создал файл docker-compose.yml, который извлекает это изображение:

version: "3"
services:
  flask_web:
    image: handris/proba
    deploy:
      replicas: 3
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "7777:80"
    networks:
      - webnet
networks:
  webnet:

Я могу запустить это с помощью 'docker-compose up' или инициализируя рой и используя команду 'docker stack deploy -c docker-compose.yml random_name'. Оба работают на моей локальной машине.

На следующем шаге я вошел в Docker Cloud и подключился к AWS и создал рой, в результате чего на экране:

Поэтому я использовал эту команду в своем терминале, и после того, как мне удалось подключиться к моему удаленному рою, я использовал ту же команду ''docker stack deploy -c docker-compose.yml random_name'с тем же файлом docker-compose.yml.

После этого в консоли aws ec2 я разрешил все входящие соединения для группы безопасности моего работника, однако не могу подключиться к своему экземпляру EC2 по его общедоступным dns или ip. Я даже не могу подключиться к нему по протоколу ssh, хотя он также должен работать, потому что я разрешил все входящие соединения (я могу подключиться к ssh в любой другой созданный мной экземпляр ec2).

Когда я проверяю общедоступный DNS экземпляра ec2, он отвечает, и в соответствии с платой экземпляров в aws экземпляры работают и проходят проверки состояния.

Я довольно новичок как в Docker Cloud, так и в AWS, поэтому я могу упустить что-то очень простое. Поэтому я хотел бы знать, что я должен сделать, чтобы это работало.

0 ответов

Другие вопросы по тегам