У меня есть 2 контейнера:Docker контейнер не может достичь другой контейнер, используя имя хоста
docker run -d -p 9000:9000 --name="my-php" php-fpm:5.4
docker run -d --name="nginx" -p 80:80 -link my-php:web nginx
как работают очень хорошо. Внутри контейнера nginx я могу добраться до приложения, используя
curl http://myapp.dev
а также от главной машины, а также.
То, что я пытаюсь сделать, это тот же самый запрос локон, но из контейнера мой, PHP, используя тот же «myapp.dev» имя хоста, Howerver ...
локон: (7) Не удалось подключиться к порту myapp.dev 80: Соединение отклонено
Я могу использовать ip контейнера вместо этого, но мне это не подходит.
Несмотря на то, что я не могу дотянуться, используя завиток, я все еще могу без проблем называть другой контейнер.
на Nginx контейнере:
[email protected]:/# env
WEB_PORT_9000_TCP_PROTO=tcp
HOSTNAME=6252bfe9d545
WEB_PORT_9000_TCP_ADDR=172.17.0.24
WEB_PORT_9000_TCP_PORT=9000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
NGINX_VERSION=1.7.9-1~wheezy
SHLVL=1
HOME=/root
WEB_NAME=/nginx/web
WEB_PORT_9000_TCP=tcp://172.17.0.24:9000
WEB_PORT=tcp://172.17.0.24:9000
_=/usr/bin/env
[email protected]:/# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.17.42.1 0.0.0.0 UG 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
на PHP контейнер
[email protected]:/# env
MYSQLDB_PORT_3306_TCP=tcp://172.17.0.22:3306
HOSTNAME=c7c521c4a40c
MYSQLDB_NAME=/php/mysqldb
MEMCACHEDB_ENV_MEMCACHED_VERSION=1.4.22
MYSQLDB_PORT=tcp://172.17.0.22:3306
MEMCACHEDB_PORT=tcp://172.17.0.23:11211
MEMCACHEDB_NAME=/php/memcachedb
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MYSQLDB_PORT_3306_TCP_PROTO=tcp
MEMCACHEDB_ENV_MEMCACHED_SHA1=5968d357d504a1f52622f9f8a3e85c29558acaa5
PWD=/
MEMCACHEDB_PORT_11211_TCP=tcp://172.17.0.23:11211
MEMCACHEDB_PORT_11211_TCP_PORT=11211
SHLVL=1
HOME=/root
MYSQLDB_PORT_3306_TCP_ADDR=172.17.0.22
MEMCACHEDB_PORT_11211_TCP_PROTO=tcp
MYSQLDB_PORT_3306_TCP_PORT=3306
MEMCACHEDB_PORT_11211_TCP_ADDR=172.17.0.23
_=/usr/bin/env
(here it's showing links to mysql and memchache which I hide on run command before paste on stackoverflow)
ping myapp.dev
PING myapp.dev (127.0.53.53) 56(84) bytes of data.
64 bytes from 127.0.53.53: icmp_seq=1 ttl=64 time=0.025 ms
[email protected]:/# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.17.42.1 0.0.0.0 UG 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
myapp.conf на Nginx
server {
listen 80;
server_name myapp.dev;
root /projects/MyApp/public;
index index.html index.htm index.php;
fastcgi_connect_timeout 5000s;
fastcgi_read_timeout 5000s;
fastcgi_send_timeout 5000s;
access_log /var/log/nginx-access.log;
error_log /var/log/nginx-error.log;
location/{
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass web:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param APPLICATION_ENV dev;
}
}
Кто-нибудь есть какие-либо подсказки?
могли бы вы предоставить конфигурацию Nginx? –
зайдите в оба контейнера с помощью 'docker exec -it' и отлаживайте с помощью обычного netstat, ping, route, lsof -i: 80 (возможно, вам придется установить некоторые из них), проверьте также« журналы докеров »для ваших контейнеров и посмотрите на 'docker events' – user2915097
Там nginx.conf и route -n output – globo