Назад | Перейти на главную страницу

Поиск контейнеров докеров

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

$ 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

Кажется, я не могу подключиться ни к одному из этих контейнеров, используя любой из:

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

Да, вы правы насчет контейнеров, запущенных на докер-машине, в данном случае экземпляра EC2.

Наиболее вероятная причина, по которой вы не можете подключиться к ним, - это правила брандмауэра EC2 по умолчанию. Группа безопасности по умолчанию, созданная докер-машиной на AWS EC2, разрешает доступ только к SSH, Docker и, возможно, Swarm. (видеть: https://docs.docker.com/machine/drivers/aws/#/security-group)

Порт 80 и 8080 не открыты для мира. Вам нужно будет войти в AWS и изменить группу безопасности, чтобы разрешить больше портов.

В качестве примечания, в обзоре docker ps вы можете видеть, что только 3 контейнера фактически прослушивают порты, один на 80, один на 5432 и один на 8000, у остальных нет привязки портов к хосту. Для получения дополнительной информации по этому поводу я бы посоветовал почитать о сети докеров и раскрытии портов (см. https://docs.docker.com/engine/reference/run/#/expose-incoming-ports)