我有两个Docker容器,它们之间需要通过websocket连接。
我这样运行一个容器:
docker run --name comm -p 8080:8080 comm_module:latest
将端口8080暴露给主机。然后,我尝试像这样运行第二个容器:
docker run --name test -p 8080:8080 datalogger:latest
但是,我收到以下错误:
docker:来自守护程序的错误响应:驱动程序外部编程失败 端点测试的连通性 (f06588ee059e2c4be981e3676d7e05b374b42a8491f9f45be27da55248189556): 绑定0.0.0.0:8080失败:端口已分配。错误[0000] 等待容器时出错:上下文已取消
我不确定该怎么办。我应该将这些连接到网络吗?如何运行这些容器?
答案 0 :(得分:2)
您不能在同一时间两次绑定同一主机端口,而可以在一个容器上更改其中一个端口:
COPY tablename FROM PROGRAM
'cat /Users/local/Downloads/ufl_old_files/*' WITH DELIMITER AS ';' csv header
您可以检查容器中有关其通信方式的配置。
您还可以在它们之间创建链接:
<span th:if="${myString!='<p></p>'} ">
答案 1 :(得分:0)
我终于解决了。这些是在两个Docker容器之间进行双向Websocket通信所涉及的步骤:
修改容器中的源代码,以将另一个容器的名称用作目标主机地址(“ test”中的“ comm”,反之亦然)+端口号。
在两个容器的Dockerfile中暴露相同的端口(8080)并构建映像。无需发布它们,因为它们将对网络上的其他容器可见。
创建用户定义的桥接网络,如下所示:
docker网络创建我的网络
创建我的第一个容器并将其附加到网络:
docker create --name comm --network my-net comm_module:latest
创建第二个容器并将其附加到网络:
docker create --name test --network my-net datalogger:latest
通过发出docker start命令启动两个容器。
双向websocket通讯很好用!
答案 2 :(得分:0)
我的解决方案工作正常。
docker network create mynet
docker run -p 443:443 --net=mynet --ip=172.18.0.3 --hostname=frontend.foobar.com foobarfrontend
docker run -p 9999:9999 --net=mynet --ip=172.18.0.2 --hostname=backend.foobar.com foobarbackend
route /P add 172.18.0.0 MASK 255.255.0.0 10.0.75.2
foobarfrontend在端口9999的foobarbackend上调用wss websocket PS:我使用linuxcontainers在docker Windows 10上工作 玩得开心