我尝试在docker容器中运行命令,如下所示:
openssl s_client -connect 127.0.0.1:4443
CONNECTED(00000003)
在下一步中,我尝试从/etc/hosts
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:
答案 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
访问它。