Dockerfile 使用教程

这篇具有很好参考价值的文章主要介绍了Dockerfile 使用教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.Dockerfile

1.1 什么是Dockerfile

Dockerfile可以认为是 Docker镜像的描述文件,是由一系列命令和参数构成的脚本 。主要作用是 用来构建docker镜像的构建文件
Dockerfile 使用教程,常用技术,java,docker
  • 通过架构图可以看出通过DockerFile可以直接构建镜像

1.2 Dockerfile解析过程

Dockerfile 使用教程,常用技术,java,docker
构建镜像步骤:
1)使用:通过命令“touch Dockerfile”创建Dockerfile文件然后在文件里编写命令
    Dockerfile内容要求:
    1.每条保留字指令都必须为大写,且后面都要跟至少一个参数
    2.指令按照从上到下,顺序执行
    3.#表示注释
    4.每条指令都会创建一个新的镜像层,并对镜像进行提交
2)构建命令:“docker build -t 镜像名:版本 Dockerfile所在目录 ”
#“.”表示当前目录,会把Dockerfile所在的目录里的所有文件打包
docker build -t mycentos:1.0 .
    如果不想将Dockerfile所在目录的所有文件打包,可以使用 dockerignore过滤
    1.在 Dockerfile所在的目录创建 dockerignore文件
    2.然后在里面编写需要过滤的文件“#”为注释,参考如下:
/temp:排除根目录下任意子目录中所有名字以temp开头的文件或目录。如文件/somedir/temporary.txt会被排除。
//temp*:排除根目录下任意两级子目录中所有名字以temp开头的文件或目录。如文件/somedir/subdir/temporary.txt会被排除。
temp?:排除根目录下名字以temp开头,后面为任意一个字符的文件或目录。如目录/tempa和/tempb都会被排除。
Dockerfile 使用教程,常用技术,java,docker

1.3 Dockerfile的保留命令

官方说明: Dockerfile reference | Docker Docs
保留字
作用
FROM
当前镜像是基于哪个镜像的 第一个指令必须是FROM
MAINTAINER
镜像维护者的姓名和邮箱地址
RUN
构建镜像时需要运行的指令
EXPOSE
当前容器对外暴露出的端口号,仅仅是声明
WORKDIR
指定在创建容器后,终端默认登录进来的工作目录,一个落脚点
ENV
用来在构建镜像过程中设置环境变量
ADD
将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar包
COPY
类似于ADD,拷贝文件和目录到镜像中 将从构建上下文目录中<原路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
VOLUME
容器数据卷,用于数据保存和持久化工作,仅仅是声明
CMD
指定一个容器启动时要运行的命令 Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
ENTRYPOINT
指定一个容器启动时要运行的命令 ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及其参数
(1) FROM 命令
  • 基于那个镜像进行构建新的镜像,在构建时会自动从docker hub拉取base镜像 必须作为Dockerfile的第一个指令出现
  • 语法:
    FROM <image>
    FROM <image>[:<tag>] 使用版本不写为latest
    FROM <image>[@<digest>] 使用摘要 #例: FROM centos:7 FROM openjdk:8-jre
(2) MAINTAINER 命令
  • 镜像维护者的姓名和邮箱地址[废弃]
  • 语法:
    MAINTAINER <name>
(3) RUN 命令
  • RUN指令将在当前映像之上的新层中执行任何命令并提交结果。生成的提交映像将用于Dockerfile中的下一步
  • 语法:
    RUN <command> (shell form, the command is run in a shell, which by default is /bin/sh -c on Linux or cmd /S /C on Windows)
    RUN echo hello
    RUN ["executable", "param1", "param2"] (exec form)
    RUN ["/bin/bash", "-c", "echo hello"] #例: RUN ["yum","install","-y","vim"] RUN cd /root RUN mv apache-tomcat-8.5.61 tomcat
(4) EXPOSE 命令
  • 用来指定构建的镜像在运行为容器时对外暴露的端口
  • 语法:
    EXPOSE 80/tcp 如果没有显示指定则默认暴露都是tcp
    EXPOSE 80/udp #例: EXPOSE 8080
(5) CMD 命令
  • 用来为启动的容器指定执行的命令,在Dockerfile中只能有一条CMD指令。如果列出多个命令,则只有最后一个命令才会生效。
  • 注意: Dockerfile中只能有一条CMD指令。如果列出多个命令,则只有最后一个命令才会生效。
  • 语法:
    CMD ["executable","param1","param2"] (exec form, this is the preferred form)
    CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
    CMD command param1 param2 (shell form) #例: CMD ["java","-jar","xxx.jar"] CMD java -jar xxx.jar
(6) WORKDIR 命令
  • 用来为Dockerfile中的任何RUN、CMD、ENTRYPOINT、COPY和ADD指令设置工作目录。如果WORKDIR不存在,即使它没有在任何后续Dockerfile指令中使用,它也将被创建。
  • 语法:
    WORKDIR /path/to/workdir
    WORKDIR /a
    WORKDIR b
    WORKDIR c
    `注意:WORKDIR指令可以在Dockerfile中多次使用。如果提供了相对路径,则该路径将与先前WORKDIR指令的路径相对` #例: WORKDIR /root/data
(7) ENV 命令
  • 用来为构建镜像设置环境变量。这个值将出现在构建阶段中所有后续指令的环境中。
  • 语法:
    ENV <key> <value>
    ENV <key>=<value> ... #例:
    ENV BASE_DIR /apps/data
  • 坏境变量用法:$变量名称
(8) ADD 命令
  • 用来从context上下文复制新文件、目录或远程文件url,并将它们添加到位于指定路径的映像文件系统中。
  • 语法:
    ADD hom* /mydir/ 通配符添加多个文件
    ADD hom?.txt /mydir/ 通配符添加
    ADD test.txt relativeDir/ 可以指定相对路径
    ADD test.txt /absoluteDir/ 也可以指定绝对路径
    ADD url #例: ADD xxx.jar . ADD https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.68/bin/apache-tomcat-9.0.68.tar.gz
(9) COPY 命令
  • 用来将context目录中指定文件复制到镜像的指定目录中
  • 语法:
    COPY src dest
    COPY ["<src>",... "<dest>"] #例: COPY xxx.txt .
(10) VOLUME 命令
  • 用来定义容器运行时可以挂在到宿主机的目录
  • 语法:
    VOLUME ["/data"]
(11) ENTRYPOINT命令
  • 用来指定容器启动时执行命令和CMD类似
  • 语法:
    ["executable", "param1", "param2"]
    ENTRYPOINT command param1 param2 #例 ENTRYPOINT java -jar xxx.jar ENTRYPOINT ["java","-jar","xxx.jar"]
    ENTRYPOINT指令,往往用于设置容器启动后的 第一个命令 ,这对一个容器来说往往是固定的。 CMD指令,往往用于设置容器启动的第一个命令的 默认参数 ,这对一个容器来说可以是变化的。
Dockerfile 使用教程,常用技术,java,docker

1.4 Dockerfile构建springboot项目部署

1.准备springboot可运行项目
Dockerfile 使用教程,常用技术,java,docker
2.将可运行项目放入linux虚拟机中
Dockerfile 使用教程,常用技术,java,docker
3.编写Dockerfile
FROM openjdk:8
WORKDIR /ems
ADD ems.jar /ems
EXPOSE 8989
ENTRYPOINT ["java","-jar"]
CMD ["ems.jar"]
4.构建镜像
[root@localhost ems]# docker build -t ems .
5.运行镜像
[root@localhost ems]# docker run -p 8989:8989 ems
6.访问项目
http://10.15.0.8:8989/ems/login.html
Dockerfile 使用教程,常用技术,java,docker

文章来源地址https://www.toymoban.com/news/detail-679089.html

到了这里,关于Dockerfile 使用教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker安装启动、常用命令、应用部署、迁移备份、Dockerfile、Docker私有仓库

    目录 1.Docker安装与启动 1.1 安装Docker  1.2 设置ustc的镜像  1.3 Docker的启动与停止 2.常用命令 2.1 镜像相关命令 2.1.1 查看镜像 2.1.2 搜索镜像  2.1.3 拉取镜像 2.1.4 删除镜像 2.2 容器相关命令 2.2.1 查看容器 2.2.2 创建与启动容器 2.2.3 停止与启动容器 2.2.4 文件拷贝 2.2.5 目录挂载

    2024年01月22日
    浏览(59)
  • Docker容器与虚拟化技术:Docker镜像创建、Dockerfile实例

    目录 一、理论 1.Docker镜像的创建方法 2.Docker镜像结构的分层 3.Dockerfile 案例 4.构建Systemctl镜像(基于SSH镜像) 5.构建Tomcat 镜像 6.构建Mysql镜像 二、实验 1.Docker镜像的创建 2. Dockerfile 案例 3.构建Systemctl镜像(基于SSH镜像) 三、问题 1.nginx网页打不开  2.Apache容器启动一直为Ex

    2024年02月12日
    浏览(67)
  • 《Docker极简教程》--Dockerfile--Dockerfile的基本语法

    Dockerfile是一种文本文件,用于定义Docker镜像的内容和构建步骤。它包含一系列指令,每个指令代表一个构建步骤,从基础镜像开始,逐步构建出最终的镜像。通过Dockerfile,用户可以精确地描述应用程序运行环境的配置、依赖项安装、文件复制等操作。这使得应用程序的部署

    2024年02月20日
    浏览(48)
  • Docker容器与虚拟化技术:Dockerfile部署LNMP

    目录 一、理论 1.LNMP架构 2.背景 3.Dockerfile部署LNMP 3.构建Nginx镜像 4.构建MySQL容器 5.构建PHP镜像 6.启动 wordpress 服务  二、实验  1.环境准备 2.构建Nginx镜像 3.构建MySQL容器 4.构建PHP镜像 5.启动 wordpress 服务  三、问题 1.构建nginx镜像报错 2.构建php镜像报错 2.生成PHP镜像一直为Exit

    2024年02月04日
    浏览(52)
  • Docker 常用服务 安装使用 教程

    1、 安装mysql # 1.拉取mysql镜像到本地 docker pull mysql:tag (tag不加默认最新版本) # 2.运行mysql服务 docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:tag --没有暴露外部端口外部不能连接 docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:tag --暴露外部端口外部能连接(前提是防火

    2024年02月11日
    浏览(34)
  • Linux - Docker 安装使用 常用命令 教程

    官方文档地址: Get Started | Docker 中文参考手册: https://docker_practice.gitee.io/zh-cn/ 1.1 官方定义 最新官网首页 # 1.官方介绍 - We have a complete container solution for you - no matter who you are and where you are on your containerization journey. - 翻译: 我们为你提供了一个完整的容器解决方案,不管你是谁,不

    2024年02月11日
    浏览(37)
  • docker运行java程序的Dockerfile

    2024年01月18日
    浏览(40)
  • 【Docker】5、Dockerfile 自定义镜像(镜像结构、Dockerfile 语法、把 Java 项目弄成镜像)

    镜像结构 Dockerfile 语法 构建 Java 项目 ① 之前使用的镜像都是 DockerHub 官方提供的 ② 开发者需要将自己的微服务制作为镜像 镜像 是由 应用程序 及其需要的 系统函数库 、 环境 、 配置 、 依赖 打包而成。 📝 镜像是 分层结构 ,每一层称为一个 Layer 1️⃣ BaseImage 层:包含基

    2024年02月03日
    浏览(44)
  • Docker Dockerfile 使用方法

    目录 Dockerfile 介绍 构建mysql镜像 构建JDK镜像 当使用Docker构建容器化应用程序时,Dockerfile是一个用于定义容器镜像的文本文件。它包含了一系列指令,告诉Docker如何从基础镜像(通常是官方或自定义的操作系统镜像)构建出最终的镜像,以及如何配置容器中的环境、文件和应

    2024年02月13日
    浏览(41)
  • Docker | 使用Dockerfile制作镜像

    ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:Docker系列 ✨特色专栏: MySQL学习 🥭本文内容: Docker | 使用Dockerfile制作镜像 📚个人知识库: [Leo知识库]https://gaoziman.gitee.io/blogs/),欢迎大家访

    2024年02月04日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包