Docker中忽略文件的实现

 更新时间:2023年10月09日 11:02:41   作者:极客  
Docker忽略文件是指在Docker镜像构建过程中,用于忽略指定文件或目录的一种机制,本文主要介绍了Docker中忽略文件的实现,具有一定的参考价值,感兴趣的可以了解一下

简介

在这篇文章中,我们将学习docker中的忽略文件。如何创建一个忽略文件,以及如何用各种方法将文件和文件夹添加到忽略文件中。所有先决条件的知识都以逐步的方式提到。在不了解代码行业对ignore文件的要求的情况下,不要直接跳到实现。

什么是被忽略的文件

忽略在不同系统中创建的文件,比如在Git仓库和Dockerifle中。这些文件有助于排除一些文件和目录在输出中被使用或复制。dockerfile的输出是图像,而git的输出可能是提交。DevOps中最常用的一些忽略文件的例子是 “gitignore “和 “dockerignore”。

要忽略的文件类型

主要任务是忽视事物。这些东西可以是不同类型的。比如它可以是python中的程序文件,也可以是ReactJS应用目录中的子目录。所有这些文件都在下面的列表中提到。

  • Directory
  • 文件 – 文本或程序文件
  • 子目录
  • .dockerignore本身

忽略这些文件的必要性是因为我们在最终产品中不再需要这些文件。这些文件只需要在主机上。

方法

在本节中,我们将学习如何通过将不同类型的文件添加到dockerignore文件中来排除它们。

所有要在dockerignore中出现的文件都应该提到docker context目录。Docker上下文是指所有需要添加到镜像中的有用文件所在的目录路径。大多数情况下,我们在构建镜像时使用.(点)作为docker context。

创建一个”.dockerignore “文件

.dockerignore “应该在你的Dockerfile存在的地方创建,否则它将无法工作。使用下面的命令来创建和排除各种类型的文件。

$touch .dockerignore

我们已经创建了一个目录结构,用于解释所有这些方法。

$tree -la

输出

.
├── dir1
├── dir2
├── dir3
│ ├── dir3_1
│ │ └── file_dir3_1.txt
│ ├── dir3_2
│ ├── file1_dir3.txt
│ └── file2_dir3.py
├── Dockerfile
├── .dockerignore
├── file1.txt
├── file2.sh
├── file3.py
├── no_ex1
└── No_ex2

5 directories, 10 files

打开ignore文件,从上面的目录结构中添加各种文件。

$nano .dockerignore

有一些规则可以在docker ignore文件中添加不同种类的文件、目录和注释。

在dockerignore文件中添加一个注释

在开始注释的时候使用#,会将该行视为一个注释。

#This is a comment in the .dockerignore file

忽略docker上下文或根目录级别的目录

dir1
dir2

这将忽略存在于docker上下文根层的目录(dir1 & dir2)。参考一下上面的目录结构。

忽略所有的文件和目录

排除所有名称中带有 “file “的文件和目录。这些文件将只来自根目录。

file*

忽略docker上下文中最多一级的子目录

忽略根目录下任何子目录中的文件以及目录。

#using */ to go one level down
*/file1_dir3.txt

忽略一个子目录,直到docker上下文的两层以下。

这与上述方法非常相似。

#using */*/ to go two level down
*/*/file_dir3_1.txt

要重新包括一个文件

有一些特殊情况,当我们想包括一个先前被排除在外的特定文件。

*.txt
!myfile.txt

假设你正在创建一个Python容器镜像。根目录包含了所有来自不同贡献者的python程序,所以你不能删除它们,你只能使用这个根目录。你可以执行下面的例子来排除所有的Python程序,然后重新包含你的Python程序文件。

第1步 – 假设根目录中充满了pythons文件

Prg1.py. Prg2.py, Prg3.py …………..and myprogram.py

第2步 − 创建一个.dockerignore文件,如下所示

#ignore all the python program files
*.py
#reinclude your python program file
!myprogram.py

这个过程会更快,而且不需要将不需要的东西COPY/ADD到docker容器镜像中。

实现

这里我们要创建一个完整的环境,使用Dockerfile、.dockerignore,并使用这些文件构建一个容器镜像。使用的目录结构与方法部分中提到的相同。

.
├── dir1
├── dir2
├── dir3
│ ├── dir3_1
│ │ └── file_dir3_1.txt
│ ├── dir3_2
│ ├── file1_dir3.txt
│ └── file2_dir3.py
├── Dockerfile
├── .dockerignore
├── file1.txt
├── file2.sh
├── file3.py
├── no_ex1
└── No_ex2

第1步 − 创建一个Docker文件并添加代码。

$nano Dockerfile

输入

#for the base image we are using busybox
FROM busybox:latest
#set a working directory
WORKDIR /my_context_directory
#copy everything from the build context to the working directory of the
#image
COPY . .
# list all the copied items
RUN ls -l

保存该文件。

第2步 − 创建一个.dockerignore文件

$nano .dockerignore

输入

#exclude the file_dir3_1.txt
file_dir3_1.txt
#exclude file from the root
file3.py
#exclude a directory one level down
*/dir3_2

保存该文件。

第3步 − 构建镜像并检查构建输出

$docker build -t test_ignore .

输出

Sending build context to Docker daemon 9.728kB
Step 1/4 : FROM busybox:latest
   ---> 9d5226e6ce3f
Step 2/4 : WORKDIR /my_context_directory
   ---> Running in 49d65f57621d
Removing intermediate container 49d65f57621d
   ---> 386c30f8f511
Step 3/4 : COPY . .
   ---> 75f65dace2be
Step 4/4 : RUN ls -l
   ---> Running in bd8bbec7d3f9
total 12
-rw-rw-r-- 1 root root 0 Dec 9 03:47 No_ex2
drwxrwxr-x 2 root root 4096 Dec 9 03:47 dir1
drwxrwxr-x 2 root root 4096 Dec 9 03:47 dir2
drwxrwxr-x 3 root root 4096 Dec 9 03:48 dir3
-rw-rw-r-- 1 root root 0 Dec 9 03:46 file1.txt
-rw-rw-r-- 1 root root 0 Dec 9 03:46 file2.sh
-rw-rw-r-- 1 root root 0 Dec 9 03:47 no_ex1
Removing intermediate container bd8bbec7d3f9
   ---> 084bb699260f
Successfully built 084bb699260f
Successfully tagged test_ignore:latest

输出显示,除了dockerignore文件中的文件外,所有的文件都被复制到了容器镜像中。

总结

在这篇文章中,我们对”.dockerignore “文件进行了360度的全面探讨。排除、包括,以及这个文件的重要性都被清楚地说明了。为了亲身体验这个主题,我们创建了不同的环境,并通过上述方法来实现。

到此这篇关于Docker中忽略文件的实现的文章就介绍到这了,更多相关Docker 忽略文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Logshark调试Logstash及Filebeat pipelines使用详解

    Logshark调试Logstash及Filebeat pipelines使用详解

    这篇文章主要为大家介绍了Logshark调试Logstash及Filebeat pipelines使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • spring-boot构建docker镜像上传仓库的示例教程

    spring-boot构建docker镜像上传仓库的示例教程

    这篇文章主要介绍了spring-boot构建docker镜像上传仓库,受限创建一个简单spring-boot-web项目,查看镜像上传仓库这时候有两种解决方案,对docker镜像上传仓库相关知识感兴趣的朋友跟随小编一起看看吧
    2022-12-12
  • 内网环境下registry搭建步骤详解

    内网环境下registry搭建步骤详解

    这篇文章主要为大家介绍了内网环境下的registry搭建步骤详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Linux Centos下使用脚本安装Docker的方法

    Linux Centos下使用脚本安装Docker的方法

    这篇文章主要介绍了Linux Centos下使用脚本安装Docker的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Docker常用命令详解

    Docker常用命令详解

    这篇文章主要介绍了Docker常用命令详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Docker 基础网络配置详解

    Docker 基础网络配置详解

    这篇文章主要介绍了Docker 基础网络配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • 如何为Go程序创建一个最小的Docker Image详解

    如何为Go程序创建一个最小的Docker Image详解

    这篇文章主要给大家介绍了关于如何为Go程序创建一个最小的Docker Image的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-11-11
  • 使用jib打包docker镜像实战

    使用jib打包docker镜像实战

    这篇文章主要介绍了使用jib打包docker镜像实战,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Docker中搭建配置Git环境的过程

    Docker中搭建配置Git环境的过程

    工作中遇到了需要在Docker环境中操作GitLab仓库的场景,需要事先在Docker中搭好Git环境,但是很多朋友不是很清楚Docker配置Git环境的过程,今天通过本文给大家详细介绍下,需要的朋友参考下吧
    2021-08-08
  • Docker学习之基于Dockerfile搭建JAVA Tomcat运行环境的方法

    Docker学习之基于Dockerfile搭建JAVA Tomcat运行环境的方法

    本篇文章主要介绍了Docker学习之基于Dockerfile搭建JAVA Tomcat运行环境的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-02-02

最新评论