Dockernetworking在MAC中
我有2个docker集装箱在同一个networking。 我创build了一个networking:
docker network create my_network
我在这个networking中运行一个Landoop容器,使用:
docker run --rm -it -p 2181:2181 -p 3030:3030 -p 8081:8081 -p 8082:8082 -p 9092:9092 --net=my_network --name localkafka landoop/fast-data-dev
我正在运行一个更多的容器:
docker run -it --rm --net=my_network --name containerB containerName.
当我logincontainerB
并尝试ping localkafka
使用:
container ping -c 5 localkafka
它成功了。 但是当我这样做
ping -c 5 localkafka:8081 ping: unknown host
我在这里错过了什么? 任何帮助表示赞赏。
PS:我正在使用一个MAC,我必须使用另一个容器B中的一个容器暴露的端口。
你的问题是你在误用ping。
阅读此: https : //technet.microsoft.com/en-us/library/cc732509(v=ws.10).aspx
简短的答案 – 平通过ICMP回应请求。 您无法ping端口,因为端口是TCP等传输层协议中的一个概念。 因此, localkafka:8080
被视为具有该名称的主机,而不是主机:端口对。
您可以使用nmap来代替,也可以查找第三方应用程序,其行为类似于ping而是通过传输层协议。
如果您使用的是Mac,则可能安装了netcat( nc
)。 Netcat可以用来testing一个端口是否打开:
nc -zw2 localkafka 8081 &>/dev/null && echo open || echo closed
-z选项使netcat连接而不传输数据。 如果没有build立连接,-w选项告诉netcat在2秒后超时。
如果netcat不可用,则可以直接使用/dev/tcp
来testing端口是否打开:
{ echo > /dev/tcp/localkafka/8081; } > /dev/null 2>&1 && echo open || echo closed
- 如何链接docker集装箱?
- 在Alpine linux上安装ssh-keyscan?
- docker-in-docker(dind)服务在gitlab ci中的作用
- Docker,JBoss部署因java.net.ConnectException失败:JBAS012144:无法连接到http-remoting://127.0.0.1:9990。 连接超时
- mkdir和复制文件与docker中的webpack的卷
- 在Makefile中获取Docker Container Id以在另一个命令中使用
- Docker容器无法启动,显示为“n秒前退出”
- Docker – 访问主机上现有的容器文件
- 重新部署在Liberty Docker中运行的Liberty .war应用程序