docker关闭mysql端口映射的使用

ops/2025/3/4 21:35:45/

需求

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

系统部署说明

环境:

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

docker_10">新增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_34">方法一: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
dockercompose_44">方法二: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.ppmy.cn/ops/163129.html

相关文章

jvm内存不够,怎么重新分配

目录 第一章、问题分析1.1&#xff09;报错提示1.2&#xff09;报错分析 第二章、解决方式2.1&#xff09;修改IDEA的JVM内存设置2.2&#xff09; 修改Spring Boot项目的JVM内存设置 友情提醒: 先看文章目录&#xff0c;大致了解文章知识点结构&#xff0c;点击文章目录可直接…

HTML + CSS 题目

1.说说你对盒子模型的理解? 一、是什么 对一个文档进行布局的时候&#xff0c;浏览器渲染引擎会根据标准之一的css基础盒模型&#xff0c;将所有元素表示为一个个矩形的盒子。 一个盒子由四个部分组成: content&#xff0c;padding&#xff0c;border&#xff0c;margin 下…

【中值滤波器(Median Filter)详解】

中值滤波器&#xff08;Median Filter&#xff09;详解 目录 中值滤波器&#xff08;Median Filter&#xff09;详解一. 定义二. 原理三. 特点四. 使用技巧五. MATLAB示例代码1、示例1&#xff1a;处理含有椒盐噪声的灰度图像2、示例2&#xff1a;处理含有高斯噪声的图像3、示例…

第十四届蓝桥杯:(二分算法)字串简写

这道题我们的做法是开两个vector&#xff0c;分别把a和b字符的下标存进去&#xff0c;然后遍历a字符&#xff0c;我们要求长度必须大于等于k&#xff0c;我们可以画个图&#xff0c;也就是说b的下标减a的下标必须大于等于k-1 也就是b的下标必须大于等于a的下标k-1 我们用二分找…

自动化测试无法启动(java.net.SocketException)

在运行测试代码,对浏览器进行自动化操作时,遇到了以下问题,添加依赖,编写了测试代码,但是程序无法运行 这个有两种原因(我使用的是谷歌浏览器): 网络问题: 因为需要从GitHub上下载对应包,所以有时候可能会出现网络问题,这个时候可以打开VPN之后,重新对程序进行启动 浏览器版本…

深入探究Python机器学习算法:无监督学习(聚类算法如 K-Means、DBSCAN,降维算法如 PCA、SVD)

文章目录 深入探究 Python 机器学习算法&#xff1a;无监督学习聚类算法K - Means聚类算法流程K值选择方法聚类结果的稳定性分析和评估方法 层次聚类算法原理和实现过程连接方法特点和适用场景可视化方法 DBSCAN密度聚类算法原理优势和局限性 降维算法主成分分析&#xff08;PC…

搜索赋能:大型语言模型的知识增强与智能提升

引言 近年来&#xff0c;大型语言模型&#xff08;LLM&#xff09;取得了显著的进展&#xff0c;并在各个领域展现出强大的能力。然而&#xff0c;LLM也存在一些局限性&#xff0c;尤其是在知识库方面。由于训练数据的局限性&#xff0c;LLM无法获取最新的知识&#xff0c;也无…

苹果与小米破冰合作:iPhone 16e全面支持Find My网络,跨生态互通实现技术性突破

2025年2月28日&#xff0c;苹果公司正式宣布其中国区特供机型iPhone 16e全面接入Find My网络升级版&#xff0c;并与小米旗舰机型15 Ultra实现跨平台互联互通。 核心功能升级 1. Find My网络能力扩展 iPhone 16e搭载的Find My 3.0网络支持亚米级定位&#xff08;误差<1米…