千家信息网

DockerFile构建过程是怎样的

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"DockerFile构建过程是怎样的",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"DockerFile构建过程是怎样的"吧!Doc
千家信息网最后更新 2026年11月02日DockerFile构建过程是怎样的

这篇文章主要讲解了"DockerFile构建过程是怎样的",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"DockerFile构建过程是怎样的"吧!

DockerFile

DockerFile介绍

dockerfile 是用来构建docker镜像的文件!命令参数脚本!

构建步骤:

1、编写一个dockerfile文件

2、docker build 构建成为一个镜像

3、docker run 运行镜像

4、docker push 发布镜像( DockerHub 、阿里云镜像仓库!(分共有和私有))

查看一下官方是怎么做的?

很多官方的镜像都是基础包,很多功能没有,我们通常会自己搭建自己的镜像!

官方可以制作镜像,我们也可以!

DockerFile构建过程

基础知识:

1、每个保留关键字(指令)必须是大写字母

2、从上到下执行

3、#表示注释

4、每一个执行都会创建提交一个新的镜像层,并提交!

dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单!

Docker镜像已经逐渐成为了企业开发交付的标准,必须要掌握!

步骤:开发、部署、上线、运维......缺一不可

DockerFile: 构建文件,定义了一切的步骤,源代码

DockerImages: 通过 DockerFile 构建生成的镜像,最终发布和运行的产品(原来是jar包、war包)

Docker容器:容器就是镜像运行起来提供服务的

DockerFile的指令

以前去我们都是使用别人的,学习了指令后,我们来练习自己写一个镜像!

FROM # 基础镜像,一切从这里开始构建 如,centos
MAINTAINER # 镜像是谁写的,姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤,如tomcat镜像,这个tomcat压缩包! 添加内容
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 暴露端口配置(非常常用)
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD # 当构建一个被继承的 DockerFile ,这个时候就会运行 ONBUILD 的指令。是触发指令。
COPY # 类似ADD,将我们的文件拷贝到镜像中
ENV # 构建的时候设置环境变量!

实战测试

Docker Hub中 99%的镜像都是从这个基础镜像过来的 FROM scratch ,然后配置需要的软件和配置来进行构建。

创建一个自己的centos

# 1 编写DockerFile的文件
[root@dockertest dockerfile]# cat mydockerfile-centos
FROM centos
MAINTAINER qls<1223344@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "-----end----"
CMD /bin/bash

# 2 通过文件构建镜像
# 命令 docker build -f dockerfile文件路径 -t 镜像名:[tag]
Successfully built 8563498e0ad3
Successfully tagged mycentos:0.1

# 3 测试运行

对比:之前的原生的centos

我们增加之后的镜像

我们可以列出本地镜像的变更历史

我们平时拿到一个镜像,可以研究一下它是怎么做的了。

CMD 和 ENTRYPOINT的区别

CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令

测试cmd


# 编写DockerFile 文件
[root@dockertest dockerfile]# vim dockerfile-cmd-test
FROM centos
CMD ["ls","-a"]

# build 构建镜像
[root@dockertest dockerfile]# docker build -f dockerfile-cmd-test -t cmdtest .
...
Successfully built 8a6998147175
Successfully tagged cmdtest:latest

# run运行,发现ls -a命令生效了
[root@dockertest dockerfile]# docker run 8a6998147175
.
..
.dockerenv
bin
dev
etc
home
lib
lib64

# 想追加一个命令 -l ls -al
[root@dockertest dockerfile]# docker run 8a6998147175 -l
docker: Error response from daemon: OCI runtime create failed: container_linux.go:370: starting container process caused: exec: "-l": executable file not found in $PATH: unknown.

# cmd的情况下 -l 替换了 CMD ["ls","-a"]命令,但是-l不是命令,所以报错!

测试 ENTRYPOINT

[root@dockertest dockerfile]# vim dockerfile-cmd-entrypoint
FROM centos
ENTRYPOINT ["ls","-a"]
[root@dockertest dockerfile]# docker build -f dockerfile-cmd-entrypoint -t entrypoint-test .
Sending build context to Docker daemon 4.096kB
Step 1/2 : FROM centos
---> 300e315adb2f
Step 2/2 : ENTRYPOINT ["ls","-a"]
---> Running in d309ff728d2a
Removing intermediate container d309ff728d2a
---> e4c1e1e6d384
Successfully built e4c1e1e6d384
Successfully tagged entrypoint-test:latest
[root@dockertest dockerfile]# docker run e4c1e1e6d384
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

# 我们的追加命令,是直接拼接在我们的 ENTRYPOINT 命令的后面!
[root@dockertest dockerfile]# docker run e4c1e1e6d384 -l
total 0
drwxr-xr-x 1 root root 6 Jan 22 01:26 .
drwxr-xr-x 1 root root 6 Jan 22 01:26 ..
-rwxr-xr-x 1 root root 0 Jan 22 01:26 .dockerenv
lrwxrwxrwx 1 root root 7 Nov 3 15:22 bin -> usr/bin
drwxr-xr-x 5 root root 340 Jan 22 01:26 dev
drwxr-xr-x 1 root root 66 Jan 22 01:26 etc
drwxr-xr-x 2 root root 6 Nov 3 15:22 home
lrwxrwxrwx 1 root root 7 Nov 3 15:22 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Nov 3 15:22 lib64 -> usr/lib64
drwx------ 2 root root 6 Dec 4 17:37 lost+found
drwxr-xr-x 2 root root 6 Nov 3 15:22 media
drwxr-xr-x 2 root root 6 Nov 3 15:22 mnt
drwxr-xr-x 2 root root 6 Nov 3 15:22 opt
dr-xr-xr-x 124 root root 0 Jan 22 01:26 proc
dr-xr-x--- 2 root root 162 Dec 4 17:37 root
drwxr-xr-x 11 root root 163 Dec 4 17:37 run
lrwxrwxrwx 1 root root 8 Nov 3 15:22 sbin -> usr/sbin
drwxr-xr-x 2 root root 6 Nov 3 15:22 srv
dr-xr-xr-x 13 root root 0 Jan 20 02:39 sys
drwxrwxrwt 7 root root 145 Dec 4 17:37 tmp
drwxr-xr-x 12 root root 144 Dec 4 17:37 usr
drwxr-xr-x 20 root root 262 Dec 4 17:37 var
[root@dockertest dockerfile]#

Dockerfile 中很多命令都十分相似,需要对比测试来了解它们!

实战:Tomcat镜像

1、准备镜像文件 tomcat 压缩包,jdk的压缩包

2、编写dockerfile文件,官方命名 Dockerfile,buile时会自动寻找这个文件,不需要-f指定了!

FROM centos
MAINTAINET qls<1234454@qq.com>

COPY readme.txt /usr/local/readme.txt

ADD jdk-8u60-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.0.27.tar.gz /usr/local

RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_60
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.0.27
ENV CATALINA_BASE /usr/local/apache-tomcat-8.0.27
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-8.0.27/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.0.27/bin/logs/catalina.out

3、构建镜像

# docker build -t diytomcat .

4、启动镜像

5、访问测试

6、发布项目(由于做了卷挂载,在本地直接编写项目就可以发布)


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>




hello,qls


Hello World!

<%
System.out.println("----my test web logs----")
%>

发现:项目部署成功,可以直接访问ok!

感谢各位的阅读,以上就是"DockerFile构建过程是怎样的"的内容了,经过本文的学习后,相信大家对DockerFile构建过程是怎样的这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

镜像 命令 文件 运行 时候 容器 测试 过程 指令 基础 官方 步骤 项目 学习 内容 开发 配置 只有 实战 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 疫情对互联网科技公司影响 互联网核心科技是什么 港股互联网科技股 互联网 的科技创新 科技大学互联网专业好不好 广州慧亚互联网科技怎么样 银川新华互联网科技职业技术培训学校图片 南山科技园互联网公司有哪些 贵州叶脉互联网科技有限公司所属行业 互联网与医疗科技 皮皮虾互联网科技有限公司 互联网科技快讯热点 下一代互联网重大应用科技园 南京一网一红互联网科技有限公司 新氧科技和美国互联网有关系吗 抖集互联网科技技术咨询 中国互联网公司的科技投入 恒生互联网科技趋势 北京瑞云互联网科技有限公司 颐高云石互联网科技 科技平台互联网 朗新科技与工业互联网 有马互联网科技 卓越科技(互联网 ) 云电互联网科技 中正互联网科技招聘 互联网科技公司实习生 新兴科技互联网创新大赛颁奖典礼 互联网科技包装股 北京军民互联网科技公司
0