gpt4 book ai didi

linux - Docker-在单个主机上组合多个实例

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

这是我的 docker 文件的样子

version: "3"
services:
controller:
build: ./cd_controller
image: cd_controller:latest
env_file: $PWD/robot-configurations/.env
cap_add:
- ALL
links:
- test_fixture
volumes:
- dependencypackages:/root/dependency-packages
- robotconfigurations:/root/robot-configurations
container_name: controller_g5
test_fixture:
image: docker-standard-all.ur-update.dk/ur/pytest-ur:0.7.1
volumes:
- pytestfixture:/workspace
- controllertests:/workspace/controller-tests
entrypoint: /workspace/entrypoint.sh
container_name: test_fixture
stdin_open: true # docker run -i
tty: true # docker run -t
volumes:
robotconfigurations:
driver_opts:
type: none
device: $PWD/robot-configurations
o: bind
...

基本上它有两个两个服务/容器 Controller 和测试夹具。 controller 有源代码在运行,test_fixture 包含所有的 test_cases。 test_fixture 需要通过套接字与 Controller 通信。由于 docker-compose 在其容器之间创建了一个网络,因此在我的 py-test 案例中我只是使用

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("controller_g5", 30001)) # controller_g5 is name of the controller container

到目前为止,一切看起来都很好。但是我意识到我有源代码的多个版本/功能。所以我想创建一个相同事物的多个实例,每个实例都有自己的网络。命名容器会阻止在不同网络中创建具有相同名称的容器吗?此外,我不确定如何在同一台主机上使用类似容器启动另一个网络。我遇到了Multiple isolated environments on a single host但无法获得示例。

非常感谢任何帮助。

最佳答案

您只需要使用不同的项目名称。默认情况下,compose 使用您的项目所在的目录名称作为项目名称。 docker-compose 负责为每个项目适本地设置隔离网络。

要创建命名空间为“dev”和“test”的项目的两个实例,您可以按如下方式运行它:

docker-compose -p dev up

docker-compose -p test up

来自 https://docs.docker.com/compose/reference/overview/

-p, --project-name NAME     Specify an alternate project name
(default: directory name)

您需要删除 container_name 字段才能使多个项目实例正常工作。 Compose 会自动在容器名称前加上项目名称,但如果指定了 container_name 则不会这样做。如果使用 container_name,则从 compose 文件启动另一个项目时会出现容器名称冲突。删除 container_name 后,您的服务将获得服务名称作为主机名。

关于linux - Docker-在单个主机上组合多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62436534/

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