Расположение докеров контейнеров
Я играл с различными учебными пособиями по докеру и машине. Вот настройка докер-машины
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
aws-sandbox * amazonec2 Running tcp://52.16.157.182:2376 v1.12.0
dev - virtualbox Running tcp://192.168.99.100:2376 v1.12.0
Я понимаю, что докер-машина - это хост, на котором может работать 1 или более докер-контейнеров. В моем случае на моем ноутбуке работает докер, а на EC2 - другой.
Тем временем я установил экземпляр EC2 по умолчанию с помощью следующей команды
eval $(docker-machine env aws-sandbox)
Кажется, это сработало, так как песочница aws помечена как ACTIVE
Теперь я попытался загрузить докер-контейнеры в докер-машину, но я не уверен, что это работает.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fd34916854bf orchestratingdocker_web "env" About an hour ago Restarting (0) 9 minutes ago 8000/tcp orchestratingdocker_web_run_2
f98b49ad026a orchestratingdocker_web "/usr/local/bin/pytho" About an hour ago Restarting (0) 23 minutes ago 8000/tcp orchestratingdocker_web_run_1
4d2322aa402e orchestratingdocker_nginx "/usr/sbin/nginx" About an hour ago Up About an hour 0.0.0.0:80->80/tcp orchestratingdocker_nginx_1
1b4386bcccf2 orchestratingdocker_web "/usr/local/bin/gunic" About an hour ago Up About an hour 8000/tcp orchestratingdocker_web_1
9190ffd622ad postgres:latest "/docker-entrypoint.s" About an hour ago Up About an hour 0.0.0.0:5432->5432/tcp orchestratingdocker_postgres_1
380d19e5c239 kitematic/hello-world-nginx "sh /start.sh" About an hour ago Up About an hour 0.0.0.0:8000->80/tcp webserver
Я не могу подключиться к любому из этих контейнеров, используя любой из:
localhost:8000
или же80
52.16.157.182:8000
или же80
192.168.99.100:8000
или же80
Контейнеры Docker находятся внутри докер-машины, как я полагаю? Если да, как я могу перечислить, что работает на каком компьютере, и почему я не могу получить доступ к работающим веб-серверам?
1 ответ
Да, вы правы насчет контейнеров, работающих на докер-машине, в данном случае это экземпляр EC2.
Наиболее вероятная причина, по которой вы не можете подключиться к ним, связана с правилами брандмауэра EC2 по умолчанию. Группа безопасности по умолчанию, созданная docker-machine в AWS EC2, разрешает доступ только к SSH, Docker и, возможно, Swarm. (см.: https://docs.docker.com/machine/drivers/aws/)
Порт 80 и 8080 не открыты для мира. Вам нужно будет войти в AWS и изменить группу безопасности, чтобы разрешить больше портов.
Как примечание, в обзоре Docker PS вы можете видеть, что только 3 контейнера на самом деле прослушивают порты, один на 80
, один на 5432
и один на 8000
другие не имеют привязок портов к хосту. Для получения дополнительной информации по этому вопросу, я бы рекомендовал ознакомиться с сетью док-станции и разоблачением портов (см. https://docs.docker.com/engine/reference/run/).