【docker】基于Dockerfile构建mysqld服务镜像
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,一 创建构建目录结构 # mkdir -pv docker/mysql# cd docker/mysql/二 写Dockerfile 文件 # vim Dockerfile
千家信息网最后更新 2026年11月02日【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安全错误
数据库的锁怎样保障安全
高科技互联网
互联网金融 科技
上海喔噻互联网科技
安控科技rtu产品工业互联网
互联网实体化科技化
南山科技园互联网公司有哪些
湖南诚度互联网科技有限公司
湖北码尼互联网科技有限公司电话
浙江互联网科技研学营
搜狐科技互联网
互联网科技资金流入
厦门江牛科技互联网
广州互联网高科技取餐柜
广西泛欧互联网科技有限公司
互联网的科技体现在哪里
科技互联网专业工作会议发言稿
互联网对科技影响
上海互联网科技园景观
黑龙江互联网科技公司
重庆科技产业互联网有哪些
咖啡网
重庆互联网络科技
礼当家互联网科技
远拓互联网科技
互联网科技论坛
华脉科技工业互联网产品
现代科技和互联网有关系吗
小米互联网科技园设置
互联网科技公司有风险吗
本届互联网大会上的黑科技