Расположение докеров контейнеров

Я играл с различными учебными пособиями по докеру и машине. Вот настройка докер-машины

$ 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/).

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