目录
环境准备:
(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