目录

一: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.pswp.cn/diannao/88571.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/88571.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/88571.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字时代的“灵魂”之争:虚拟人形象的著作权困局与破局之道

首席数据官高鹏律师数字经济团队创作&#xff0c;AI辅助。 一、虚拟人的“数字生命”&#xff1a;一场关于“灵魂”的商业博弈 当一个虚拟偶像的“眼神”被复刻成千万个相似的数字面孔&#xff0c;当一段虚拟主播的“声音”被拆解为可交易的数据碎片——我们正在见证一个“数…

小型CI/CD搭建(TODO)

1 方案 因为是在国内&#xff0c;所以gitbub Actions&#xff0c;​​Azure DevOps​这些就直接拜拜了。 目前主流的大概是三种&#xff1a; 1 阿里云效/腾讯云CODING 2 GitLab CE GitLab Runner 3 Gitee Jenkins deepeseek比较了一下如下&#xff1a; 阿里云效 vs Git…

Android Studio flutter项目运行、打包时间太长

Android Studio&#xff1a;Android Studio Meerkat Feature Drop | 2024.3.2 Patch 1 flutter Sdk&#xff1a;3.29.3 系统&#xff1a;windows flutter sdk从2.10.5升级到3.29.3&#xff0c;但是Flutter 3.16开始新增了使用 Gradle声明式 plugins {} 块&#xff0c;gradle文…

【OpenGL学习】(六)图形添加纹理

文章目录 【OpenGL学习】&#xff08;六&#xff09;图形添加纹理纹理环绕纹理过滤纹理颜色与顶点颜色混合 OpenGL纹理介绍&#xff1a;https://learnopengl-cn.github.io/01%20Getting%20started/06%20Textures/ 【OpenGL学习】&#xff08;六&#xff09;图形添加纹理 项目…

allure安装

一、安装java 需要安装java环境&#xff0c;不安装的话在运行前会报错下列问题&#xff08;前提是安装了allure未安装java&#xff09; 1.官网地址&#xff1a;https://www.oracle.com/ 2.点击”Download Java“ 3.选择JDK正式版本&#xff08;需要jdk1.8&#xff09; 4.选择W…

SpringBoot基于JavaWeb的城乡居民基本医疗信息管理系统

概述 一个基于SpringBoot框架开发的JavaWeb医疗信息管理系统&#xff0c;采用了现代化的技术架构&#xff0c;功能全面&#xff0c;非常适合作为学习项目或二次开发的基础。 主要内容 该系统主要包含以下核心功能模块&#xff1a; ​​用户管理模块​​ 实现管理员、医生、…

SQL变量声明与赋值 分支 循环

– 变量 分支 循环 – declare 变量名 数据类型 – declare 关键字&#xff0c;作用声明变量 – 变量名&#xff1a;以开头 – 数据类型&#xff1a;数据库中支持的数据类型&#xff1a;int varchar(n) text char(n) nvarchar(n) nchar(n) declare name varchar(255)– 定义多…

AWS S3 可观测性最佳实践

AWS S3 介绍 AWS S3&#xff08;Amazon Simple Storage Service&#xff09;是一种可扩展的对象存储服务&#xff0c;提供高可用性、持久性和安全性。它允许用户存储和检索任意数量的数据&#xff0c;并通过简单的 Web 服务接口访问这些数据。S3 支持多种存储类别&#xff0c;…

Ubuntu下布署mediasoup-demo

一、引言 mediasoup是一个强大的SFU架构的WebRTC流媒体服务器&#xff0c;凭借其多功能性、高性能和可扩展性&#xff0c;mediasoup成为构建多方视频会议和实时流媒体应用程序的完美选择。它具有联播、SVC、传输BWE和更多尖端功能。本文介绍了mediasoup-demo在Ubuntu下的布署。…

【JVS更新日志】物联网、智能排产APS、企业计划、规则引擎6.25更新说明!

项目介绍 JVS是企业级数字化服务构建的基础脚手架&#xff0c;主要解决企业信息化项目交付难、实施效率低、开发成本高的问题&#xff0c;采用微服务配置化的方式&#xff0c;提供了低代码数据分析物联网的核心能力产品&#xff0c;并构建了协同办公、企业常用的管理工具等&…

解决git pull,push 每次操作输入账号密码问题

服务器每次git pull 的时候都需要输入账号密码&#xff0c;一劳永逸解决它。 解决方案&#xff1a; 找到项目下 .git /config 文件&#xff0c;然后打开&#xff0c;编辑 [rootiZbp11b24d3d7nc8uvjx9mZ .git]# ls branches config description FETCH_HEAD HEAD hooks i…

Netty:深入解析AbstractByteBufAllocator架构设计

AbstractByteBufAllocator 类结构分析 类结构概览 public abstract class AbstractByteBufAllocator implements ByteBufAllocator {// 静态常量static final int DEFAULT_INITIAL_CAPACITY 256;static final int DEFAULT_MAX_CAPACITY Integer.MAX_VALUE;// ...其他常量//…

Java 日志管理与分析

为什么需要日志 ■ 发⽣了什么&#xff08;What&#xff09;。 ■ 何时发⽣的&#xff08;When&#xff09;。 ■ 发⽣于何处&#xff08;Where&#xff09;。 ■ 谁参与其中&#xff08;Who&#xff09;。 ■ 参与者来源&#xff08;第⼆个Where&#xff0c;注意与上⾯的Wher…

bmc TrueSight 监控mysql配置

bmc TrueSight 监控mysql配置 1.将pat加入mysql组 useradd pat;echo patpassword|passwd --stdin pat usermod -aG mysql pat2.设置环境变量 查看文件是否存在[rootu1acmsdp01 ~]# find / -name mysql.sock /var/lib/mysql/mysql.sock ^C [rootu1acmsdp01 ~]# cd /var/lib/my…

WinAppDriver 自动化测试:C#篇

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】

zlmediakit webrtc搭建使用

webrtc 编译与使用 | ZLMediaKit 官方文档参考 编译机器&#xff1a; centos 7.6 gcc 版本 10.1.0 (GCC) cmake version 3.23.0web播放rtsp流视频&#xff0c;使用webrtc毫秒级延迟_webrtc播放rtsp流-CSDN博客 依赖准备 openssl 安装 (openssl 版本要求 1.1 以上) 我的…

Linux下使用docker nginx部署vue前端项目工程

1、使用Docker和Nginx部署Vue项目的步骤 1、准备好VUE项目&#xff0c;已打包编译 2、docker环境已完成安装 3、本地环境上创建nginx目录&#xff0c;下包括conf&#xff0c;html&#xff0c;logs目录。用于容器映射&#xff08;其实是方便修改文件&#xff0c;因为在容器中…

从实验室到生产线:机器学习模型部署的七大陷阱及PyTorch Serving避坑指南

1 实验室与生产环境的鸿沟&#xff1a;为什么99%的模型部署会失败&#xff1f; &#xff08;1&#xff09;部署失败的真实数据统计 根据2023年MLOps行业报告&#xff1a; 78%的组织表示模型部署时间超过预期65%的模型部署后性能下降超过20%仅12%的组织能在一周内完成模型更新…

Module not found: Error: Can‘t resolve ‘core-js/modules/es.array.concat.js‘

遇到错误“Module not found: Error: Can’t resolve ‘core-js/modules/es.array.concat.js’”通常是因为你的项目中使用了core-js库&#xff0c;但是你的项目配置或者core-js的版本不支持你正在尝试使用的功能。下面是一些解决这个问题的步骤&#xff1a; 确认core-js版本 …

Windows10中设置多个虚拟IP方法

一.netsh 命令添加&#xff08;最直接、最简单&#xff09; 1.在 Windows 10 中&#xff0c;使用 netsh 命令为现有物理网卡或虚拟网卡添加额外的 IP 地址&#xff08;IP Alias&#xff09;是最直接的方法。这些 IP 地址与主 IP 在同一网段&#xff0c;共享同一张网卡的 MAC 地…