【docker】基于Dockerfile构建mysqld服务镜像
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,一 创建构建目录结构 # mkdir -pv docker/mysql# cd docker/mysql/二 写Dockerfile 文件 # vim Dockerfile
千家信息网最后更新 2025年11月11日【docker】基于Dockerfile构建mysqld服务镜像
一 创建构建目录结构
# mkdir -pv docker/mysql# cd docker/mysql/
二 写Dockerfile 文件
# vim Dockerfile #此处sshd:latest 为上篇文章中创建的镜 FROM sshd:latestMAINTAINER mykernel(www.mykernel.cn) #安装软件 RUN ENV DEBIAN_FRONTEND noninteractive apt-get update && \ apt-get -yq install mysql-server-5.6 pwgen && \ rm -rf /var/lib/apt/lists/* # 删除预安装的数据库文件 RUN rm -rf /var/lib/mysql/* # 添加文件夹下的 MYSQL 配置文件 ADD my.cnf /etc/mysql/conf.d/my.cnf ADD mysqld_charset.cnf /etc/mysql/conf.d/mysqld_charset.cnf ADD authorized_keys /root/.ssh/authorized_keys # 添加 MYSQL 的脚本 ADD import_sql.sh /import_sql.sh ADD run.sh /run.shRUN chmod 755 /*.sh # 设置环境变量,用户名以及密码 ENV MYSQL_USER adminENV MYSQL_PASS **Random** # 设置主从复制模式下的环境变量 ENV REPLICATION_MASTER **False** ENV REPLICATION_SLAVE **False** ENV REPLICATION_USER replica ENV REPLICATION_PASS replica # 设置可以允许挂载的卷,可以用来备份数据库和配置文件 VOLUME ["/etc/mysql", "/var/lib/mysql"] # 设置可以映射的端口,如果是从我们的 sshd 镜像继承的话,默认还会开启 22 端口 EXPOSE 3306 CMD ["/run.sh"]
三 准备Dockefile中需要的ADD的文件
# touch my.cnf mysqld_charset.cnf authorized_keys import_sql.sh run.sh
(1)my.cnf为mysql运行时候的主配置文件,需要根据自己的实际情况进行书写
(2)mysqld_charset.cnf为mysql运行时候的字符配置,需要根据自己的实际情况进行书写
(3) import_sql.sh
(4)run.sh 此处提供带主从复制和自定义密码的run文件
四 创建镜像
# docker build -t mysql:first .
五 测试
# sudo docker run -d -p 1027:22 -p 1026:3306 --name mysql mysql:first
通过xshell 连接进容器,查看服务器是否启动;此处直接使用mysql命令,便可以以root的身份进入,配置好相关用户之后使用关闭容器,docker commit进行提交。
通过mysql默认的用户名和用户密码远程连接mysqld 测试,默认用户为admin密码可以使用docker logs mysql查看。admin用户具有root的所有权限。
说明:每次如果是使用-P选项启动容器,每次stop容器之后再start,端口将会发生变化,所以建议使用-p指定固定的端口。可以减少修改iptables规则或者云服务器的安全策略
六 挂载mysql数据卷
# docker run -d -P -v /mydata/mysql:/var/lib/mysql mysql:first
其实mysql的dockerfile文件中已经使用了VOLUME 指令为容器创建一个一直有效的空间(不会因为删除容器而被删除),但是这个空间是新创建的,而且物理机上命令比较复杂。此处可以直接使用-v选项挂载一个宿主机现在的目录,而且容器可以直接访问该目录下的所有数据。
七 设置mysql默认用户的密码
默认的mysql密码在启动容器之后使用docker logs |查看。修改默认用户(admin)的密码:
# docker run -d -P -e MYSQL_PASS="your_pass" mysql:first
-e参数可以来设定容器内任意的环境变量。甚至覆盖已经存在的环境变量,或者是在Dockerfile中通过ENV设定的环境变量。
八 启用主从模式
创建mysql主容器
# docker run -d -e REPLICATION_MASTER=true -P -name mysql:first
创建mysql从容器(-link name:alias)
# docker run -d -e REPLICATION_SLAVE=true --link mysql:mysql mysql:first
注意:此处主容器的-name必须为mysql,否则会报错。
容器
文件
用户
密码
变量
环境
配置
数据
端口
主从
目录
镜像
服务
命令
实际
情况
数据库
时候
服务器
模式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全叠加数字货币股票
数据库报错1807
网络安全战略研究所所长
域名服务器名称
网络安全的关键技术包括
安卓魔盒服务器价格
北京界创网络技术
身份认证系统数据库格式
学生服务器能做公司网站吗
江苏直销服务器应用范围
考研软件开发方向
先学开发语言还是先学数据库
上海会计网络技术价格咨询
用jdbc数据库连接
把数据库的数据导出文件
中国由消费互联网转向硬核科技
记录小康工程国家数据库开发平台
sql数据库试讲
现在网络安全找工作注重
pe释放服务器版本iso
软件开发项目文档怎么写
无法连接到csgo内容服务器
网络安全提醒信息
服务器图片 png
服务器需要什么系统
吉林时代网络技术服务推广
rg100eaa打印服务器
用网络技术开展教研
网络安全与水文
软件开发团队人才招募