Dockerfile构建MySQL镜像(练习三)

发布于:2025-03-07 ⋅ 阅读:(131) ⋅ 点赞:(0)

目录

环境准备:

(1)保证拥有docker环境

(2)拥有centos基础镜像

(2)可以联网

1.创建工作目录

2.在工作目录中创建并编写Dockerfile文件

3.准备脚本

4.使用Dockerfile生成镜像

5.使用新镜像运行容器测试

6.验证

6.导出保存


环境准备:

(1)保证拥有docker环境

docker -v

(2)拥有centos基础镜像

docker images | grep centos

(2)可以联网

ping -c3 www.baidu.com

1.创建工作目录

mkdir mysql ; cd mysql

2.在工作目录中创建并编写Dockerfile文件

介绍:MariaDB 是一款开源的关系型数据库管理系统,与 MySQL 高度兼容可作为 MySQL 的替代品。

vim dockerfile
#定义基础镜像
FROM centos:latest

#维护者信息(可缺省)
MAINTAINER devopsxjh

#添加备注信息(可缺省)
LABEL user="devopsxjh"\
      gronp="CSDN"

#暴露端口
EXPOSE 3306

#设置数据库用户变量, 让其支持中文
ENV MYSQL_ROOT=root \
    MYSQL_PASS=admin123 \
    LC_ALL=en_US.UTF-8

#更改时区并更换yum源安装mariadb
RUN <<EOT bash
rm -rf /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install mariadb mariadb-server net-tools
#清理yum缓存, 减少镜像占用空间
yum clean all && rm -rf /var/cache/yum/*
EOT

#上传脚本
ADD *.sh /root

#增加脚本权限
RUN <<END bash
chmod 775 /root/db_init.sh
RUN chmod 775 /root/run.sh
/root/db_init.sh
END

#启动容器时执行
CMD ["mysqld_safe"]

3.准备脚本

vim db_init.sh
#!/bin/bash
#初始化数据库指定文件所有者为mysql
mysql_install_db --user=mysql
sleep 2

#启动mysql,以守护进程的方式并放到后台运行
mysqld_safe &
sleep 2

#在命令行中执行sql语句(-e选项),设置用户密码
mysql -e "use mysql; grant all privileges on *.* to '$MYSQL_ROOT'@'%' identified by '$MYSQL_PASS' with grant option;"
mysql -e "use mysql; update user set password=password('$MYSQL_PASS') where user='$MYSQL_USER' and host='$(hostname)';"

#刷新授权
mysql -e "flush privileges;"

4.使用Dockerfile生成镜像

命令语法:

docker build [选项] 镜像名:标签 文件路径

docker build -t mariadb:t1 ./

5.使用新镜像运行容器测试

#运行容器镜像

docker run -d -p 43306:3306 --name mysql_t1 mariadb:t1

#查看容器是否启动

docker ps

#查看端口映射

netstat -anput|grep ':43306'

6.验证

#测试远程访问

mysql -uroot -p'admin123' -h 192.168.100.101 -P 43306

6.导出保存

docker save -o mariadb:t1 mariadb


网站公告

今日签到

点亮在社区的每一天
去签到