我试图通过CloudHSM Java API(即此thingy)让Docker容器访问EC2实例上的CloudHSM客户端服务。使用lsof
命令,主机上的客户端服务似乎使用了可能是抽象域套接字的东西,因为输出包含这种东西(请注意文件名前面的@):
cloudhsm_ 1249 1271 hsmuser 26u unix 0xSOMEHEX 0t0 13265 @/etc/cavium/daemon_socket1 type=STREAM
但是当我尝试在容器内部使用库时,我发现了这个错误:
com.cavium.cfm2.CFM2Exception: A call to the API login failed with error code 40000040 : LIQUIDSECURITY: Daemon socket connection error
这向我表明该容器内部的套接字不可用(考虑到没有端口或卷与容器共享,这是有意义的)。但是,由于似乎没有要通过卷共享的套接字文件,我没有看到将守护进程套接字放入容器的方法。有什么建议吗?
答案 0 :(得分:0)
到目前为止,我发现的最佳解决方案是为客户端服务创建一个单独的容器,然后使用Java API在容器上使用"{0.__repr__():10}".format('Hello')
链接两个容器,其中--net="container:cloudhsm"
是其名称客户服务容器。您还可以反转哪个容器在网络上占用,但关键是这将导致两个容器共享同一网络,这似乎允许它们共享必要的套接字。