当前位置: 首页 > article >正文

docker踩坑记录:docker容器创建doris容器间无法通讯问题

背景:

开发大数据平台,使用doris作为数据仓储,使用docker做集群部署,先进行开发环境搭建,环境为BE1;FE1,原来使用官方例子,但是官方例子是创建了一个bridge使用172.20.80.0/24通讯,这样正常来说,使用fe去操作doris是没有问题的,但是我们现在要使用flink进行相关的数据同步清洗,采用flink-cdc进行同步操作。

出现问题

当使用flink-cdc时,会请求fe,使用fe返回的注册的be地址,但是be一般是放在内网使用,无法在外网请求,flink-cdc反其道而行之,没办法,只能使用其他办法了,当你读完docker官方的网络配置时,你就会知道除了4种默认网络模式以外,还有两种特殊模式:其中的一种正是我们想要的模式,可以将容器完全独立出来。
在这里插入图片描述

开始解决

//检查是否可用
modprobe macvlan
lsmod | grep macvlan
//创建docker网络
//解释
docker network create -d macvlan --subnet=[网段] --gateway=[网关] -o parent=[网卡] macvlan
//实际例子
docker network create -d macvlan --subnet=192.168.157.1/24 --gateway=192.168.157.1 -o parent=enp2s0 doris_macvlan
//创建docker-compose
version: '3'
services:
  docker-fe:
    image: "apache/doris:1.2.1-fe-x86_64"
    container_name: "doris-fe"
    hostname: "fe"
    environment:
      - FE_SERVERS=fe1:192.168.157.200:9010
      - FE_ID=1
    ports:
      - 8030:8030
      - 9030:9030
      - 9010:9010
    volumes:
      - ./fe/doris-meta:/opt/apache-doris/fe/doris-meta
      - ./fe/conf:/opt/apache-doris/fe/conf
      - ./fe/log:/opt/apache-doris/fe/log
    networks:
      doris_macvlan:
        ipv4_address: 192.168.157.200
  docker-be:
    image: "apache/doris:1.2.1-be-x86_64"
    container_name: "doris-be"
    hostname: "be"
    depends_on:
      - docker-fe
    environment:
      - FE_SERVERS=fe1:192.168.157.200:9010
      - BE_ADDR=192.168.157.201:9050
    ports:
      - 8040:8040
      - 9050:9050
    volumes:
      - ./be/storage:/opt/apache-doris/be/storage
      - ./be/conf:/opt/apache-doris/be/conf
      - ./be/script:/docker-entrypoint-initdb.d
      - ./be/log:/opt/apache-doris/be/log
    networks:
      doris_macvlan:
        ipv4_address: 192.168.157.201
networks:
  doris_macvlan:
    external: true
    name: doris_macvlan

注意:其中的networks部分,我们使用的doris_macvlan(也就是我们刚刚创建的网卡)

其中查看官方文档的时候,发现官方给的例子是docker run运行,我想使用docker-compose运行,所以找到了如下小工具:

//安装
npm install composerize -g
//使用
composerize docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
//输出
version: '3.3'
services:
    portainer:
        ports:
            - '9000:9000'
        volumes:
            - '/var/run/docker.sock:/var/run/docker.sock'
        image: portainer/portainer

flink-cdc参考:https://github.com/apache/doris-flink-connector
docker网络参考:https://docs.docker.com/network/


http://www.kler.cn/a/153437.html

相关文章:

  • LeetCode Hot100 169.多数元素
  • 网页开发 JS基础
  • 计算一个4+4+1的队形变换问题
  • 键盘打字盲打练习系列之指法练习——2
  • js轮播图示例代码
  • 【C/PTA —— 13.指针2(课内实践)】
  • SQL中left join、right join、inner join等的区别
  • 用通俗的方法讲解:大模型微调训练详细说明(附理论+实践代码)
  • js moment时间范围拿到中间间隔时间
  • 组件库篇 | EUI | 列表
  • C/C++ 内存管理(1)
  • 点云从入门到精通技术详解100篇-基于三维点云的工件曲面轮廓检测与机器人打磨轨迹规划(中)
  • hls实现播放m3u8视频将视频流进行切片 HLS.js简介
  • flutter开发实战-实现获取视频的缩略图封面video_thumbnail
  • YOLOv8改进 | 2023 | SCConv空间和通道重构卷积(精细化检测,又轻量又提点)
  • Linux-Linux安装JDK及配置环境 及 遇到的问题
  • rust持续学习 COW
  • <蓝桥杯软件赛>零基础备赛20周--第8周第1讲--十大排序
  • 【Python基础】内存管理机制
  • 项目代码规范