DockerFile构建及命令学习
一、初识DockerFile
自定义一个dockerFile来创建一个自定义docker镜像,在生成镜像的时候就已经进行挂载数据卷,命令脚本如下

构建过程示例截图:
创建一个dockerfile文件,命名可以随便写,但后续最好命名为Dockerfile 官方默认命名
文件中的内容,指令要求大写,每一层的指令都是一个镜像的一层。

运行镜像并创建容器挂载数据卷:

上面是容器内挂载的地址,验证是否同步到主机对应的绑定的文件下,通过 docker inspect 容器ID来查看元数据如下图:

然后进入对应绑定的主机地址如:查看数据卷是否得到同步

二、DockerFile介绍
Dockerfile是用来构建docker镜像的文件,是一个命令参数脚本
①、构建步骤:
1、编写一个dockerfile文件
2、docker build 构建成一个镜像
3、docker run 运行一个镜像
4、docker push 发布镜像 官方dockerHub或者阿里云镜像仓库
②、以centos为例,查看其dockerFile文件如下:

由上可以发现我们官方的镜像都是基础包,很多功能没有我们通常会搭建自己的镜像,比如我们的centos镜像很多命令用不了,加入我想用基本的命令然后还会加入 一些jdk、tomcat等环境,那么我们就要重新编写dockerFile文件了。
三、DockerFile构建过程
①、Dockerfile构建的结构

②、基础指令知识
1、每个保留关键字必须是大写字母
2、执行是从上到下的顺序
3、#标识注释
4、每一行指令都会创建一个新的镜像层,都会提交
小结:
DockerFile:构建文件、定义一系列步骤,源代码
DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品
Docker容器:容器就是镜像运行起来提供服务
三、DockerFile指令学习


四、使用DokerFile自定义构建一个centos镜像
注意:DockerHub中99%的镜像都是从From scratch这个基础镜像构建而来的,然后在ADD配置需要的软件及配置
脚本命令如下:
- FROM centos #基础镜像
- MAINTAINER denghuaijun<1286753432@qq.com> #作者
- ENV MYPATH /usr/local #环境配置
- WORKDIR $MYPATH #工作目录,就是以交互方式进去之后的默认目录,正常默认是根陌路,现在进入容器之后直接就到了MYPATH目录
- RUN yum -y install vim # 构建镜像时让其安装vim命令 ,精简版的centos是没有这些命令的通过重新构建添加这些命令包
- RUN yun -y install net-tools #同上安装telnet镜像
- EXPOSE 80 #对外暴漏80端口
- CMD echo $MYPATH
- CMD ECHO "......buid end...."
- CMD /bin/bash
构建镜像截图:

运行自己定义的镜像容器效果区别如下:

可以通过 docker history 容器ID 来查看镜像的构建历史如下(这样就可以去研究官网镜像是如何做的):

五、CMD和ENTRYPOINT命令区别


由上可知使用CMD则在后面“-l”替换了原有的dockerfile文件中的命令而使用ENTRYPOINT则会在原有命令后面追加

若此时在后面 使用 docker run 3c4c9621ed91 -l 命令,则不会报错进而展示对应的文件目录详情。
六、使用dockerFile制作tomcat镜像
第一步:准备镜像文件压缩包tomcat压缩包及jdk压缩包上传至主机服务器上

第二步:编写dockerfile文件,官方命名Dockerfile,build会自动寻找这个文件,就不需要-f指定文件路径(注意里面的压缩包及需要拷贝的文件要放在当前目录下)

第三步:启动镜像
docker run -d -p 8080:8080 -v /home/docker/webapps:/usr/local/apache-tomcat-9.0.38/webapps -v /home/docker/tomcat_logs:/usr/local/apache-tomcat-9.0.38/logs mytomcat
第四步:验证及发布
验证:访问tomcat地址主页出现,同时在宿主机中挂载目录及日志都存在,在容器中使用java -version验证jdk环境也已经配置安装
第五步:镜像发布
①、发布到DockerHub上

登录dockerHub地址成功如下:

登录成功之后就可以发布镜像(发布也是一层一层发布):

本文详细介绍了DockerFile的构建过程,包括初识DockerFile、DockerFile的结构和指令学习,并通过实例演示了如何自定义构建一个包含CentOS、JDK和Tomcat的镜像。此外,还探讨了CMD与ENTRYPOINT命令的区别,以及Docker镜像的历史查看。最后,展示了如何将自定义镜像发布到DockerHub。
2082

被折叠的 条评论
为什么被折叠?



