docker服务容器化

news2024/11/30 9:37:40

docker服务容器化

      • 1 引言
      • 2 多个容器间网络联通
        • 2.1 单独创建关联
        • 2.2 创建时关联
      • 3 服务搭建
        • 3.1 镜像清单
        • 3.2 容器创建
      • 4 联合实战
        • 4.2 flink_sql之kafka到starrocks
        • 4.2 flink_sql之mysql到starrocks
      • 5 文献借鉴

1 引言

​ 利用docker可以很效率地搭建服务,本文在win10下安装docker-desktop,从镜像的拉取,到容器的创建,最后容器间联合使用,该过程有很多细节,记录和分享在这里,共勉。

2 多个容器间网络联通

​ 在docker中可以创建网络,作为容器间网络联通媒介,网络联通有下面两种方式,首先需要创建网络:

# 创建网络名为flink-network的网络
docker network create flink-network

# 查看网络内的容器信息:
docker network inspect flink-network
2.1 单独创建关联

​ 容器已经创建,但是没有关联网络,需要单独创建关联时

# 这里假设已经创建容器starrocks,关联上已创建的网络flink-network
docker network connect flink-network starrocks
2.2 创建时关联

​ 如果网络已经创建,容器未创建,则可以在创建容器时直接关联网络,如已创建上面的网络flink-network,下面打算创建starrocks容器时

# 已创建上面的网络flink-network,下面打算创建starrocks容器时
docker run -p 19030:9030 -p 18030:8030 -p 18040:8040 \
-itd --name starrocks \
--network flink-network \
starrocks/allin1-ubuntu:3.1.10
# 在运行命令中添加已存在网络flink-network --network flink-network

​ 可以查看网络内的容器信息

# 查看网络内的容器信息:
docker network inspect flink-network

在这里插入图片描述

3 服务搭建

3.1 镜像清单

​ 我们这里搭建kafka-flink-starrocks的项目服务,以starrocks作为数仓,mysql和redis为业务库,flink和kafka进行CDC和ETL。

repositorytagsiz
starrocks/allin1-ubuntu3.1.104.37GB
flink1.13.5625MB
zookeeper3.4.13150MB
wurstmeister/kafka2.13-2.8.1468MB
mysql8.0.19546MB
redis6.0.8104MB
3.2 容器创建

1)首先,创建starrocks容器,外部挂载磁盘位置E:\tmp\docker_volumes\starrocks\data

# 挂载容器外部磁盘/文件夹「启动」,
docker run -itd --name starrocks \
--network flink-network \
-v E:\tmp\docker_volumes\starrocks\data:/home/zzz/data 
-p 19030:9030 -p 18030:8030 -p 18040:8040 
starrocks/allin1-ubuntu:3.1.10
# 启动SQL client(Connect to StarRocks with a SQL client)
docker exec -it starrocks \
mysql -P 9030 -h 127.0.0.1 -u root -p 123456 --prompt="StarRocks > "
# 在容器内部,查看fe、be状态
show proc '/frontends' \G
show proc '/backends' \G

2)然后,创建flink容器,JobManager和TaskManager都有创建

# 创建 JobManager 
 docker run \
  -itd \
  --name=jobmanager \
  --publish 8081:8081 \
  --network flink-network \
  --env FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager" \
  flink:1.13.5 jobmanager 

# 创建 TaskManager 
 docker run \
  -itd \
  --name=taskmanager \
  --network flink-network \
  --env FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager" \
  flink:1.13.5 taskmanager 
  
# 从https://mvnrepository.com/检索下面jar包 添加jar到flink/lib/目录
# 在宿主机保存jar包路径下运行下面命令
docker cp flink-sql-connector-mysql-cdc-2.0.2.jar jobmanager:/opt/flink/lib/
docker cp flink-sql-connector-mysql-cdc-2.0.2.jar taskmanager:/opt/flink/lib/

docker cp flink-connector-starrocks-1.1.14_flink-1.13_2.11.jar jobmanager:/opt/flink/lib/
docker cp flink-connector-starrocks-1.1.14_flink-1.13_2.11.jar taskmanager:/opt/flink/lib/

docker cp flink-connector-jdbc_2.11-1.13.5.jar jobmanager:/opt/flink/lib/
docker cp flink-connector-jdbc_2.11-1.13.5.jar taskmanager:/opt/flink/lib/

docker cp flink-sql-connector-kafka_2.11-1.13.5.jar jobmanager:/opt/flink/lib/
docker cp flink-sql-connector-kafka_2.11-1.13.5.jar taskmanager:/opt/flink/lib/

3)创建zookeeper和kafka容器

# 安装zk
docker run -d --restart=always \
-e ALLOW_ANONYMOUS_LOGIN=yes  \
--log-driver json-file  \
--log-opt max-size=100m  \
--log-opt max-file=2   \
--name zookeeper  \
--network flink-network \
-p 2181:2181  \
-v E:\tmp\docker_volumes\zookeeper\localtime:/etc/localtime zookeeper:3.4.13

# 安装kafka 需要注意的时 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT:宿主机ip:9092
docker run -d --name kafka \
--network flink-network \
--log-driver json-file  \
--log-opt max-size=100m  \
--log-opt max-file=2  \
-p 9092:9092  \
--link zookeeper:zookeeper \
-e KAFKA_BROKER_ID=0  \
-e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181/kafka  \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://宿主机ip:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092  \
wurstmeister/kafka:2.13-2.8.1

# 运行kafka交换命令行
docker exec -it kafka /bin/bash
  1. 创建容器mysql和redis,(本人虽然创建了,但是使用的本地的客户端)在这里插入图片描述

4 联合实战

4.2 flink_sql之kafka到starrocks

1)kafka数据准备

# 进入kafka交互命令行
docker exec -it kafka /bin/bash

# 在容器内,创建主题user  这里容器主机ip是zk容器的ip
./kafka-topics.sh --zookeeper 容器主机ip:2181/kafka --create --replication-factor 1 --partitions 1 --topic user

# 创建生产者 容器主机ip是kafka容器的ip
./kafka-console-producer.sh --broker-list  容器主机ip:9092  --topic user

# 创建消费者 容器主机ip是kafka容器的ip
./kafka-console-consumer.sh --topic user --from-beginning --bootstrap-server 容器主机ip:9092

2)starrocks数据准备

# 使用dbeaver客户端,或者进入starrocks容器
# 启动SQL client(Connect to StarRocks with a SQL client)
docker exec -it starrocks \
mysql -P 9030 -h 127.0.0.1 -u root -p 123456 --prompt="StarRocks > "

# 创建主键模型表 s_user
CREATE TABLE IF NOT EXISTS `s_user` (
   `id` int(10) NOT NULL COMMENT "",
   `name` varchar(20) NOT NULL COMMENT "",
   `p_id` INT(2) NULL COMMENT ""
)
PRIMARY KEY(`id`)
DISTRIBUTED BY HASH(`id`) BUCKETS 1
PROPERTIES (
"replication_num" = "1"
);

  1. flink_sql准备
# 进入flink容器交互命令行
docker exec -it jobmanager /bin/bash

# 在容器内容运行,进入bin路径
cd opt/flink/bin
# 在bin路径下运行flink_sql客户端
sql-client.sh

# 可以查看是否有表
show tables;

# 创建source源表 source_Kafka_user
CREATE TABLE source_Kafka_user(
   id INT,
   name STRING,
   p_id INT
) WITH (
  'connector' = 'kafka',
  'topic' = 'user',
  'properties.bootstrap.servers' = 'kafka容器ip:9092',
  'properties.group.id' = 'source_user',
  'scan.startup.mode' = 'earliest-offset',
  'format' = 'csv'
);

# 创建Sink目标表,sink_starrocks_suser
CREATE TABLE sink_starrocks_suser (
   id INT,
   name STRING,
   p_id INT,
   PRIMARY KEY (id) NOT ENFORCED
)WITH (
   'connector' = 'starrocks',
   'jdbc-url'='jdbc:mysql://starrocks容器ip:9030',
   'load-url'='starrocks容器ip:8040',
   'database-name' = 'my_test_db',
   'table-name' = 's_user',
   'username' = 'root',
   'password' = '123456',
   'sink.buffer-flush.interval-ms' = '5000',
   'sink.properties.column_separator' = '\x01',
   'sink.properties.row_delimiter' = '\x02'
);

# 在flink_sql创建ETL命令,实时运行
insert into sink_starrocks_suser select id,name,p_id from source_Kafka_user;

在这里插入图片描述

​ 可以在flinkUI:http://localhost:8081/查看任务运行详情
在这里插入图片描述

4.2 flink_sql之mysql到starrocks
  1. mysql数据准备
CREATE TABLE `s_user` (
   `id` INT(11) NOT NULL,
   `name` VARCHAR(32) DEFAULT NULL,
   `p_id` INT(2) DEFAULT NULL,
   PRIMARY KEY (`id`)
);

insert into s_user values(10086,'lm',61),(10010, 'ls',11), (10000,'ll',61);

2)starrocks数据准备: 和上面一样

  1. flink_sql准备
# 创建source源表 source_mysql_suser
CREATE TABLE source_mysql_suser (
   id INT,
   name STRING,
   p_id INT,
   PRIMARY KEY (id) NOT ENFORCED
)WITH (
   'connector' = 'jdbc',
   'driver'='com.mysql.jdbc.Driver',
   'url' = 'jdbc:mysql:/宿主机ip:3306/flink_pro',
   'table-name' = 's_user',
   'username' = 'root',
   'password' = '123456'
);

# 创建Sink目标表,sink_starrocks_suser
CREATE TABLE sink_starrocks_suser (
   id INT,
   name STRING,
   p_id INT,
   PRIMARY KEY (id) NOT ENFORCED
)WITH (
   'connector' = 'starrocks',
   'jdbc-url'='jdbc:mysql://starrocks容器ip:9030',
   'load-url'='starrocks容器ip:8040',
   'database-name' = 'my_test_db',
   'table-name' = 's_user',
   'username' = 'root',
   'password' = '123456',
   'sink.buffer-flush.interval-ms' = '5000',
   'sink.properties.column_separator' = '\x01',
   'sink.properties.row_delimiter' = '\x02'
);

# 在flink_sql创建ETL命令,实时运行
insert into sink_starrocks_suser select id,name,p_id from source_mysql_suser;

在这里插入图片描述

5 文献借鉴

StarRocks数据导入–Flink Connector与CDC秒级数据同步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2250348.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统之iotop命令的基本使用

Linux系统之iotop命令的基本使用 一、iotop命令介绍二、iotop命令的使用帮助2.1 安装iotop2.2 iotop命令help帮助信息2.3 iotop命令选项解释 三、 iotop命令的基本使用四、iotop使用注意事项 一、iotop命令介绍 iotop 是一个类似于 top 的命令行工具,但它专注于显示…

opencv 区域提取三种算法

opencv 区域提取三种算法 1.轮廓查找 findContours()函数&#xff0c;得到轮廓的点集集合 cv::vector<cv::vector<Point>> contours;threshold(roiMat,binImg,m_pPara.m_nMinGray,m_pPara.m_nMaxGray,THRESH_BINARY);//膨胀处理Mat dilaElement getStructuringE…

【深度学习】—CNN卷积神经网络 从原理到实现

卷积神经网络&#xff08;CNN&#xff09;从原理到实现 什么是卷积神经网络&#xff08;CNN&#xff09;&#xff1f; 卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;是一种深度学习模型&#xff0c;主要应用于图像分类、目标检测和自然语言处理等领…

A-star算法

算法简介 A*&#xff08;A-star&#xff09;算法是一种用于图形搜索和路径规划的启发式搜索算法&#xff0c;它结合了最佳优先搜索&#xff08;Best-First Search&#xff09;和Dijkstra算法的思想&#xff0c;能够有效地寻找从起点到目标点的最短路径。A*算法广泛应用于导航、…

【数据集划分】训练集train/验证集val/测试集test是如何划分的?

&#x1f680;在跑代码时常常将数据集简单的划分为训练集train和测试集test(二划分)&#xff0c;其实更为全面完整的划分应该是划分为训练集train、验证集val、测试集test(三划分)。那么具体如何划分呢&#xff1f;各个部分起着什么作用呢&#xff1f; 如下图所示&#xff0c;…

Gentoo Linux部署LNMP

一、安装nginx 1.gentoo-chxf ~ # emerge -av nginx 提示配置文件需更新 2.gentoo-chxf ~ # etc-update 3.gentoo-chxf ~ # emerge -av nginx 4.查看并启动nginx gentoo-chxf ~ # systemctl status nginx gentoo-chxf ~ # systemctl start nginx gentoo-chxf ~ # syst…

Ubantu系统非root用户安装docker教程

非root用户没有超级权限&#xff0c;根据docker安装教程安装完毕会发现无法拉取镜像&#xff0c;或者每次运行docker都需要加上sudo&#xff0c;输入密码验证。 解决办法如下&#xff1a; 1、创建docker用户组 sudo groupadd docker2、将非root用户&#xff08;当前用户&am…

python可视化高纬度特征

可视化网络的特征层&#xff0c;假如resnet网络输出的特征维度是(batch_size,512). 如果要可视化测试集的每个图片的512高维度特征分布呢&#xff1f; embeds resnet18(x)&#xff0c;embeds是(batch_size,512)高维度特征。如下可视化。 import torch import matplotlib.pyp…

OceanBase 大数据量导入(obloader)

现需要将源数据库&#xff08;Oracle|MySQL等&#xff09;一些表的海量数据迁移到目标数据库 OceanBase 中&#xff0c;基于常规 jdbc 驱动编码的方式涉及开发工作&#xff0c;性能效率也要看编码的处理机制。 OceanBase 官方提供了的 OceanBase Migration Service (OMS) 数据…

Mac启动服务慢问题解决,InetAddress.getLocalHost().getHostAddress()慢问题。

项目启动5分钟&#xff0c;很明显有问题。像网上其他的提高jvm参数就不说了&#xff0c;应该不是这个问题&#xff0c;也就快一点。 首先找到自己的电脑名称&#xff08;用命令行也行&#xff0c;只要能找到自己电脑名称就行&#xff0c;这里直接在共享里看&#xff09;。 复制…

Ubuntu交叉编译 opencv for QNX

前言 在高通板子上开发一些程序的时候,会用到opencv帮助处理一下图像数据,高通车载板子sa8155和sm8295都有QNX os,需要交叉编译opencv的库,(这个交叉编译真是搞得我太恶心了,所以进行一个记录和分享) 搜了很多资料,有些太过于复杂,有些也存在错误导致最后没有编译成…

.NET 9 AOT的突破 - 支持老旧Win7与XP环境

引言 随着技术的不断进步&#xff0c;微软的.NET 框架在每次迭代中都带来了令人惊喜的新特性。在.NET 9 版本中&#xff0c;一个特别引人注目的亮点是 AOT&#xff08; Ahead-of-Time&#xff09;支持&#xff0c;它允许开发人员将应用程序在编译阶段就优化为能够在老旧的 Win…

Mac 环境下类Xshell 的客户端介绍

在 Mac 环境下&#xff0c;类似于 Windows 环境中 Xshell 用于访问 Linux 服务器的工具主要有以下几种&#xff1a; SecureCRT&#xff1a; 官网地址&#xff1a;https://www.vandyke.com/products/securecrt/介绍&#xff1a;支持多种协议&#xff0c;如 SSH1、SSH2、Telnet 等…

Cookie跨域

跨域&#xff1a;跨域名&#xff08;IP&#xff09; 跨域的目的是共享Cookie。 session操作http协议&#xff0c;每次既要request&#xff0c;也要response&#xff0c;cookie在创建的时候会产生一个字符串然后随着response返回。 全网站的各个页面都会带着登陆的时候的cookie …

虚拟机CentOS系统通过Docker部署RSSHub并映射到主机

公告 &#x1f4cc;更新公告 20241124-该文章已同步更新到作者的个人博客&#xff08;链接&#xff1a;虚拟机CentOS系统通过Docker部署RSSHub并映射到主机&#xff09; 一、编辑 YUM 配置文件 1、打开 CentOS 系统中的 YUM 软件仓库配置文件 vim /etc/yum.repos.d/CentOS-Ba…

DreamCamera2相机预览变形的处理

最近遇到一个问题&#xff0c;相机更换了摄像头后&#xff0c;发现人像角度顺时针旋转了90度&#xff0c;待人像角度正常后&#xff0c;发现 预览时图像有挤压变形&#xff0c;最终解决。在此记录 一人像角度的修改 先放示意图 设备预览人像角度如图1所示&#xff0c;顺时针旋…

Taro React小程序开发框架 总结

目录 一、安装 二、目录结构 三、创建一个自定义页面 四、路由 1、API 2、传参 3、获取路由参数 4、设置TabBar 五、组件 六、API Taro非常好用的小程序框架&#xff0c;React开发者无缝衔接上。 一、安装 官方文档&#xff1a;Taro 文档 注意&#xff0c;项目创建…

RPA:电商订单处理自动化

哈喽&#xff0c;大家好&#xff0c;我是若木&#xff0c;最近闲暇时间较多&#xff0c;于是便跟着教程做了一个及RPA&#xff0c;谈到这个&#xff0c;可能很多人并不是很了解&#xff0c;但是实际上&#xff0c;这玩意却遍布文末生活的边边角角。话不多说&#xff0c;我直接上…

通过金蝶云星空实现高效仓储管理

金蝶云星空数据集成到旺店通WMS的技术案例分享 在企业日常运营中&#xff0c;库存管理和物流调度是至关重要的环节。为了实现高效的数据流转和业务协同&#xff0c;我们采用了轻易云数据集成平台&#xff0c;将金蝶云星空的数据无缝对接到旺店通WMS。本次案例聚焦于“调拨入库…

go结构体匿名“继承“方法冲突时继承优先顺序

在 Go 语言中&#xff0c;匿名字段&#xff08;也称为嵌入字段&#xff09;可以用来实现继承的效果。当你在一个结构体中匿名嵌入另一个结构体时&#xff0c;嵌入结构体的方法会被提升到外部结构体中。这意味着你可以直接通过外部结构体调用嵌入结构体的方法。 如果多个嵌入结…