我需要在docker中创建多主机网络吗?

问题描述 投票:0回答:1

对于下面的docker-compose动态构建docker文件:

version: '2'

volumes:
  jenkins_home:
    external: true

services:
  jenkins:
    build:
      context: .
      args:
        DOCKER_GID: ${DOCKER_GID}
        DOCKER_ENGINE: ${DOCKER_ENGINE}
        DOCKER_COMPOSE: ${DOCKER_COMPOSE}
    volumes:
      - jenkins_home:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - "8080:8080"

创建网桥型网络(project1_default):

$ docker network ls
NETWORK ID          NAME                     DRIVER              SCOPE
....
f1b7ca7c6dfe        project1_default         bridge              local
....

在运行以下命令后:

$ docker-compose -p project1 up -d

启动并连接到主詹金斯之后,我们使用主詹金斯的EC2 plugin在单独的EC2主机上配置和创建从属詹金斯。

但是,在网络(project1_default)之上是单主机网络,可以允许数据包在单主机内传输。以下是我对网桥类型网络(project1_default)...的可视化...

enter image description here

因此,我们需要启动并配置主詹金斯,以使用EC2插件在单独的EC2主机上启动从属詹金斯,


  1. 我需要创建多主机网络(swarm)类型吗?而不是网桥类型(project1_default)...

  2. 如果是,如何创建多主机网络?

linux docker networking docker-swarm lxc
1个回答
0
投票

所有三个都应在容器中运行?再加上容器在单独的ec2实例上运行,对吗?

您可以将必要的端口公开给基础主机IP。这会将Jenkins容器公开给您的网络,您将能够与它进行交互,就像将其直接安装在ec2实例上一样(而不是在容器中)。

这里举个例子

docker run -p 80:8080 ubuntu bash

这会将容器中的端口8080暴露给主机上的端口80。从您的主服务器开始,然后是从服务器,然后像使用非容器设置一样,通过使用ec2实例的IP和为从服务器公开的端口来添加从服务器。

您可以在此处找到有关端口发布的更多信息

© www.soinside.com 2019 - 2024. All rights reserved.