Docker 主机 rmi 抛出无效权限但能够 ping
Docker host rmi throws invalid authority but able to ping
我在一个 docker 容器 A 上使用 Alfresco,运行,并在 say 33333 上公开 rmi。另一个正常的 java 服务在容器 B 上运行。两者都连接到同一个自定义桥接网络。
当容器 B 尝试使用 url rmi://alfresco:33333
通过 rmi 连接到露天时,它会抛出 java.net.MalformedURLException: invalid authority: rmi://alfresco:33333/Abcdefghi
。不过同样是能够ping
露天。我认为rmi中给出的url格式是错误的。如果是这样。应该用什么代替?我已经尝试了 alfresco
、alfresco.abc
。但同样的错误仍然存在。
否则我是否在 docker-compose
文件中遗漏了什么?
这是两个组合文件的示例配置。
Alfresco (Container A):
version: '3'
services:
alfresco:
image : xxxxxxx:latest
container_name : alfresco
expose:
- "33333"
ports:
- xxxx:xxxx
networks:
default:
external:
name: test
Service (Container B):
version: '2.2'
services:
abc:
image: openjdk:8-jre-slim
working_dir: /home
entrypoint: java -jar ABC.jar
networks:
default:
external:
name: test
找到原因了。 RMI 需要 IP 地址或有效域。由于 alfresco
可通过服务发现获得并且 ping 识别它,RMI 假定它是无效的 URL。因此,我必须以有效的 url 格式为露天主机提供别名。
我给了一个名为 alfresco.local
的别名,现在它可以正常工作了。
这是我修改后的户外 Compose 文件:
Alfresco (Container A)
version: '3'
services:
alfresco:
image : xxxxxxx:latest
container_name : alfresco
networks:
default:
aliases:
- alfresco.local #specify an alias in some valid DNS format
expose:
- "33333"
ports:
- xxxx:xxxx
networks:
default:
external:
name: test
我在一个 docker 容器 A 上使用 Alfresco,运行,并在 say 33333 上公开 rmi。另一个正常的 java 服务在容器 B 上运行。两者都连接到同一个自定义桥接网络。
当容器 B 尝试使用 url rmi://alfresco:33333
通过 rmi 连接到露天时,它会抛出 java.net.MalformedURLException: invalid authority: rmi://alfresco:33333/Abcdefghi
。不过同样是能够ping
露天。我认为rmi中给出的url格式是错误的。如果是这样。应该用什么代替?我已经尝试了 alfresco
、alfresco.abc
。但同样的错误仍然存在。
否则我是否在 docker-compose
文件中遗漏了什么?
这是两个组合文件的示例配置。
Alfresco (Container A):
version: '3'
services:
alfresco:
image : xxxxxxx:latest
container_name : alfresco
expose:
- "33333"
ports:
- xxxx:xxxx
networks:
default:
external:
name: test
Service (Container B):
version: '2.2'
services:
abc:
image: openjdk:8-jre-slim
working_dir: /home
entrypoint: java -jar ABC.jar
networks:
default:
external:
name: test
找到原因了。 RMI 需要 IP 地址或有效域。由于 alfresco
可通过服务发现获得并且 ping 识别它,RMI 假定它是无效的 URL。因此,我必须以有效的 url 格式为露天主机提供别名。
我给了一个名为 alfresco.local
的别名,现在它可以正常工作了。
这是我修改后的户外 Compose 文件:
Alfresco (Container A)
version: '3'
services:
alfresco:
image : xxxxxxx:latest
container_name : alfresco
networks:
default:
aliases:
- alfresco.local #specify an alias in some valid DNS format
expose:
- "33333"
ports:
- xxxx:xxxx
networks:
default:
external:
name: test