gpt4 book ai didi

docker - 如何在单独的容器中使用相同的端口?

转载 作者:行者123 更新时间:2023-12-02 18:48:01 29 4
gpt4 key购买 nike

我有两个docker容器,每个容器运行roscore,后者使用端口11311。每个容器具有单独的IP地址,并且在发布和订阅时使用不同的 namespace 。我不应该将每个容器都当作单独的机器来对待吗?我想要做的是从主机到基于 namespace 的容器之一的rostopic pub。

启动容器时,我得到以下信息:

$ docker-compose up
Creating mach1 ... error
Creating mach1 ...

ERROR: for mach1 Cannot start service mach1: driver failed programming external
Creating mach2 ... done
cab7aa376623c708c): Bind for 0.0.0.0:11311 failed: port is already allocated

ERROR: for mach1 Cannot start service mach1: driver failed programming external connectivity on endpoint mach1 (9f755a1bd3f1dad40cce6963105a5d7224127dca3e0bb72cab7aa376623c708c): Bind for 0.0.0.0:11311 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.

用于docker-compose的YAML是:
version: '3'
services:
mach1:
build:
context: .
dockerfile: ./mach1/Dockerfile
environment:
- "ROS_IP=10.10.0.20"
- "ROS_MASTER_URI=http://10.10.0.20:11311"
image: my-image:v1
ports:
- "11311:11311"
networks:
my_net:
ipv4_address: 10.10.0.20

mach2:
build:
context: .
dockerfile: ./mach2/Dockerfile
environment:
- "ROS_IP=10.10.0.21"
- "ROS_MASTER_URI=http://10.10.0.21:11311"
image: my-image:v1
ports:
- "11311:11311"
networks:
my_net:
ipv4_address: 10.10.0.21

networks:
my_net:
driver: bridge
ipam:
driver: default
config:
- subnet: 10.10.0.0/24
#- gateway: 10.10.0.1

最佳答案

问题是您正在尝试将两个容器的端口11311映射到主机上的11311

ports:
- "11311:11311"

而是尝试映射到其他主机端口:
ports:
- "11311:11311"


ports:
- "11312:11311"

关于docker - 如何在单独的容器中使用相同的端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55622238/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com