当前位置: 首页 > news >正文

Docker高级管理--Dockerfile镜像制作

目录

一:Docker 镜像管理

1:Docker 镜像结构

2:Dockerfile介绍

二:Dockerfile 语法基础

1:基础指令

2:环境设置指令

3:文件操作指令

4:执行命令指令

5:网络和暴露端口指令

6.容器挂载指令

三:dockerfile案例

1.构建nginx容器


一:Docker 镜像管理

Docker 镜像除了是 Docker 的核心技术之外,也是应用发布的标准格式。一个完整的 Docker 镜像可以支撑一个 Docker 容器的运行,在 Docker 的整个使用过程中,进入一个已经定型的容器之后,就可以在容器中进行操作,最常见的操作就是在容器中安装应用服务。 如果要把已经安装的服务进行迁移,就需要把环境以及搭建的服务生成新的镜像。本案例将介绍如何创建 Docker 镜像。

1:Docker 镜像结构

镜像不是一个单一的文件,而是有多层构成。可以通过 docker history 命令査看镜像中各层内容及大小,每层对应着Dockerfile 中的一条指令。Docker镜像默认存储在/var/lib/docker/<storage-driver>目录中。容器其实是在镜像的最上面加了一层读写层, 在运行容器里做的任何文件改动,都会写到这个读写层。如果删除了容器,也就删除了其最上面的读写层,文件改动也就丢失了。Docker 使用存储驱动管理镜像每层内容及可读写层的容器层。Docker 镜像是分层的,下面这些知识点非常重要。

  • Dockerfile 中的每个指令都会创建一个新的镜像层;
  • 镜像层将被缓存和复用;
  • 当 Dockerfile 的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效;
  • 某一层的镜像缓存失效,它之后的镜像层缓存都会失效;
  • 镜像层是不可变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然会包含该文件,只是这个文件在 Docker 容器中不可见了。

2:Dockerfile介绍

Dockfile 是一种被 Docker 程序解释的脚本,Dockerfile 由多条的指令组成,每条指令对应Linux 下面的一条命令。Docker 程序将这些 Dockerfile 指令翻译成真正的 Linux 命令。Dockerfile有自己书写格式和支持的命令,Docker 程序解决这些命令间的依赖关系,类似于Makefile。Docker 程序将读取 Dockerfile,根据指令生成定制的镜像。相比镜像这种黑盒子,Dockerfile 这种显而易见的脚本更容易被使用者接受,它明确的表明镜像是怎么产生的。有了 Dockerfile,当有定制额外的需求时,只需在 Dockerfile 上添加或者修改指令,重新生成镜像。

二:Dockerfile 语法基础

Dockerfile 是一个文本文件,其中包含了一系列用于构建 Docker 镜像的指令。通过编写Dockerfile,可以自动化地创建自定义的 Docker 镜像。以下为你详细介绍 Dockerfile 的常用语法:

1:基础指令

(1)FROM

指定基础镜像,所有的 Dockerfile 都必须以 FROM 指令开头,它定义了新镜像基于哪个基础镜像构建。

(2)MAINTAINER(已弃用,推荐使用LABEL)

用于指定镜像的维护者信息。不过在较新的 Docker 版本中,推荐使用 LABEL 指令来替代。

LABEL

为镜像添加元数据,这些元数据可以是任何信息,如作者、版本、描述等,方便对镜像进行管理和识别。

2:环境设置指令

(1)ENV

设置环境变量,这些环境变量会在容器运行时持续存在,并且可以被容器内的应用程序使用。

(2)ARG

定义在构建镜像时可以传递的参数,这些参数只在镜像构建过程中有效

3:文件操作指令

(1)CPOY

将本地文件或目录复制到镜像中。

(2)ADD

与 COPY 类似,也是将文件或目录复制到镜像中,但 ADD 还支持从远程 URL 下载文件和自动解压文件

(3)WORKDIR

设置工作目录,后续的 RUN、CMD、ENTRYPOINT、COPY 和 ADD 等指令都会在这个工作目录下执行。

4:执行命令指令

(1)RUN

在构建镜像的过程中执行命令,常用于安装软件包、配置环境等操作。

(2)CMD

为容器提供默认的执行命令。一个 Dockerfile 中只能有一个 CMD 指令,如果有多个,只有最后一个会生效。当使用 docker run 启动容器时,如果没有指定其他命令,就会执行 CMD 指定的命令。

(3)ENTRYPOINT

配置容器启动时执行的命令,与 CMD类似,但 ENTRYPOINT 的命令不会被 docker run 后面的命令覆盖,而是将 docker run 后面的命令作为参数传递给 ENTRYPOINT 命令。

5:网络和暴露端口指令

(1)EXPOSE

声明容器在运行时会监听的端口,但这只是一个声明,并不会实际进行端口映射。在使用 dockerrun 启动容器时,需要使用-p或-P 选项进行端口映射。

6.容器挂载指令

创建一个可以从本地主机或其他容器的挂载点,用于持久化数据或共享数据。

三:dockerfile案例

1.构建nginx容器

(1)拉取centos7镜像

(2)创建dockerfile工作目录

(3)创建dockerfile

(4)编写启动脚本

(5)用dockerfile创建镜像

(6)启动容器

(7)访问nginx网站

http://192.168.10.101:8080

http://www.lqws.cn/news/496711.html

相关文章:

  • 【科技公司的管理】
  • 【目标检测】图像处理基础:像素、分辨率与图像格式解析
  • Spring AI框架的实战应用指南
  • vscode 插件
  • 以玄幻小说方式打开深度学习词嵌入算法!! 使用Skip-gram来完成 Word2Vec 词嵌入(Embedding)
  • 显示任何结构的数组对象数据【向上自动滚动】
  • 七层网络模型与电脑通信比喻
  • Typora无限续
  • [创业之路-438]:行业 - 互联网+X技术发展趋势、关键技术简介、行业发展趋势
  • 【第二章:机器学习与神经网络概述】03.类算法理论与实践-(2)朴素贝叶斯分类器
  • 【7】图像变换(上)
  • FPGA基础 -- Verilog 驱动强度(drive strength)与电荷强度(charge strength)
  • 黄晓明考博落榜,本人回应
  • react gsap动画库使用详解之scroll滑动动画
  • 2025年CSS最新高频面试题及核心解析
  • 16.数据聚合
  • LINUX 623 FTP回顾
  • 设计模式精讲 Day 12:代理模式(Proxy Pattern)
  • 手撕 Decoder
  • 将RESP.app的备份数据转码成AnotherRedisDesktopManager的格式
  • react gsap动画库使用详解之text文本动画
  • 山洪灾害智能监测站系统解决方案
  • 通过apache共享文件
  • 渗透测试指南(CSMSF):Windows 与 Linux 系统中的日志与文件痕迹清理
  • XSD是什么,与XML关系
  • D2554探鸽协议,sensor属性,回调
  • 关于 pdd:anti_content参数分析与逆向
  • 前端面试记录
  • Flask框架index.html里引用的本地的js和css或者图片
  • C#采集电脑硬件(CPU、GPU、硬盘、内存等)温度和使用状况