Проблемы с подключением к моему приложению Docker через виртуальный IP - PullRequest
0 голосов
/ 19 июня 2019

Решено внизу

Но почему я должен добавить: 4000?


Я следую Руководству по началу работы с докером, https://docs.docker.com/get-started/part4/

Я вполне уверен, что все сделал правильно, но мне интересно, почему я не могу подключиться, чтобы просмотреть приложение после его развертывания.

Я установил свой env для моей виртуальной машины myvm1 для ссылки на следующие команды.

Док-контейнер ls -a

CONTAINER ID        IMAGE                          COMMAND             CREATED             STATUS              PORTS               NAMES
099e16249604        beresj/getting-started:part2   "python app.py"     12 seconds ago      Up 12 seconds       80/tcp              getstartedlab_web.5.y0e2k1r1ev47u24e5iufkyn3i
6f9a24b343a7        beresj/getting-started:part2   "python app.py"     12 seconds ago      Up 12 seconds       80/tcp              getstartedlab_web.3.1pls3osj3uhsb5dyqtt4ts8j6

изображение докера ls -a

REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
beresj/getting-started   <none>              e290b6208c21        22 hours ago        131MB

стек док-станции ls

NAME                SERVICES            ORCHESTRATOR
getstartedlab       1                   Swarm

докер-автомат ls

NAME    ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER     ERRORS
myvm1   *        virtualbox   Running   tcp://192.168.99.100:2376           v18.09.6   
myvm2   -        virtualbox   Running   tcp://192.168.99.101:2376           v18.09.6  

стек докера ps getstartedlab

ID                  NAME                  IMAGE                          NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
vkxx79fh3h85        getstartedlab_web.1   beresj/getting-started:part2   myvm2               Running             Running 3 minutes ago                       
qexbaa3wz0pd        getstartedlab_web.2   beresj/getting-started:part2   myvm2               Running             Running 3 minutes ago                       
1pls3osj3uhs        getstartedlab_web.3   beresj/getting-started:part2   myvm1               Running             Running 3 minutes ago                       
ucuwen1jrncf        getstartedlab_web.4   beresj/getting-started:part2   myvm2               Running             Running 3 minutes ago                       
y0e2k1r1ev47        getstartedlab_web.5   beresj/getting-started:part2   myvm1               Running             Running 3 minutes ago     

curl 192.168.99.100

curl: (7) Failed to connect to 192.168.99.100 port 80: Connection refused

информация о докере

Containers: 2
 Running: 2
 Paused: 0
 Stopped: 0
Images: 1
Server Version: 18.09.6
...
Swarm: active
 NodeID: 0p9qrax9h3by0fupat8ufkfbq
 Is Manager: true
 ClusterID: 7vnqdk85n8jx6fqck9k7dv2ka
 Managers: 1
 Nodes: 2
 Default Address Pool: 10.0.0.0/8  
...
Node Address: 192.168.99.100
 Manager Addresses:
  192.168.99.100:2377
...
Kernel Version: 4.14.116-boot2docker
Operating System: Boot2Docker 18.09.6 (TCL 8.2.1)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 989.4MiB
Name: myvm1

Я бы ожидал увидеть то, что смог увидеть, когда просто запустил его на своей локальной машине, а не на виртуальной машине в рое (думаю, у меня правильный лингво?)

Не уверен, как проверить открытые порты.
Опять же: это работает, если я просто удаляю стек, сбрасываю среду докер-машины и просто запускаю:
стек докера развертывание -c docker-compose.yml getstartedlab
не на вм.

Заранее спасибо. (Кроме того, я новичок , поэтому руководство по началу работы , поэтому я ценю любую помощь)

Редактировать

Это работает, если я добавляю: 4000 к IP виртуальной машины в моем URL, например: 192.168.99.100:4000 или 192.168.99.101:4000. Он показывает два идентификатора контейнера, перечисленных в «docker container ls» для myvm1, а остальные три - из myvm2. Может кто-нибудь сказать мне, почему я должен добавить 4000? Это потому, что у меня есть порты: «4000: 80» в моем docker-compose.yml?

1 Ответ

1 голос
/ 19 июня 2019

Не уверен, поможет ли это, но если вы используете docker inspect <instance_id_here>, вы можете увидеть, какие порты открыты.

Открытые порты не являются открытыми портами. Вам нужно будет привязать порт хоста к порту контейнера в docker-compose.yml, чтобы он был открыт.

...