【docker】基于Dockerfile构建mysqld服务镜像
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,一 创建构建目录结构 # mkdir -pv docker/mysql# cd docker/mysql/二 写Dockerfile 文件 # vim Dockerfile
千家信息网最后更新 2025年02月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安全错误
数据库的锁怎样保障安全
网络安全接警中心
数据库分库分表技术高吗
软件开发项目报价
土壤数据库在哪个部门
提高公司网络安全的措施
腾讯云服务器安全隐私
护苗网络安全课堂教案
hp数据库服务器
服务器光网卡灯不亮
互联网属于高科技吗
检索网络技术服务
网络安全攻防案例论文
网络安全产品三所
软件开发培训学校福
阿里云rds 复制数据库
数据库中用户管理
网络安全需要多久评估一次
win10l连服务器
网络安全应急预案100周年
EPU安装数据库
服务器安全哪家公司的比较好
俄罗斯世界杯网络安全
萤石云显示服务器异常是什么意思
湖南网络安全适配中心
你想从事网络安全的哪个方向
召开网络安全与信息化 会议
七彩云安网络安全套
金华比奇网络技术卖游戏号
虹口区使用软件开发项目信息
服务器互相同步文件