返回顶部
首页 > 资讯 > 服务器 >Dockerfile构建自定义镜像的实现
  • 921
分享到

Dockerfile构建自定义镜像的实现

2024-04-02 19:04:59 921人浏览 泡泡鱼
摘要

目录前言 Dockerfile简介 Dockerfile构建镜像的流程 Dockerfile使用 前言 前面文章中使用docker运行容器使用的镜像都是从dockerhub上远程p

前言

前面文章中使用docker运行容器使用的镜像都是从dockerhub上远程pull下来的,那么我们能不能构建自己的镜像呢?答案是肯定滴,可以通过Dockerfile构建自己的镜像,Dockerfile本身并不难,就是一堆命令,让小编觉得有难度的地方是如何使用Dockerfile的这些命令从更高一层的角度上更好的去构建自己的镜像,我们就一起来看看吧。

Dockerfile简介

Dockerfile其实就是一个文件,该文件的名字就是Dockerfile,当然也可以不用这个名字,在构建镜像时指定名字即可,但是约定俗称使用Dockerfile,Dockerfile的主要作用就是帮助我们构建一个自定义镜像,因此Dockerfile也称为镜像构建文件或者镜像描述文件。

可能会有小伙伴问了,在dockerhub上官方提供了很多镜像已经基本满足了所有的服务,为什么还要自定义镜像呢?使用Dockerfile自己构建镜像就可以将自己的应用打包成镜像,运行镜像就可以直接运行我们自定义的一些功能的服务了。

举个简单的例子,在dockerhub上下载Centos7的镜像,官方提供的镜像是没有vim这一功能的,因此我们可以基于官方的基础的centos镜像构建自己的镜像来实现运行centos容器时里面自动安装vim这一功能了。

Dockerfile构建镜像的流程

在介绍Dockerfile构建镜像流程前需要知道一个重要概念---上下文(context)目录,Dockerfile所在的目录被称为上下文目录。

docker是CS架构,使用Dockerfile构建镜像时使用的命令是docker build,当在客户端的操作系统中执行该命令时,docker引擎会将Dockerfile所在的目录中的所有数据打包发送给docker服务端,因此Dockerfile所在的目录中最好只包含构建当前镜像所需的文件,服务端运行一行Dockerfile中的命令就会产生一个临时镜像存在docker cache中(如果不想要产生临时镜像在docker build后加--no_cache参数),运行到最后一行的时候会得到一个最终的镜像。如下图所示:

Dockerfile使用

首先说一下Dockerfile构建镜像的命令:


# 命令格式:docker build -t 镜像名:tag Dockerfile所在路径
docker build -t mycentos:01 .

下面就来介绍一下在Dockerfile中常用的命令,注意注意,在Dockerfile中所有的命令都是大写的哦~。

FROM 镜像名:tag  :Dockerfile中第一条命令,表示基于哪个镜像进行构建镜像。虽然是构建自定义镜像,但是这个自定义镜像也是在官方提供的基础镜像之上进行的哦。


# Dockerfile
FROM centos:7  # 表示镜像基于centos7进行构建

RUN:构建镜像时需要运行的命令,可以跟shell命令。


# 第一种语法格式
RUN yum install -y vim

# 第二种语法格式
RUN ["yum", "install", "-y", "vim"]

EXPOSE:对外界暴露的端口,只有在镜像中暴露端口,才能在执行docker run命令时指定-p参数。


EXPOSE 9000  # 表示暴露9000端口

WORKDIR:指定进入容器时的路径,可以写多个,容器内没有指定的路径时会创建该路径,可以写多个,下一个路径是基于上一个路径的相对路径。


WORKDIR /data
WORKDIR /a

COPY:将context目录中指定文件复制到镜像的指定目录中.


# 命令格式:COPY 原路径(可以是绝对路径也可以是相对路径) 容器内目标路径
# 语法格式一
COPY /root/app/aa.txt /data 

# 语法格式二
COPY ["<src>", ..., "<dest>"] ---语法格式二

ADD:将context目录中指定文件复制到镜像的指定目录中,可以识别URL,自动下载URL对应的压缩包,可以将本地压缩包复制到镜像指定目录后自动解压。


# context目录中指定文件复制到镜像的指定目录中
ADD bb.txt /data

# 自动识别URL并下载到容器内指定目录
ADD https://www.python.org/ftp/Python/3.9.1/Python-3.9.1.tgz /data

# 将压缩包会自动解压到指定目录
ADD xxx.tar /data

ENTRYPOINT:用来指定容器启动时执行的命令,和CMD类似,往往用来设置容器启动后的第一个命令,可以写多个;可以被覆盖。


# ENTRYPOINT shell脚本 或者 ENTRYPOINT ["tail", "-f"...]
ENTRYPOINT tail -f bb.txt
# 覆盖
docker run --entrypoint=cat mycentos:08 /data/bb.txt

CMD:以最后一条CMD为准;可以被覆盖;可以为ENTRYPOINT传参数,与ENTRYPOINT结合使用(只能用JSON数组的形式)


# 只运行最后一条CMD
CMD ls $BASEDIR
CMD cat bb.txt

# 可以被覆盖,docker run后面的命令会直接覆盖Dockerfile中的CMD后的命令
docker run mycentos:09 ls /data

# 与ENTRYPOINT结合使用,为ENTRYPOINT传参,可以动态传递参数比如项目路径不变但是项目名称会变化,需要注意的时候,两者结合使用的时候必须使用json数组的格式。
ENTRYPOINT ["ls", "/data"]
CMD [/data/bb"]

或者


docker run mycentos:10 /data/bb/aa

到此这篇关于Dockerfile构建自定义镜像的实现的文章就介绍到这了,更多相关Dockerfile构建镜像 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网! 

--结束END--

本文标题: Dockerfile构建自定义镜像的实现

本文链接: https://lsjlt.com/news/133012.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Dockerfile构建自定义镜像的实现
    目录前言 Dockerfile简介 Dockerfile构建镜像的流程 Dockerfile使用 前言 前面文章中使用docker运行容器使用的镜像都是从dockerhub上远程p...
    99+
    2024-04-02
  • 如何使用Dockerfile创建自定义镜像
    要使用Dockerfile创建自定义镜像,请按照以下步骤: 创建一个新的文件夹,并在文件夹中创建一个名为Dockerfile的文...
    99+
    2024-04-02
  • Dockerfile自定义镜像 - 基于 java:8-alpine 镜像,将一个Java项目构建为镜像
      目录   一、前置知识 1.镜像结构 2.Dockerfile是什么 二、自定义一个 java 项目镜像 1.创建一个空目录,在这个空目录中创建一个文件,命名为 DockerFile,最后将 java 项目打包成 jar 包,放到这个目...
    99+
    2023-09-23
    Docker
  • Dockerfile怎么构建镜像
    这篇文章主要介绍“Dockerfile怎么构建镜像”,在日常操作中,相信很多人在Dockerfile怎么构建镜像问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Dockerfile怎么构建镜像”的疑惑有所帮助!...
    99+
    2023-06-27
  • docker中Dockerfile如何自定义tomcat镜像
    小编给大家分享一下docker中Dockerfile如何自定义tomcat镜像,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!   &...
    99+
    2023-06-04
  • docker怎么自定义镜像构建php7
    这篇文章主要讲解了“docker怎么自定义镜像构建php7”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“docker怎么自定义镜像构建php7”吧!首先进行...
    99+
    2024-04-02
  • 如何搭建Dockerfile构建镜像
    这篇文章给大家介绍如何搭建Dockerfile构建镜像,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。几乎所有的image都是通过Dockerfile生成出来的,使用Dockerfile可以让我们很轻松的构建出一个镜像,...
    99+
    2023-06-19
  • 使用Dockerfile构建docker镜像
    目录使用Dockerfile构建docker镜像 1、什么是Dockerfile?2、执行一个Dockerfile,构建镜像   今天我们看看Dockerfile...
    99+
    2024-04-02
  • Dockerfile构建一个PythonFlask镜像
    目录1.Python 程序2.Dockerfile3.开始构建一个小的demo1.Python 程序 from flask import Flask app = Flask(__n...
    99+
    2024-04-02
  • 【云原生 | 15】Dockerfile构建镜像实战
    🍁博主简介:         🏅云计算领域优质创作者         🏅2022年CSDN新星计划python赛道第一名         🏅2022年CSDN原力计划优质...
    99+
    2023-09-06
    云原生 docker 容器 运维 服务器
  • Docker进阶之构建自定义镜像实战指南
    目录一、什么是 Docker 镜像?二、自定义镜像的好处?三、构建自己的Centos四、RUN、CMD和ENTRYPOINT的区别五、【实战】Dockerfile制作tomcat镜像小结一、什么是 Docker 镜像? Docker 镜像可...
    99+
    2024-04-02
  • 怎么用Dockerfile定义一个镜像
    本篇内容介绍了“怎么用Dockerfile定义一个镜像”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!容器准备工作安装Docker,版本为1....
    99+
    2023-06-19
  • docker如何使用Dockerfile构建镜像
    本文小编为大家详细介绍“docker如何使用Dockerfile构建镜像”,内容详细,步骤清晰,细节处理妥当,希望这篇“docker如何使用Dockerfile构建镜像”文章能帮助大家解决疑惑,下面跟着小编...
    99+
    2024-04-02
  • 怎么使用dockerfile构建nginx镜像
    今天小编给大家分享一下怎么使用dockerfile构建nginx镜像的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下...
    99+
    2024-04-02
  • docker通过Dockerfile构建mysql镜像的方法
    构建Dockerfile ,路径 /docker/mysql FROM hub.c.163.com/library/mysql:5.7 #作者信息 MAINTAINER hu "**...
    99+
    2024-04-02
  • 【docker】基于Dockerfile构建mysqld服务镜像
    一 创建构建目录结构    # mkdir  -pv docker/mysql# cd docker/my...
    99+
    2024-04-02
  • Docker-compose+Dockerfile构建并启动php7.4镜像
    利用官方镜像+Dockerfile构建符合自己要求php7.4镜像 DockerFile apt官方源太慢时,切换apt源该dockerfile支持的php额外扩展 bcmatch event exif gd mysqli iconv pc...
    99+
    2023-09-01
    运维 php docker
  • 如何用dockerfile指令构建docker镜像
    本篇内容主要讲解“如何用dockerfile指令构建docker镜像”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用dockerfile指令构建docker镜像”吧!初识Dockerfile...
    99+
    2023-06-30
  • docker怎么通过Dockerfile构建mysql镜像
    本篇内容主要讲解“docker怎么通过Dockerfile构建mysql镜像”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“docker怎么通过Dockerfile构建mysql镜像”吧!构建Do...
    99+
    2023-06-30
  • dockerfile指令构建docker镜像的示例代码
    目录初识Dockerfile编写一个自己的docker 镜像:DockerFiledocker build . 命令查看镜像是如何生成的初识Dockerfile Dockerfile...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作