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

docker关闭mysql端口映射的使用

需求

项目中的数据库为mysql,如果将端口映射到宿主机上,容易被工具扫描出,且随着国产化的进程推进,mysql将不被允许。为了提高安全性与满足项目需求,这里采用隐藏mysql端口方式,不映射宿主机端口,仅允许docker容器间访问。

系统部署说明

环境:

  • Centos 7
  • Docker version 24.0.6
  • Docker Compose version v2.16.0

新增docker网络

由于我们需要新建指定ip的容器,docker默认网络是随机分配ip,无法实现需求。新建网络步骤如下

# 查看docker网卡
docker network ls 
# 查看具体信息,通常默认网卡为bridge
docker network inspect <网卡id> /<网卡NAME> 
docker network inspect bridge
# 创建网络,注意,不要和上面已经存在的网段相同
docker network create --subnet=172.18.0.0/16 myself_network

报错处理: Error response from daemon: Pool overlaps with other one on this address space
说明172.18网段已经被使用,需要修改一个网段,比如172.36,注意后续容器中使用的所有网段需要同步修改。

数据库部署

创建/sdb/db/data目录,并下载初始化数据库脚本test.sql,进入目录,将初始化脚本放在/sdb/db/data目录下。
PS:将数据库.sql文件映射到 MySQL 容器的 /docker-entrypoint-initdb.d/ 目录下,在容器首次启动时,文件会自动执行,重启容器将不再执行当前脚本。

方法一:docker run方式启动容器

直接在/sdb/db/data目录下执行以下docker run命令,启动容器,并初始化test.sql脚本。

# 使用以上创建的网络,给容器指定一个ip
docker run --name datacenter-mysql -e MYSQL_ROOT_PASSWORD=123456   -e TZ=Asia/Shanghai --network myself_network  -v /sdb/db/data/test.sql:/docker-entrypoint-initdb.d/test.sql  -v /sdb/db/data:/var/lib/mysql  --ip 172.18.0.136  -d mysql:8.0.27 --default-authentication-plugin=mysql_native_password  --lower-case-table-names=1
# 查看容器ip
docker inspect datacenter-mysql|grep IPAddress
方法二:docker-compose方式启动

在/sdb/db/data目录下创建docker-compose.yml文件,内容如下

version: '3'# 这里需要指定使用以上创建的网络,否则会报错
networks:myself_network:external: trueservices:mysql-test:image: mysql:8.0.27container_name: datacenter-mysqlenvironment:- MYSQL_ROOT_PASSWORD=123456- TZ=Asia/Shanghaivolumes:- /sdb/db/data/test.sql:/docker-entrypoint-initdb.d/test.sql- /sdb/db/data:/var/lib/mysqlcommand:- --default-authentication-plugin=mysql_native_password- --lower-case-table-names=1networks:my_custom_network:ipv4_address: 172.18.0.136restart: always

启动容器

docker-compose up -d

服务部署说明

配置完数据库固定ip,我们可以在服务中使用,启动容器的环境变量或配置文件都可以,docker-compose文件大致如下,具体不细展开。

version: '3.7'networks:myself_network:external: trueservices:web:image: "web:1.0"# 容器名container_name: "test-web"restart: alwaysports:- "80:80"networks:myself_network:# 注意:这个地址网段需要与数据库一致ipv4_address: 172.18.0.3# 启动数据中台Java服务端容器api:image: "api:1.0"# 容器名container_name: "test-api"restart: alwaysports:- "8080:8080"environment: # 这里可以设置环境变量,使用以上配置的mysql数据库ip端口DB_JDBC_URL: jdbc:mysql://127.18.0.136:3306/testDB_USERNAME: rootDB_PASSWORD: 123456networks:myself_network:# 注意:这个地址网段需要与数据库一致ipv4_address: 172.18.0.4

启动服务

docker-compose up -d
http://www.lryc.cn/news/546023.html

相关文章:

  • 关于对机器中的人工智能进行基准测试
  • CSS - 妙用Sass
  • MS模块创新
  • 私有化部署DeepSeek并SpringBoot集成使用(附UI界面使用教程-支持语音、图片)
  • MFC中CMutex类和CSingleLock类,配合使用疑惑
  • 残差收缩模块
  • HOW - 在Windows浏览器中模拟MacOS的滚动条
  • Unity 打包后EXE运行出现Field to Load il2cpp的一种情况
  • Windows 环境下 Nginx、PHP 与 ThinkPHP 开发环境搭建
  • Redis100道高频面试题
  • 登录服务器后如何找到对应的drupal所在的文件夹
  • win32汇编环境,窗口程序中使控件子类化的示例一
  • 专业工具,杜绝一切垃圾残留!
  • java 实现简易基于Dledger 的选举
  • 大数据“调味“ ,智慧“添香“,看永洪科技助力绝味食品数字化新征程
  • 【嵌入式】MQTT
  • vue原理面试题
  • office集成deepseek插件,office集成deepseek教程(附安装包)
  • 行业洞察|安踏、迪桑特、始祖鸟、昂跑、lululemon等运动户外品牌的「营销创新和会员运营」对比解读
  • 小鹏汽车申请注册“P7 Ultra”商标 或为P7车型升级版铺路
  • 数列极限入门习题
  • ubuntu部署gitlab-ce及数据迁移
  • 批量设置 Word 样式,如字体信息、段落距离、行距、页边距等信息
  • 【论文分析】语义驱动+迁移强化学习:无人机自主视觉导航的高效解决方案(语义驱动的无人机自主视觉导航)
  • JDK官网安装教程 Windows
  • MR30系列分布式I/O:高稳定与高精准赋能锂电池覆膜工艺革新
  • android 横竖屏适配工作总结
  • 离散傅里叶变换(Discrete Fourier Transform, DFT)及其在图像处理中的应用
  • 两周学习安排
  • vscode通过ssh远程连接(linux系统)不能跳转问题