广告
返回顶部
首页 > 资讯 > 服务器 >使用Dockerfile构建docker镜像
  • 319
分享到

使用Dockerfile构建docker镜像

2024-04-02 19:04:59 319人浏览 独家记忆
摘要

目录使用Dockerfile构建docker镜像 1、什么是Dockerfile?2、执行一个Dockerfile,构建镜像   今天我们看看Dockerfile

   今天我们看看Dockerfile创建的方法。

构建docker镜像,有两种方法:

1、一种是使用docker commit命令

2、另外一种是基于docker build命令和dockerfile文件

    通常情况下,dockerfile构建镜像比docker commit命令构建 镜像更加灵活,因此采用后者较多。

使用Dockerfile构建docker镜像

1、什么是Dockerfile?

    dockerfile是一个文件,它是使用DSL语法编写一个文件,之后使用docker build命令基于该dockerfile文件中的指令构建一个新的镜像。

    假设我们的代码是:


mkdir test

cd test

touch  Dockerfile

   不难看出,我们创建了一个test目录,并进入目录创建了dockerfile_test文件,这个目录就称之为我们的构建环境,Docker将这个环境称之为上下文(context)或者构建上下文,Docker会在构建镜像的时候将构建上下文和上下文中的文件和目录上传到Docker 守护进程,这样Docker守护进程就能直接访问你在镜像中存储的任何代码、文件或者其他数据。

   下面来看一个Docker file的内容:


# version: 0.0.1
FROM ubuntu:14.04
MaiNTAINER Yeyz  'yeyz@example.com'
RUN apt-get update
RUN apt-get install -y Nginx
RUN echo 'Hi, I am your container' > /root/test.html
EXPOSE 80

    从上面的文件内容中不难看出来,Dockerfile包含了一系列的命令,每个命令前面都需要用大写的关键字来进行标识。以#开头的内容,会被识别为注释。

    Docker大体上按照下面的顺序来执行Dockerfile中的命令,

1、Docker从基础镜像运行一个容器,每个DockerFile的第一个命令都应该是From,From指定了一个基础镜像,后续指令都在这个基础上执行。

2、执行一条指令,对容器作出修改

3、执行类似docker commit的操作,提交一个新的镜像层

4、Docker镜像再基于刚才提交的镜像运行一个容器

5、执行Dockerfile中的下一条指令,知道所有的容器指令都执行完成

    上面的过程中,任意一个步骤执行失败,都意味着目标镜像创建失败,但是因为目标镜像是一个一个镜像堆积的结果,其实我们得到了一个可以运行的镜像,只不过还没有达到最终的镜像的样子,这个特性对于调试镜像很重要。

    我们对上面的镜像进行解释:

Version:代表注释,表示版本

From指令,From指定了一个基础镜像ubuntu,说明我们的操作是在ubuntu这个基础镜像上进行的

Maintainer指令,这个指令代表的是镜像的作者,以及作者的电子邮件地址

RUN指令,RUN指令会在当前镜像中运行指定的命令,三条指令分别是更新apt仓库,安装nginx包,打印一条命令到指定的文件中。每条命令都会创建一个镜像层。如果该命令成功,这个镜像层就会提交,之后继续指定DockerFile中的下面一条指令。默认情况下,RUN命令会使用shell中的/bin/bash -c来执行后面的指令。

Expose指令,这条指令告诉容器内的应用程序使用容器的指定端口。当然,可以使用多个EXPOSE来向外面公开多个端口。

2、执行一个Dockerfile,构建镜像

我们执行刚才的Dockerfile,得到如下结果:


[root test]# docker build -t='yeyz:test0' .
Sending build context to Docker daemon 2.048 kB
Step 1/6 : FROM ubuntu:14.04
Trying to pull repository docker.io/library/ubuntu ... 
14.04: Pulling from docker.io/library/ubuntu
2e6e20c8e2e6: Downloading [>                                                  ] 539.1 kB/70.69 MB
95201152d9ff: Download complete 
5f63a3b65493: Download complete 

其中,-t选项是用来指定镜像和仓库名称的,yeyz为仓库名字,而test0为镜像名字。命令中的.代表了当前目录,Docker默认从本地目录中去寻找DockerFile,也可以替换成一个指定的git仓库源地址来指定DockerFile的位置。如下:

docker build -t='yeyz/test0'  xxxx.com:yeyz/test0

如果想要保留版本信息,可以指定一个标签,如下:

docker build -t='yeyz/test0:v1' .

如果我们只想上传某个目录下面的部分文件,可以创建一个.dockerignore的文件,每一行都是一个文件过滤匹配模式,这样,在生成镜像的时候,会自动过滤掉那些不需要的文件。

最终的返回值是一个镜像ID,我们拿到镜像ID之后,就可以使用docker run命令运行镜像。

3、Dockerfile构建缓存

   当我们第一次构建的Dockerfile出现问题的时候,需要再次构建,这个时候会执行相同的指令,假设我们修改了Dockerfile中第4行的内容,那么Docker会自动将前3行通过缓存的方式来进行加载,这会节省大量的时间。

    如果我们不想使用Dockerfile的缓存,则可以通过加上--no-cache参数来避免使用Dockerfile缓存。

4、查看镜像的构建历史

docker history可以查看构建好的镜像的构建历史,以及构建好的镜像的每一层。


[root@VM-16-13-Centos test]# docker images Mysql
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/mysql     latest              4f1413420360        7 weeks aGo         545 MB

[root@VM-16-13-centos test]# docker history 4f1413420360
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
4f1413420360        7 weeks ago         /bin/sh -c #(nop)  CMD ["mysqld"]               0 B                 
<missing>           7 weeks ago         /bin/sh -c #(nop)  EXPOSE 3306 33060            0 B                 
<missing>           7 weeks ago         /bin/sh -c #(nop)  ENTRYPOINT ["docker-ent...   0 B                 
<missing>           7 weeks ago         /bin/sh -c ln -s usr/local/bin/docker-entr...   34 B                
<missing>           7 weeks ago         /bin/sh -c #(nop) COPY file:f9202f6b715c0e...   13.1 kB             
<missing>           7 weeks ago         /bin/sh -c #(nop) COPY dir:2e040acc386ebd2...   1.12 kB             
<missing>           7 weeks ago         /bin/sh -c #(nop)  VOLUME [/var/lib/mysql]      0 B                 
<missing>           7 weeks ago         /bin/sh -c {   echo mysql-commUnity-server...   410 MB              
<missing>           7 weeks ago         /bin/sh -c echo "deb Http://repo.mysql.com...   55 B                
<missing>           7 weeks ago         /bin/sh -c #(nop)  ENV MYSQL_VERSION=8.0.2...   0 B                 
<missing>           7 weeks ago         /bin/sh -c #(nop)  ENV MYSQL_MAJOR=8.0          0 B                 
<missing>           7 weeks ago         /bin/sh -c set -ex;  key='A4A9406876FCBD3C...   2.61 kB             
<missing>           7 weeks ago         /bin/sh -c apt-get update && apt-get insta...   52.2 MB             
<missing>           7 weeks ago         /bin/sh -c mkdir /docker-entrypoint-initdb.d    0 B                 
<missing>           7 weeks ago         /bin/sh -c set -eux;  savedAptMark="$(apt-...   4.17 MB             
<missing>           7 weeks ago         /bin/sh -c #(nop)  ENV GOSU_VERSION=1.12        0 B                 
<missing>           7 weeks ago         /bin/sh -c apt-get update && apt-get insta...   9.34 MB             
<missing>           7 weeks ago         /bin/sh -c groupadd -r mysql && useradd -r...   329 kB              
<missing>           7 weeks ago         /bin/sh -c #(nop)  CMD ["bash"]                 0 B                 
<missing>           7 weeks ago         /bin/sh -c #(nop) ADD file:d2abb0e4e7ac177...   69.2 MB

以上就是使用Dockerfile构建docker镜像的详细内容,更多关于用Dockerfile构建docker镜像的资料请关注编程网其它相关文章!

--结束END--

本文标题: 使用Dockerfile构建docker镜像

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用Dockerfile构建docker镜像
    目录使用Dockerfile构建docker镜像 1、什么是Dockerfile?2、执行一个Dockerfile,构建镜像   今天我们看看Dockerfile...
    99+
    2022-11-12
  • docker如何使用Dockerfile构建镜像
    本文小编为大家详细介绍“docker如何使用Dockerfile构建镜像”,内容详细,步骤清晰,细节处理妥当,希望这篇“docker如何使用Dockerfile构建镜像”文章能帮助大家解决疑惑,下面跟着小编...
    99+
    2022-10-19
  • 使用Dockerfile怎么构建一个Docker镜像
    这篇文章将为大家详细讲解有关使用Dockerfile怎么构建一个Docker镜像,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Dockerfile是一个文本文件,其内包含了一条条的指令(In...
    99+
    2023-06-06
  • 使用Dockerfile如何构建一个docker镜像
    这篇文章给大家介绍使用Dockerfile如何构建一个docker镜像,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。使用Dockerfile构建docker镜像1、什么是Dockerfile?   ...
    99+
    2023-06-14
  • 如何用dockerfile指令构建docker镜像
    本篇内容主要讲解“如何用dockerfile指令构建docker镜像”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用dockerfile指令构建docker镜像”吧!初识Dockerfile...
    99+
    2023-06-30
  • 【docker】基于Dockerfile构建mysqld服务镜像
    一 创建构建目录结构    # mkdir  -pv docker/mysql# cd docker/my...
    99+
    2022-10-18
  • docker怎么通过Dockerfile构建mysql镜像
    本篇内容主要讲解“docker怎么通过Dockerfile构建mysql镜像”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“docker怎么通过Dockerfile构建mysql镜像”吧!构建Do...
    99+
    2023-06-30
  • 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
  • docker通过Dockerfile构建mysql镜像的方法
    构建Dockerfile ,路径 /docker/mysql FROM hub.c.163.com/library/mysql:5.7 #作者信息 MAINTAINER hu "**...
    99+
    2022-11-13
  • Dockerfile怎么构建镜像
    这篇文章主要介绍“Dockerfile怎么构建镜像”,在日常操作中,相信很多人在Dockerfile怎么构建镜像问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Dockerfile怎么构建镜像”的疑惑有所帮助!...
    99+
    2023-06-27
  • 怎么使用dockerfile构建nginx镜像
    今天小编给大家分享一下怎么使用dockerfile构建nginx镜像的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下...
    99+
    2022-10-19
  • dockerfile指令构建docker镜像的示例代码
    目录初识Dockerfile编写一个自己的docker 镜像:DockerFiledocker build . 命令查看镜像是如何生成的初识Dockerfile Dockerfile...
    99+
    2022-11-13
  • 如何搭建Dockerfile构建镜像
    这篇文章给大家介绍如何搭建Dockerfile构建镜像,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。几乎所有的image都是通过Dockerfile生成出来的,使用Dockerfile可以让我们很轻松的构建出一个镜像,...
    99+
    2023-06-19
  • Dockerfile构建一个PythonFlask镜像
    目录1.Python 程序2.Dockerfile3.开始构建一个小的demo1.Python 程序 from flask import Flask app = Flask(__n...
    99+
    2022-11-13
  • Docker镜像构建中docker commit怎么使用
    这篇“Docker镜像构建中docker commit怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Doc...
    99+
    2023-06-29
  • 如何使用docker file构建镜像
    这篇文章给大家分享的是有关如何使用docker file构建镜像的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 Docker File入门(一) 需求 入门使用docker...
    99+
    2022-10-19
  • Docker镜像构建之dockercommit的使用
    目录1、创建容器2、拷贝资源3、安装资源4、构建镜像5、使用构建的镜像创建容器我们可以通过公共仓库拉取镜像使用,但是,有些时候公共仓库拉取的镜像并不符合我们的需求。尽管已经从繁琐的部...
    99+
    2022-11-13
  • Dockerfile构建自定义镜像的实现
    目录前言 Dockerfile简介 Dockerfile构建镜像的流程 Dockerfile使用 前言 前面文章中使用docker运行容器使用的镜像都是从dockerhub上远程p...
    99+
    2022-11-12
  • 【云原生 | 15】Dockerfile构建镜像实战
    🍁博主简介:         🏅云计算领域优质创作者         🏅2022年CSDN新星计划python赛道第一名         🏅2022年CSDN原力计划优质...
    99+
    2023-09-06
    云原生 docker 容器 运维 服务器
  • jenkins怎么构建docker镜像
    Jenkins是一个持续集成和持续交付(CI/CD)工具,可以用来自动化构建、测试和部署应用程序。要在Jenkins中构建Docke...
    99+
    2023-10-27
    jenkins docker
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作