Docker之Dockerfile构建镜像

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

Docker之Dockerfile构建镜像,部署,docker,linux,运维

  🎉🎉欢迎来到我的CSDN主页!🎉🎉

🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚

🌟推荐给大家我的博客专栏《Docker之Dockerfile构建镜像》。🎯🎯

🎁如果感觉还不错的话请给我关注加三连吧!🎁🎁

Docker之Dockerfile构建镜像,部署,docker,linux,运维

前言

        在上一期有关Docker的博客分享中我们学习到了Docker的一些数据卷和数据卷容器的一些基本的使用以及概念性的学习。本次的博客给大家带来的是有关Docker中的Dockerfile的学习。

一、什么是Dockerfile构建镜像

1. 基本概述

        Dockerfile是一个文本文件,其中包含一组用于自动化Docker镜像构建的指令和配置。通过编写Dockerfile,用户可以定义镜像的内容、环境和运行时配置。构建过程基于这个Dockerfile文件,并通过Docker引擎执行一系列指令来生成最终的Docker镜像。

2.  Dockerfile指令和它们的作用:

2.1 From :指定基础镜像,构建新镜像的起点。

FROM ubuntu:20.04

2.2 MAINTAINER: 标识镜像的维护者。

MAINTAINER Your Name <your.email@example.com>

2.3 RUN: 在镜像中执行命令,用于安装软件包、更新系统等。

RUN apt-get update && apt-get install -y nginx

2.4 COPY/ADD: 将文件或目录从构建上下文复制到镜像中。

COPY ./app /app

2.5 WORKDIR: 设置工作目录,后续的命令将在该目录下执行

WORKDIR /app

2.6 EXPOSE: 声明容器运行时要监听的端口。

EXPOSE 80

2.7 CMD: 提供容器默认的执行命令,可以被docker run时的参数覆盖。

CMD ["nginx", "-g", "daemon off;"]

2.8 ENTRYPOINT: 设置容器启动时执行的命令,不可被docker run时的参数覆盖。

ENTRYPOINT: 设置容器启动时执行的命令,不可被docker run时的参数覆盖。

简单示例

        通过编写Dockerfile,用户可以定义从基础镜像到最终镜像的整个构建过程,确保应用程序在Docker容器中正确运行。构建镜像的命令通常是使用docker build,并在构建上下文中包含Dockerfile文件。例如:

docker build -t my_custom_image:tag .

         上述命令将使用当前目录的Dockerfile构建一个名为my_custom_image的Docker镜像,并指定了一个标签tag

3.  基本结构

        Dockerfile 由一行行命令语句组成,并且支持以 # 开头的注释行。
        一般的,Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。
Dockerfile的基本结构
部分 命令
基础镜像信息
FROM
维护者信息
MAINTAINER
镜像操作指令
RUN ENV COPY ADD EXPOSE WORKDIR ONBUILD USER
VOLUME
容器启动时执行指
CMD ENTRYPOINT

图解说明 

Docker之Dockerfile构建镜像,部署,docker,linux,运维

二、示例使用及说明、

1. 构建镜像文件

        接下来为大家讲解如何去根据需求构建一个自定义的镜像文件供自己使用,构建镜像时必须得有一个基础的镜像。我们这里使用的是Centtos(原本没有携带东西),我们输入指令

vim Dockerfile文件进行新建及编辑

vim Dockerfile

         输入的内容如下

FROM centos

MAINTAINER 2081718134@qq.com

WORKDIR /test

COPY spring.jar /test
#1.指定基础镜像,并且必须是第一条指令
FROM centos:latest
#2.指明该镜像的作者和其电子邮件
MAINTAINER xx "xx@qq.com"
#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /usr/local/java
#4.一个复制命令,把jdk安装文件复制到镜像中,注意:jdk*.tar.gz使用的是相对路径
COPY spring.jar /test

        输入完成之后按esc按键,输入;wq保存并且退出。接下来是我们进行构建镜像。

输入指令:docker build -t spring:v1 .

Docker之Dockerfile构建镜像,部署,docker,linux,运维

 Docker之Dockerfile构建镜像,部署,docker,linux,运维

         我们然后我们进行查看我们刚才构建的镜像文件。

输入指令:docker images

Docker之Dockerfile构建镜像,部署,docker,linux,运维

         我们进入我们的镜像文件的容器中

输入命令:docker run -it spring:v1

Docker之Dockerfile构建镜像,部署,docker,linux,运维

        我们可以输入指令:ls查看我们文件下所存在的文件 

Docker之Dockerfile构建镜像,部署,docker,linux,运维

         我们运行这个jar包文件,输入指令:java -jar spring.jar

Docker之Dockerfile构建镜像,部署,docker,linux,运维

        无法运行的原因是因为我们使用的数基础镜像centos没有启动jar包的jdk,因此启动jar该需要我们下载所需的jdk文件。 

2.  镜像运行

        接下来我们需要去下载我们的jdk环境变量,我们输入指令:vim /etc/profile 进行配置环境变量 

Docker之Dockerfile构建镜像,部署,docker,linux,运维

         配置jdk环境变量内容

#java environment
export JAVA_HOME=/javaxl/jdk1.8.0_151(jdk解压路径)
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

         这是我们之前在centos中安装时的步骤,在Docker中不一样。

ADD jdk-8u221-linux-x64.tar.gz /test

ENV JAVA_HOME=/test/jdk1.8.0_221

ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV PATH=$JAVA_HOME/bin:$PATH

         我们在我们的镜像配置文件中添加上述的内容在后面,但首先我们先要导入我们的jdk的压缩包和jre的压缩包。

 Docker之Dockerfile构建镜像,部署,docker,linux,运维

        我们对其镜像文件Dockerfile进行编辑 

Docker之Dockerfile构建镜像,部署,docker,linux,运维

         我们将镜像文件重新编译一遍

Docker之Dockerfile构建镜像,部署,docker,linux,运维

        我们进入该镜像文件中进行查看文件 

Docker之Dockerfile构建镜像,部署,docker,linux,运维

         接下来是检查我们安装的jdk是否生效

Docker之Dockerfile构建镜像,部署,docker,linux,运维

         接下下我们可以测试运行spring.jar包

Docker之Dockerfile构建镜像,部署,docker,linux,运维

         我们接下来进行运行项目,我们运行时不是使用run因为我们是等容器打开后再运行因此使用的cmd命令。

CMD ["java -jar spring.jar"] 

Docker之Dockerfile构建镜像,部署,docker,linux,运维

        我们在重新构建一个镜像文件 

Docker之Dockerfile构建镜像,部署,docker,linux,运维

        我们在运行这个文件 

Docker之Dockerfile构建镜像,部署,docker,linux,运维

         我们重新编辑一下我们的Dockerfile文件,重新构建一个镜像文件并且运行

Docker之Dockerfile构建镜像,部署,docker,linux,运维

Docker之Dockerfile构建镜像,部署,docker,linux,运维

3. 镜像优化

        在我们的开发过程中jdk是我们必不可少的,但是在我们的运行项目中所需的是jre,因此接下来的操作就是将jdk修改为jre进行一系列的优化。下面我们首先修改Dockerfile文件内容,然后构建镜像文件

FROM centos

MAINTAINER 2081718134@qq.com

WORKDIR /test

COPY spring.jar /test

ADD jre-8u391-linux-x64.tar.gz /test

ENV JAVA_HOME=/test/jre1.8.0_391

ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV PATH=$JAVA_HOME/bin:$PATH

CMD java -jar spring.jar

Docker之Dockerfile构建镜像,部署,docker,linux,运维

Docker之Dockerfile构建镜像,部署,docker,linux,运维

Docker之Dockerfile构建镜像,部署,docker,linux,运维

         我们接下来就是访问项目,首先清除掉所有的容器,然后创建对应的容器进行运行使用,最后再网页进行访问。

Docker之Dockerfile构建镜像,部署,docker,linux,运维

Docker之Dockerfile构建镜像,部署,docker,linux,运维

         我们接下来的操作时将我们的镜像文件上传到我们的仓库之中,但是默认的仓库是docker.io/library/spring的官网仓库,需要我们去注册。但是我们可以使用阿里的仓库进行上传,上传快还方便。

网址:容器镜像服务 (aliyun.com)

Docker之Dockerfile构建镜像,部署,docker,linux,运维

         我们选择个人版示例进行新建对其进行一系列的操作。我们进行一系列操作后的界面如下

Docker之Dockerfile构建镜像,部署,docker,linux,运维

         我们使用前需要登陆我们的阿里账号

Docker之Dockerfile构建镜像,部署,docker,linux,运维

        我我们直接执行该命令,然后在输入我们的之前设置的密码即可。 

 Docker之Dockerfile构建镜像,部署,docker,linux,运维Docker之Dockerfile构建镜像,部署,docker,linux,运维

        我们对其创建一个命名空间 

Docker之Dockerfile构建镜像,部署,docker,linux,运维

Docker之Dockerfile构建镜像,部署,docker,linux,运维

 Docker之Dockerfile构建镜像,部署,docker,linux,运维

         我们新建完命名空间之后我们还要去新建一个仓库,用于我们上传镜像文件。

Docker之Dockerfile构建镜像,部署,docker,linux,运维

Docker之Dockerfile构建镜像,部署,docker,linux,运维

        我们创建好仓库之后,镜像版本中没有任何东西,需要我们进行手动的推送上去。 推送的操作网页上有

Docker之Dockerfile构建镜像,部署,docker,linux,运维

        给我们要上传的镜像取一个别名。 

 Docker之Dockerfile构建镜像,部署,docker,linux,运维

 Docker之Dockerfile构建镜像,部署,docker,linux,运维

         我对其要上传的镜像修改为我们阿里的仓库地址

Docker之Dockerfile构建镜像,部署,docker,linux,运维

         上述图片是修改上传的网址路径,我们在查看我们的镜像。 

Docker之Dockerfile构建镜像,部署,docker,linux,运维

         我们在将其这个进行进行推送到我们的仓库中

Docker之Dockerfile构建镜像,部署,docker,linux,运维

         我们可以在我们的仓库中查看我们的镜像

Docker之Dockerfile构建镜像,部署,docker,linux,运维

         下载镜像输入指令

docker pull +镜像名+版本即可


 🎉🎉本期的博客分享到此结束🎉🎉

📚📚各位老铁慢慢消化📚📚

🎯🎯下期博客博主会带来新货🎯🎯

🎁三连加关注,阅读不迷路 !🎁

Docker之Dockerfile构建镜像,部署,docker,linux,运维文章来源地址https://www.toymoban.com/news/detail-800737.html

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

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

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

相关文章

  • Docker-Dockerfile构建镜像

    Dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像,另外,使用 Dockerfile 去构建镜像好比使用 pom 去构建 maven 项目一样,有异曲同工之妙 centos alpine 1. 空间大小差异, alpine 默认 5M 左右, centos 等都在 200M 左右。 2. 默认软件包差异, alpin

    2024年01月17日
    浏览(31)
  • 【docker】Dockerfile构建镜像常用指令:

    一、常用命令: Dockerfile是一个文本文件,包含了一条条的指令,在基于指定的镜像上,一条指令构建一层,最终构建出一个新的镜像。 作用 备注 格式 FROM 指定基础镜像 指定基于哪个镜像开始构建 FROM image:tag MAINTAINER 作者信息 标明这个dockerfile是谁写的(已弃用) M

    2024年02月13日
    浏览(31)
  • Docker 解析:使用 Dockerfile 自动构建镜像

    简介 Docker 容器是使用 基础 镜像创建的。一个镜像可以是基本的,只包含操作系统的基本要素,也可以包含一个准备好启动的复杂的预构建应用程序堆栈。 在使用 Docker 构建镜像时,每个操作(例如执行的命令,比如 apt-get install)都会形成一个新的层叠在之前的层之上。然

    2024年03月26日
    浏览(43)
  • Docker 项目如何使用 Dockerfile 构建镜像?

    1.1、Docker 简介 :讲述 Docker 的起源、它是如何革新现代软件开发的,以及它为开发者和运维团队带来的好处。重点强调 Docker 的轻量级特性和它在提高应用部署、扩展和隔离方面的优势。 本文已收录于,我的技术网站 ddkk.com,有大厂完整面经,工作技术,架构师成长之路,等

    2024年01月16日
    浏览(52)
  • 【云原生 · Docker】轻松学会dockerfile构建镜像

    目录 🍉dockerfile是什么 🍉镜像的缓存特性 🍉dockerfile命令 🍒FROM 🍒RUN 🍒CMD 🍒LABEL 🍒EXPOSE 🍒ENV 🍒ADD 🍒COPY 🍒ENTRYPOINT 🍒VOLUME 🍒USER 🍒WORKDIR 🍒ARG 🍒ONBUILD 🍒STOPSIGNAL     🦐博客主页:大虾好吃吗的博客     🦐专栏地址:云原生专栏 docker中并不建议用户通过com

    2024年02月08日
    浏览(45)
  • Docker进阶:容器数据卷与Dockerfile构建镜像(发布)

    💖The Begin💖点点关注,收藏不迷路💖 1、完成数据持久化和共享数据,docker容器中的数据,同步到本地。 2、重要数据back_up 特点: 实时生效、数据卷可在容器之间共享和重用数据、数据卷中的更改不会包含在镜像更新中、数据卷的生命周期会一直延续到没有容器使用它为止

    2024年02月09日
    浏览(37)
  • 【Docker】如何编写Dockerfile,深入理解 Dockerfile:构建精简且高效的容器镜像

    Docker 是一种轻量级的容器化技术,使得应用程序和它们的依赖可以被打包到一个容器中,方便在不同环境中运行。Dockerfile 是用于定义 Docker 镜像的文本文件,其中包含了一系列的指令,这些指令描述了镜像中应该包含哪些内容和如何配置。 在开始编写 Dockerfile 之前,确保你

    2024年01月24日
    浏览(36)
  • Docker基础入门:容器数据卷与Dockerfile构建镜像(发布)

    💖The Begin💖点点关注,收藏不迷路💖 1、完成数据持久化和共享数据,docker容器中的数据,同步到本地。 2、重要数据back_up 特点: 实时生效、数据卷可在容器之间共享和重用数据、数据卷中的更改不会包含在镜像更新中、数据卷的生命周期会一直延续到没有容器使用它为止

    2024年02月10日
    浏览(37)
  • Docker技术入门| Part03:Dockerfile详解(Dockerfile概念、Dockerfile 指令、使用Dockerfile构建镜像)

    Docker镜像原理 Docker镜像是由特殊的文件系统叠加而成 最底端是bootfs,并使用宿主机的bootfs 第二层是root文件系统rootfs,称为base image 然后再往上可以叠加其他的镜像文件 统文件系统(UnionFile System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统的视角,这样就隐

    2024年02月09日
    浏览(33)
  • 【云原生】Docker—Dockerfile写法与用法以及dockerfile简介与构建镜像详解【附加实战】

      Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令(Instruction)和操作命令;每一条指令构建一层镜像,因此每一条指令的内容,就是描述该层镜像应当如何构建(也就是你要执行的操作命令)。  dockerfile是纯文本文件;  dockerfile是用来

    2024年01月18日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包