文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Docker基础:Dockerfile相关知识介绍

2024-12-01 13:33

关注

1、Dockfile介绍

Dockfile是一种可以被Docker解释的脚本文件,Dockerfile其实由若干条的指令组成,每条指令对应Linux下面的一条脚本命令。Docker应用程序可以将这些指令转化为Linux实际执行的命令。Docker读取Dockerfile文件的指令然后生成对应的docker镜像。通过dockerfile文件可以比较明确的描述出Docker镜像是如何一步一步构建的。有了Dockerfile,我们可以根据实际的因业务需要构建自己的镜像并可以添加一些需要执行的命令,这样可以避免后续的部署工作省去了需要重复敲命令的繁琐过程,大大节约了项目部署的时间成本

2、Dockerfile命令书写规则

Dockerfile的指令忽略大小写,不过建议使用大写,可以使用#作为指令的注释,每一行只能表示一条指令,每条指令可以携带多个参数。

3、Dockerfile的指令的分类

根据作用可以分为两种,构建指令和设置指令。​

构建指令:用于构建Docker镜像,其指定的操作不会在运行image的容器上执行,属于镜像的构建过程。。

设置指令:用于设置Docker镜像的属性,其指定的操作会在运行镜像的容器中执行。

4、Dockerfile指令组成

4.1 From(指定基础镜像)

Dockerfile必须指定FROM ,并且是第一行,属于构建命令。

表示基于那个基础镜像来构建

基础镜像可以是本地镜像也可以是远程仓库的镜像

语法: FROM image name

4.2 MAINTAINER(指定镜像作者信息)

用来指定构建镜像的作者信息,方便后续通过docker inspect命令查看,对镜像没有实际的影响。

语法: MAINTAINER author name

4.3 RUN (指定需要执行的shell命令)

该命令会在新创建的镜像上添加新的层面。docker build 时运行。

格式:RUN  command命令

4.4 CMD(设置容器启动时执行的操作)

可以是执行自定义脚本,也可以是执行系统命令,该指令只能在文件中存在一次,如果有多个,则只会执行最后一条。docker run时运行。

格式: CMD ["executable","param1","param2"] 或 CMD ["param1","param2"]

4.5 ENTRYPOINT(设置容器启动时执行的操作)

设置指令,指定容器启动时执行的命令,可以追加命令,但是只有最后一个ENTRYPOINT有效。

格式: ENTRYPOINT ["executable", "param1","param2"]

4.6 USER(设置容器执行shell命令的用户)

设置指令,设置启动该容器的用户,默认是root用户。

格式:USER root

4.7 EXPOSE(宿主和容器端口映射设置)

指定容器需要映射到宿主机器的端口。

格式: EXPOSE port

4.8 ENV(设置环境变量)

ENV指令可以用于为docker容器设置环境变量。

示例:ENV JAVA/HOME /usr/local/jdk1.8.0.25  指定java环境变量

4.9 ADD(文件复制命令)

复制文件命令,支持自动下载和解压

格式:ADD  源路径  目标路径

优点:在执行 <源文件> 为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 <目标路径>。

缺点:在不解压的前提下,无法复制 tar 压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。

说明:参数:destination 是容器内的路径。source 可以是 下载文件的URL 或者宿主主机的目录

4.10 COPY

类似ADD命令,将地文件拷贝到镜像中

本地目录为源目录时,官方推荐使用COPY。

4.11 VOLUME (指定挂载点)

创建一个可以从本地主机或其他容器挂载的挂载点,用来存放数据库和需要保持的数据等

4.12 WORKDIR(设置工作目录)

指定RUN、CMD与ENTRYPOINT 命令的工作目录。

格式:  WORKDIR  /path/to/workdir

5、完整的Dockerfile示例

5.1 创建mytomcat文件

FROM centos
#设置作者
MAINTAINER xiaoming admion@qq.com
#拷贝tomcat jdk 到镜像内并解压
ADD apache-tomcat-8.5.30.tar.gz /usr/local/tomcat
ADD jdk-8u202-linux-x64.tar.gz /usr/local/jdk
#设置工作目录
ENV MYPATH /usr/local
WORKDIR $MYPATH
#配置jdk 和tomcat的环境变量
ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_202
ENV CATALINA_HOME /usr/local/tomcat/apache-tomcat-8.5.30
ENV CATALINA_BASE /usr/local/tomcat/apache-tomcat-8.5.30
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#设置暴露的端口
EXPOSE 8080
#运行tomcat
CMD /usr/local/tomcat/apache-tomcat-8.5.30/bin/startup.sh && tail -f /usr/local/tomcat/apache-tomcat-8.5.30/logs/catalina.out

5.2 构建镜像

docker build -f mytomcat -t xm/tomcat:1.8 .

注意:docker build 命令最后要有一个.  

5.3 运行镜像​

docker run -d -p 8080:8080 --name mytomcat1.8
-v /usr/local/tomcat/logs:/usr/local/tomcat/apache-tomcat-8.5.30/logs/
-v /usr/local/tomcat/webapps:/usr/local/tomcat/apache-tomcat-8.5.30/webapps/
xm/tomcat:1.8

来源:IT技术分享社区内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯