Экземпляр 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, поэтому я могу упустить что-то очень простое. Поэтому я хотел бы знать, что я должен сделать, чтобы это работало.