Dockerfile:创建镜像,创建自定义的镜像。

Docker的创建镜像的方式:
  1. 基于已有镜像进行创建。

   根据官方提供的镜像源,创建镜像,然后拉起容器。是一个白板,只能提供基础的功能,扩展性的功能还是需要自己定义(进入容器进行操作)

 基于模板进行创建:

     

 下载下来的模板导入到本地      run起来。

Dockerfile

   联合文件系统(UnionFS),docker镜像的基础,镜像通过分层来进行集成,特性:一次同时加载多个文件系统,但是从外面来看,就是一个文件系统。

   Docker镜像实际上就是一层一层的文件系统组成,这种层级的文件系统就是UnionFS。每一层都是layers,每一层都包含文件系统的一部分,这些层次叠加在一起,最终形成的就是rootfs。

Bootfs:宿主机提供的内核和引导程序。

Roosfs:就是容器的操作系统,在dockerfile中,我们可以自己指定。

Rootfs是多个基础镜像和应用镜像结合起来的只读层,镜像实际上就是一个只读文件。

容器基于镜像实例,运行起来之后,容器变成可读可写层。

在dockerfile 当中创建一个指定都是一个镜像层。

镜像层会被缓存和复用。

1-4将直接完成,继续运行5-6

一旦有一层镜像失败,那么所有的镜像层都会失败,镜像也不会创建。

镜像层是不可变的,你在某一层当中添加一个新的命令,但是下一层删除了指令,镜像中基于这个命令创建的文件依然存在,但是在容器中看不见。

Dockerfile的核心:用户个性化定制docker的镜像。

Dockerfile的结构:
  1. 基础镜像信息
  2. 维护者信息
  3. 镜像的操作指令
  4. 容器启动时执行的命令。
Dockerfile的语法:

FROM:指定基础镜像信息,指定容器的操作系统。

MAINTAINER:指定维护者信息(可有可无,可以不写)。

RUN:在基础的镜像上执行的命令,每个run就是一层,分层越多,镜像也大。

ENTRYPOINT:设置容器运行时是默认命令(容器内部运行的主程序)

CMD:指定容器运行时间的默认命令(docker run /bin/bash 后面加了其他的命令,cmd的指将会被覆盖。)

EXPOSE:暴漏端口(指定容器的运行端口)

ENV:设置变量环境,环境变量可以被PUA命令使用(声明容器运行需要的环境斌环境)

ADD:复制,解压。解压不支持.zip和.tar  tar.gz  tar.bz2 支持url地址解压和复制(解压)

COPY:复制文件,不能解压,而且只能复制蹦迪文件,文件要和dockerfile在一个节目(官方推荐复制利用copy)

VOLUME:创建一个容器内的挂载点,即可以为宿主机挂载,也可以提供容器挂载。

USER:设置运行镜像时使用的用户或者UID(可以不加)

WORKDIR:为后续指令设置的工作目录

ONBUILD :这个镜像可以被其他镜像引用,需要这个命令。

ARG:传参,用于创建容器时,传递参数。ENV用于容器运行时设置环境变量。

CMD和ENTRYPOINT的区别:

都是可以作为容器启动时的默认命令。

区别:

  1. cmd可以吧参数传给ENTRYPOINT
  2. 多个ENTRYPOINT和多个cmd只会运行最后一个(一个dockerfile当中只会有一个ENTRYPOINT和cmd)
  3. ENTRYPOINT的指令不会被覆盖,cmd的指令如果在docker  run 的后面加上输出,会被覆盖。
  4. ENTRYPOINT和cmd的指令在容器启动时执行,都会成为容器的主进程。主进程负责接受信号,处理容器的生命周期,主进程退出,容器也将终止运行。

Run 命令的优化:

主要是减少镜像的层数: 把多个run命令写在一块。

&&符号:

RUN yum -y install nginx && make -j 4 && make install

 注意一点前一个命令执行成功才会执行下一个。

; 符号:

RUN yum -y install nginx ; make -j 4 ;make install

 不管前一个命令是否成功,后面的命令都会执行。

|| :

RUN yum -y install nginx || make -j 4

如果前面一个命令执行失败,才会执行下一个命令。

反斜杠 \ :换行

RUM yum -y install nginx \

&& make -j 4 \

&& make install

可读性高。

Copy和add区别:

Copy和add都可以吧本地文件复制到镜像中,但是官方推荐如果是复制,使用copy

区别:

Add可以解压,如果是一个压缩文件,add在复制之后会自动解压。(tar.gz 和 tar.bz2)可以支持URL下载源文件,只能支持下载,但是不会解压。通过URL拷贝的文件无法自动解压。

Copy只能复制,不能解压。而且只能是本地文件,不支持URL路径。

基于centos7 构建一个Apache的dockerfile(编译安装):

如何基于镜像的二次构建。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/225065.shtml

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

相关文章

SpringBoot 基础概念:SpringApplication#getSpringFactoriesInstances

SpringBoot 基础概念&#xff1a;SpringApplication#getSpringFactoriesInstances SpringApplication#getSpringFactoriesInstances SpringApplication#getSpringFactoriesInstances private <T> Collection<T> getSpringFactoriesInstances(Class<T> type,…

在 Spring Boot 中发送邮件简单实现

Spring Boot 对于发送邮件这种常用功能也提供了开箱即用的 Starter&#xff1a;spring-boot-starter-mail。 通过这个 starter&#xff0c;只需要简单的几行配置就可以在 Spring Boot 中实现邮件发送&#xff0c;可用于发送验证码、账户激活等等业务场景。 本文将通过实际的案…

【AI美图】第03期效果图,AI人工智能全自动绘画,二次元美图欣赏

带来一组二次元人工智能自动绘图 对比分析&#xff1a; 标题手画二次元需要技巧&#xff1a; 二次元高清图片的绘制技巧主要包括以下几点&#xff1a; 线条的运用&#xff1a;在二次元风格的绘画中&#xff0c;线条的运用非常重要。要绘制出流畅、细腻的线条&#xff0c;需…

用于自动驾驶的基于深度学习的图像 3D 物体检测:综述

论文地址&#xff1a;https://ieeexplore.ieee.org/abstract/document/10017184/ 背景 准确、鲁棒的感知系统是理解自动驾驶和机器人驾驶环境的关键。自动驾驶需要目标的 3D 信息&#xff0c;包括目标的位置和姿态&#xff0c;以清楚地了解驾驶环境。 摄像头传感器因其颜色和…

初识JVM底层知识,一文读懂JVM知识文集。

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

nginx反向代理实践指南:访问Tomcat

目录 前言1 实现的效果2 访问流程分析3 安装tomcat并测试4 配置4.1 在Windows系统的hosts文件进行域名和IP对应关系的配置4.2 在NGINX进行请求转发的配置&#xff08;反向代理配置&#xff09; 5 最终测试结论 前言 从Windows系统访问Tomcat Web应用程序&#xff0c;设置和配置…

VUE-脚手架搭建

文章目录 一、概述二、前提准备1. 安装 node-js2. npm 镜像设置3. 安装 vs-code 三、脚手架搭建1. Vue-2 搭建1. Vue-3 搭建 一、概述 官网&#xff1a;http://cn.vuejs.org/ vue 有两个大版本&#xff0c;分别是 vue-2 和 vue-3&#xff0c;目前新项目的话用 vue-3 的会比较多…

Elasticsearch 进阶(索引、类型、字段、分片、副本、集群等详细说明)-06

笔记来源&#xff1a;Elasticsearch Elasticsearch进阶 进阶-核心概念 索引Index 一个索引就是一个拥有几分相似特征的文档的集合。比如说&#xff0c;你可以有一个客户数据的索引&#xff0c;另一个产品目录的索引&#xff0c;还有一个订单数据的索引。一个索引由一个名字…

RT-DETR 图片目标计数 | 特定目标进行计数

全类别计数特定类别计数如何使用 RT-DETR 进行对象计数 有很多同学留言说想学 RT-DETR 目标计数。那么今天这篇博客,我将教大家如何使用 RT-DETR 进行对象计数。RT-DETR 是一种非常强大的对象检测模型,它可以识别图像中的各种对象。我们将学习如何利用这个模型对特定对象进行…

迅为RK3568开发板使用OpenCV处理图像-ROI区域-位置提取ROI

在图像处理过程中&#xff0c;我们可能会对图像的某一个特定区域感兴趣&#xff0c;该区域被称为感兴趣区域&#xff08;Region of Interest, ROI&#xff09;。在设定感兴趣区域 ROI 后&#xff0c;就可以对该区域进行整体操作。 位置提取 ROI 本小节代码在配套资料“iTOP-3…

C++ 学习系列 -- 模板 template

一 C 模板介绍&#xff1f; C 为什么引入模板&#xff1f; 我的理解是&#xff1a; C 引入模板的概念&#xff0c;是为了复用重复的代码&#xff0c;当某些代码除了操作的数据类型不同以外&#xff0c;其他逻辑全都相同&#xff0c;此时就适合采用模板的方式。 定义模板类或者…

黑豹程序员-axios+springmvc传递数组

问题 奇怪的现象&#xff0c;axios在往后台传递数组时&#xff0c;springmvc竟然接收不到 解决 尝试多次无果&#xff0c;突然看一篇文章写vue中的数组不是真正的数组需要强转转化JSON.stringify 将信将疑下测试了一把&#xff0c;还真的传递成功了。 不光要JSON.stringify…

Github 2023-12-15 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2023-12-15统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量TypeScript项目3非开发语言项目3JavaScript项目1Python项目1Rust项目1PHP项目1 基于项目的学习 创建周期&am…

微服务组件Sentinel的学习(3)

Sentinel 隔离和降级Feign整合Sentinel线程隔离熔断降级熔断策略 授权规则&#xff1a;自定义异常 隔离和降级 虽然限流可以尽量避免因高并发而引起的服务故障&#xff0c;但服务还会因为其它原因而故障。而要将这些故障控制在一定范用避免雪崩&#xff0c;就要靠线程隔离(舱壁…

Dockerfile创建镜像--LNMP+wordpress

实验准备&#xff1a; nginx&#xff1a;172.111.0.10 docker-nginx mysql&#xff1a;172.111.0.20 docker-mysql php&#xff1a;172.111.0.30 docker-php 自定义网段&#xff1a;172.111.0.0/16mkdir nginx mysql php mv nginx-1.22.0.tar.gz wordpress-6.4.2-zh_CN.ta…

Polkadot 品牌焕新提案:重返前卫,市场营销的创新愿景

波卡的品牌形象和营销策略也许将迎来新变化。长久以来一些社区成员批评道&#xff0c;波卡的形象过于保守、太企业化&#xff0c;缺乏 Crypto 行业应有的先锋气质。 在前阵子的 Parity “去中心化” 变革中&#xff0c;Parity 的营销团队经历了大幅的变动&#xff0c;随后建立…

UGUI 鼠标悬浮UI出现弹框,鼠标在图片边缘出现闪烁

1、背景&#xff1a;鼠标悬浮在UI上出现提示框 public class SpecialParam_list : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler {public void OnPointerEnter(PointerEventData eventData){TipBox.Instance.ShowBox(Input.mousePosition, value);}public void …

如何实现免费的文档翻译

文中有彩蛋&#xff0c;请一定要看完。 目录 文中有彩蛋&#xff0c;请一定要看完。 一、问题的提出 二、文档翻译现状 三、如何免费海量文档翻译 1. 采用CAT工具机器翻译API法 2. 采用小牛文档翻译 四、学后反思 一、问题的提出 随着互联网和人工智能技术的飞速发展&…

Kubernetes 容器编排(2)

可视化部署 官方Dashboard 部署Dashboard # kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml # kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard # 注意将 type: ClusterIP 改为 type: NodePo…

案例064:基于微信小程序的考研论坛设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…