无法连接到docker容器内的服务

时间:2018-02-01 03:57:42

标签: docker

我尝试在docker容器中运行命令,如下所示:

openssl s_client  -connect 127.0.0.1:4443
CONNECTED(00000003)

在下一步中,我尝试从/etc/hosts

检测ip for docker image
172.18.0.2  aaf6fa11bc88

然后我尝试将内部容器连接到此IP并获得:

openssl s_client  -connect 172.18.0.2:4443
connect: Connection refused

不确定为什么我可以连接到127.0.0.1并且无法通过已放置在Docker容器中的172.18.0.2文件中的IP /etc/hosts进行连接?

我已经刷了iptables:

iptables -F and iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

有ifconfig输出:

ifconfig 
eth0      Link encap:Ethernet  HWaddr 02:42:ac:12:00:02  
          inet addr:172.18.0.2  Bcast:172.18.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9028 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5038 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:12755512 (12.1 MiB)  TX bytes:278694 (272.1 KiB)
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:48 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:5332 (5.2 KiB)  TX bytes:5332 (5.2 KiB)

app正在容器内运行:

ps ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:01 python db_adapter.py
  284 pts/0    Ss     0:00 /bin/bash
  315 pts/0    R+     0:00 ps ax

我无法使用类似172.18.0.2的ip连接到db_adapter但可以连接到127.0.0.1(可能是db_adapter有问题吗?)

有输出:

docker-compose ps
       Name                      Command               State           Ports         
-------------------------------------------------------------------------------------
docker_db-adapter_1   python db_adapter.py             Up      0.0.0.0:4443->4443/tcp

有docker-compose文件:

version: '2'
services:
  fake-s3:
    image: fake-s3

  db-adapter:
    image: db-adapter
    ports:
    - "4443:4443"
  mail:
    image: mail
    volumes:
    depends_on:
      - fake-s3
      - db-adapter
    links:
      - db-adapter

volumes:
    mailproxy:

1 个答案:

答案 0 :(得分:2)

您的python应用程序db-adapter仅绑定到localhost。这就是为什么您只能通过127.0.0.1:4443访问它并且只能在容器内访问它的原因。您需要找到一种方法将其绑定到0.0.0.0。之后,您可以在容器内的172.18.0.2:4443和主机上的127.0.0.1:4443访问它。

相关问题