保姆级教程:在Ubuntu 22.04上,用Docker一步搞定CloudCanal社区版部署(附端口占用排查)
2026/4/21 17:06:08 网站建设 项目流程

保姆级教程:在Ubuntu 22.04上,用Docker一步搞定CloudCanal社区版部署(附端口占用排查)

在数据同步和ETL工具领域,CloudCanal凭借其开箱即用的特性逐渐成为开发者们的新宠。特别是对于需要频繁进行数据库迁移、实时数据同步的团队来说,能够快速搭建一个稳定运行的CloudCanal环境至关重要。本教程将带你从零开始,在Ubuntu 22.04系统上通过Docker完成CloudCanal社区版的完整部署,同时针对实际部署中最常见的端口冲突问题提供详细的排查方案。

1. 环境准备与系统检查

在开始部署之前,我们需要确保系统环境满足CloudCanal的基本要求。不同于泛泛而谈的系统需求,这里我们特别针对Ubuntu 22.04进行优化配置。

首先检查系统架构和资源情况:

# 检查系统架构 uname -m # 查看CPU核心数 nproc # 查看内存大小 free -h

CloudCanal社区版对硬件的基本要求如下:

组件最低配置推荐配置
CPU2核4核
内存4GB8GB
磁盘空间20GB50GB

注意:虽然CloudCanal官方支持多种Linux发行版,但在Ubuntu 22.04上表现最为稳定。避免在WSL或虚拟机环境中部署,可能遇到不可预知的问题。

接下来处理系统依赖项,这些往往是部署失败的隐藏杀手:

# 更新软件包索引 sudo apt-get update # 安装基础依赖 sudo apt-get install -y ca-certificates curl gnupg lsb-release

2. Docker环境精准配置

CloudCanal完全基于Docker运行,因此需要确保Docker环境配置正确。不同于简单的安装,我们需要关注版本兼容性和后续维护便利性。

Docker引擎安装(官方推荐方式):

# 添加Docker官方GPG密钥 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 设置稳定版仓库 echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装Docker引擎 sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

验证Docker安装是否成功:

sudo docker run --rm hello-world

版本兼容性特别说明

  • Docker 17.x 系列:基本可用,但可能遇到网络配置问题
  • Docker 18.x-20.x 系列:最佳选择
  • Docker 最新版:可用,但建议等待CloudCanal官方适配

配置Docker开机自启和当前用户免sudo:

sudo systemctl enable docker sudo usermod -aG docker $USER newgrp docker # 立即生效

3. 获取并解压CloudCanal安装包

CloudCanal社区版通过压缩包分发,我们需要从官方源获取最新版本并正确解压。

下载安装包(国内用户推荐使用阿里云OSS镜像):

# 创建安装目录 mkdir -p ~/cloudcanal && cd ~/cloudcanal # 下载最新版(示例链接,请替换为实际最新版) wget https://cloudcanal-community.oss-cn-hangzhou.aliyuncs.com/latest/cloudcanal.7z

安装解压工具并解压:

# 安装7z解压工具 sudo apt-get install -y p7zip-full # 解压安装包 7z x cloudcanal.7z

解压后的目录结构解析:

cloudcanal/ ├── console.tar # 控制台镜像 ├── docker-compose.yml # 编排配置文件 ├── mysql.tar # MySQL镜像 ├── prometheus.tar # 监控镜像 ├── scripts/ # 运维脚本目录 ├── shutdown.sh # 停止脚本 ├── startup.sh # 启动脚本 ├── sidecar.tar # Sidecar镜像 └── upgrade.sh # 升级脚本

4. 端口占用排查与解决方案

端口冲突是部署失败的首要原因。CloudCanal默认使用以下端口:

端口服务说明
8111Web控制台必须对外开放
9090Prometheus监控指标收集
55000Sidecar数据传输
25000MySQL内置数据库
55005Sidecar管理内部通信

全面端口检查方案

# 检查单个端口是否被占用(以8111为例) sudo lsof -i :8111 # 或者使用netstat sudo netstat -tulnp | grep 8111 # 批量检查所有关键端口 for port in 8111 9090 55000 25000 55005; do echo "检查端口 $port:" sudo lsof -i :$port || echo "端口可用" done

如果发现端口被占用,你有三个选择:

  1. 停止占用服务(推荐用于测试环境):

    # 找到占用进程ID sudo lsof -i :8111 # 停止该进程 sudo kill -9 <PID>
  2. 修改CloudCanal端口(生产环境推荐): 编辑docker-compose.yml,找到对应服务的端口映射部分修改,例如:

    ports: - "8112:8111" # 将外部访问端口改为8112
  3. 配置防火墙规则(高级用户):

    # 开放特定端口(以8111为例) sudo ufw allow 8111/tcp

5. 启动与验证服务

一切准备就绪后,可以启动CloudCanal服务了。启动过程大约需要1-2分钟,取决于机器性能。

标准启动流程

# 进入解压目录 cd ~/cloudcanal # 授予执行权限 chmod +x *.sh # 启动服务 ./startup.sh

启动成功后,你会在日志中看到类似输出:

[INFO] Starting CloudCanal containers... [SUCCESS] CloudCanal started successfully! Access URL: http://<your-server-ip>:8111

验证服务健康状态的三种方法

  1. 容器状态检查

    docker ps -a --filter "name=cloudcanal"

    预期应该看到5个容器(console、mysql、prometheus等)状态为"Up"

  2. 日志检查

    docker logs cloudcanal_console
  3. API健康检查

    curl -I http://localhost:8111/api/health

    应该返回HTTP 200状态码

6. 访问控制台与初始配置

服务启动成功后,可以通过浏览器访问控制台:

http://<你的服务器IP>:8111

使用以下默认凭证登录:

  • 用户名:test@clougence.com
  • 密码:clougence2021

初始环境已包含的便利配置

  • 预配置的测试MySQL数据源(cloudcanal_test_a和cloudcanal_test_b)
  • 内置的同步任务执行机器
  • 测试用的短信验证码:777777(开发环境专用)

首次登录后建议操作

  1. 立即修改管理员密码
  2. 检查"系统设置"中的网络配置
  3. 验证预置数据源连接状态

7. 常见问题与快速排错

即使按照教程操作,仍可能遇到一些典型问题。以下是快速诊断方法:

问题1:启动时报端口冲突

解决方案:

  • 使用./shutdown.sh停止服务
  • 按照第4节重新检查端口
  • 修改docker-compose.yml中的端口映射
  • 重新执行./startup.sh

问题2:控制台无法访问

排查步骤:

# 1. 检查防火墙 sudo ufw status # 2. 检查容器是否运行 docker ps # 3. 检查控制台日志 docker logs cloudcanal_console

问题3:MySQL连接失败

内置MySQL的访问方式:

mysql -uclougence -P25000 -p123456 -h127.0.0.1

如果连接失败,检查mysql容器是否正常运行。

问题4:磁盘空间不足

CloudCanal运行后可能占用较大空间,定期检查:

df -h docker system df

清理无用镜像和容器:

docker system prune -f

8. 生产环境优化建议

当CloudCanal用于生产环境时,需要考虑更多稳定性与安全性因素:

性能调优参数: 在docker-compose.yml中适当调整以下参数:

environment: - JAVA_OPTS=-Xms4g -Xmx4g # 根据机器内存调整

数据持久化配置: 默认数据存储在容器内,重启会丢失。建议挂载卷:

volumes: - ./data/mysql:/var/lib/mysql - ./logs:/opt/cloudcanal/logs

定期备份策略

  1. 备份MySQL数据:
    docker exec cloudcanal_mysql mysqldump -uclougence -p123456 --all-databases > backup.sql
  2. 备份配置文件:
    cp docker-compose.yml docker-compose.yml.bak

监控集成: Prometheus监控已内置,可通过以下地址访问:

http://<your-server-ip>:9090

配置Grafana展示监控数据(需额外安装):

  1. 下载CloudCanal提供的Grafana仪表板模板
  2. 导入到你的Grafana实例中

9. 升级与维护

当有新版本发布时,升级流程如下:

# 1. 下载新版安装包 wget https://cloudcanal-community.oss-cn-hangzhou.aliyuncs.com/latest/cloudcanal.7z # 2. 解压到新目录 mkdir ~/cloudcanal_new && cd ~/cloudcanal_new 7z x ../cloudcanal.7z # 3. 执行升级 ./upgrade.sh

升级脚本会自动处理:

  • 停止并删除旧容器
  • 清理旧镜像
  • 启动新版本服务

数据迁移注意事项

  1. 升级前备份重要数据
  2. 检查版本变更说明,了解不兼容变更
  3. 建议在低峰期进行升级操作

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询