容器化部署mariadb(dockerfile详解)
镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像。这个脚本就是 DockerfileDockerfile。一开始必须要指明所基于的镜像名称,接下来一般会说明维护者信息;后面则是镜像操作指令,例如 RUN 指令。每执行一条RUN指令,镜像添加新的一层,并提交;最后是CMD指令,来指明运行容器时的操作命令。
·
镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像。这个脚本就是 Dockerfile
Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令、容器启动执行指令。
一开始必须要指明所基于的镜像名称,接下来一般会说明维护者信息;后面则是镜像操作指令,例如 RUN 指令。
每执行一条RUN 指令,镜像添加新的一层,并提交;最后是CMD 指令,来指明运行容器时的操作命令
容器化部署mariadb
1.新建一个目录
mkdir -p /root/dockerfile
2.搭建本地yum源
mount /dev/cdrom /mnt/
mkdir -p /root/dockerfile/centos7-2009
cp -r /mnt/* /root/dockerfile/centos7-2009
umount /mnt/
3.切换到dockerfile目录
cd /root/dockerfile
4.编写repo文件
vi local.repo # 在dockerfile目录里编写
[centos]
name=centos7-2009
baseurl=file:///opt/centos7-2009
gpgcheck=0
enabled=1

5.在编辑一个脚本来设置mariadb的配置
vi run.sh
#!/bin/bash
mysql_install_db --user=root #初始化mariadb
mysqld_safe --user=root & #启动mariadb等待8秒
sleep 8
mysqladmin -u root password 'root' 设置mariadb的密码
mysql -uroot -proot -e "grant all on *.* to 'root'@'%' identified by 'root'; #赋予权限
flush privileges;" #刷新权限

6.下载我主页的centos7.9-2009镜像包传到虚拟机里使用
不会的可以私信我
7. 编写dockerfile文件
vi dockerfile-mariadb
FROM centos:centos7.9.2009
RUN rm -rf /etc/yum.repos.d/*
COPY centos7-2009 /opt/centos7-2009
ADD local.repo /etc/yum.repos.d/
RUN yum install -y mariadb-server
ADD run.sh /opt/
RUN chmod +x /opt/run.sh
RUN /opt/run.sh
EXPOSE 3306
CMD [ "mysqld_safe","--user=root" ]
FROM 这个镜像的妈妈是谁?(指定基础镜像)
MAINTAINER 告诉别人,谁负责养它?(指定维护者信息,可以没有)
RUN 你想让它干啥(在命令前面加上RUN即可)
ADD 给它点创业资金(COPY文件,会自动解压)
WORKDIR 我是cd,今天刚化了妆(设置容器内部的当前工作目录)
VOLUME 给它一个存放行李的地方(设置卷,挂载主机目录)
EXPOSE 它要打开的门是啥(指定对外的端口)
CMD 奔跑吧,兄弟!(指定容器启动后的要干的事情)
COPY 复制文件
ENV 环境变量
ENTRYPOINT 容器启动后执行的命令(注意和CMD区别)
总共需要这些

8.开始执行执行容器化部署
docker build -t mariadb:v1.0 -f dockerfile-mariadb . #注意最后面的.是使用相对路径当前目录的意思

9.执行完成后开始验证
查看docker镜像里有没有部署完成
docker images

10.创建这个镜像的容器进入mariadb
docker run -itd --name=mariadb mariadb:v1.0
docker ps #查看容器有没有运行和容器的id

11.进入容器
docker exec -it d65c /bin/bash
# d65c是容器id只输入前四位就好

12.进入mariadb
密码是之前在run.sh脚本是更改的可以看一下脚本的内容

成功使用dockerfile容器化部署mariadb
更多推荐
所有评论(0)