dockerfile:创建镜像的方式,船舰自定义的镜像

news2024/11/20 6:17:27

dockerfile:创建镜像的方式,船舰自定义的镜像

包括配置文件,挂载点,对外暴露的端口,设置环境变量

docker创建镜像的方式

1、基于已有镜像进行创建。

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

2、基于模板进行创建

3、dockerfile

联合文件系统(UnionFS),docker镜像的基础

镜像通过分层进行继承,特性:一次同时可以加载多个文件系统,但是从外面来看,就是一个文件系统。

docker镜像实际上就是由一层一层的文件系统组成,这种层级的文件系统就是UnionFS

每一层都是layers,每一层都包含文件系统的一部分,这些层次叠加在一起,最终形成的就是rootfs

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

rootfs:即使容器的操作系统,载dockerfile中,我们可以自己指定

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

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

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

镜像层会被缓存和复层

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

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

1、touch 123

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

dockerfile的结构:

1、基础镜像信息

2、维护者信息

3、镜像的操作指令

4、容器启动时,执行的命令

nginx定义好了容器执行的命令 /bin/bash,覆盖了容器内的标准输出

dockerfile的语法

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

MAINTAINER:指定维护者信息(可有可无)

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

ENRYPOINT:设置容器运行时的默认命令(理解为容器内部运行的主程序)

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

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

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

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的指令在容器启动时执行,都会成为容器的主进程,主进程负责接收信号,处理容器的声明周期,主进程退出,容器也讲终止运行

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 \

&& maker -j 4 \

&& make install

可读性更高

copy和add之间区别

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

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

copy只能复制,而且只能是本地文件,不支持URL路径

centos7构建一个apache的dockerfile(编译安装):

docker build -t nginx:wqb5 .

docker run -itd --name nginx8 -p 1212:80 nginx:wqb5

FROM centos:7 AS first
MAINTAINER "this is my apache <wqb>"
RUN yum -y install gcc gcc-gcc+ make pcre pcre-devel expat-devel perl
ADD apr-1.6.2.tar.gz /opt
ADD apr-util-1.6.0.tar.gz /opt
ADD httpd-2.4.29.tar.bz2 /opt
RUN mv /opt/apr-1.6.2 /opt/httpd-2.4.29/srclib/apr && mv /opt/apr-util-1.6.0 /opt/httpd-2.4.29/srclib/apr-util &&\
cd /opt/httpd-2.4.29 &&\ ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi &&\
make -j 4 && make install

#二层构建:

FROM centos:7

COPY --from=first /usr/local/httpd /usr/local/httpd

RUN yum -y install pcre pcre-devel expat-devel perl

EXPOSE 80
CMD ["/usr/local/httpd/bin/apachectl","-D","FOREGROUND"]

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

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

相关文章

IT鄙视链:码农之间的情感大戏与编程语言间的较量

在IT圈&#xff0c;茶余饭后的谈资总离不开技术、产品、市场和那些看似高深莫测的“鄙视链”。这些鄙视链&#xff0c;就像一场没有硝烟的战争&#xff0c;把原本应该和谐交流的技术社区变成了一场争夺鄙视链顶端的激战。今天&#xff0c;就让我来为您揭示这个神秘的IT鄙视链。…

CSS 实现丝滑动画

效果展示 CSS 知识点 animation 综合运用 页面整体布局 <div class"box"><div class"circle"></div> </div>编写基础样式 .box {position: relative;width: 400px;height: 400px;border: 80px solid transparent;border-left:…

JVM虚拟机系统性学习-类加载子系统

类加载子系统 类加载的时机 类加载的时机主要有 4 个&#xff1a; 遇到 new、getstatic、putstatic、invokestatic 这四条字节码指令时&#xff0c;如果对应的类没有初始化&#xff0c;则要先进行初始化 new 关键字创建对象时读取或设置一个类型的静态字段时&#xff08;被 …

12.10_黑马数据结构与算法笔记Java

目录 058 链表 e10 判环算法1 thinking&#xff1a;什么是空指针&#xff1f; 058 链表 e10 判环算法2 059 数组 e01 合并有序数组1 059 数组 e01 合并有序数组2 060 队列 链表实现1 061 队列 链表实现2 062 队列 环形数组实现 方法1-1 063 队列 环形数组实现 方法1-2…

CV计算机视觉每日开源代码Paper with code速览-2023.12.5

点击计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构&#xff1a;Transformer】GIFT: Generative Interpretable Fine-Tuning Transformers 论文地址&#xff1a;https://arxiv.org…

计算机网络——期末考试复习资料

什么是计算机网络 将地理位置不同的具有独立功能的多台计算机及其外部设备通过通信线路和通信设备连接起来&#xff1b;实现资源共享和数据传递的计算机的系统。 三种交换方式 报文交换&#xff1a;路由器转发报文&#xff1b; 电路交换&#xff1a;建立一对一电路 分组交换&a…

carla安装中的问题

1、carla carla安装完后&#xff0c;需要使用python调用API去更换地图&#xff0c;增加车辆等 使用Python调用API过程中可能会报错&#xff1a; 报错1&#xff1a;carla API&#xff08;Carla包&#xff09;版本不对 **解决方法&#xff1a;**需要将这个目录下的三个文件拷…

IDEA已经导入了jar包 还是提示找不到类(解决!!!)

项目代码check到本地,导入到idea中后,编译的时候很多类都报错了,打开发现有些框架中的类找不到。 报错:xxxx程序包找不到,xxxx类找不到 类似我框起来的地方是 报红的,utils这个包都找不到 解决方法: 网上1: 项目是依赖了这个jar包的,打开项目配置,查看依赖树: id…

2023.12.9 关于 Spring Boot 事务传播机制详解

目录 事务传播机制 七大事务传播机制 支持当前调用链上的事务 Propagation.REQUIRED Propagation.SUPPORTS Propagation.MANDATORY 不支持当前调用链上的事务 Propagation.REQUIRES_NEW Propagation.NOT_SUPPORTED Propagation.NEVER 嵌套事务 Propagation.NESTED…

优化您的Mac电脑风扇控制体验 - 尝试Macs Fan Control Pro!

在日常使用Mac电脑过程中&#xff0c;我们经常会遇到电脑发热的问题&#xff0c;特别是在运行大型软件或进行高负载任务时。为了保护电脑硬件&#xff0c;一个高效且可靠的风扇控制软件是必不可少的。 Macs Fan Control Pro是一款专为Mac电脑设计的风扇控制软件&#xff0c;它…

区块链技术是什么?解析其基本原理及应用

区块链技术的基本原理 在数字化时代的推动下&#xff0c;区块链技术作为一项革命性的创新&#xff0c;正逐渐渗透到各个领域&#xff0c;引领着未来科技的发展。区块链技术的基本原理大致可以总结为以下 4 点内容&#xff1a; 1. 去中心化&#xff1a;区块链是一个去中心化…

三(二)ts非基础类型(枚举)

数字枚举 使用enum定义一个枚举类型 enum Color {red,yellow,blue } let clr: Color Color.red如上面代码中&#xff0c;我们定义了一个关于颜色的枚举类型&#xff0c;里面的值会从0开始依次递增&#xff0c;也就是说Color.red为0&#xff0c;Color.yellow为1依次类推。当然…

渲染技术在虚拟仿真中的应用

虚拟仿真&#xff08;Virtual Reality&#xff09;是一种仿真技术&#xff0c;它使用计算机生成一个虚拟世界&#xff0c;用户可以通过各种传感通道与这个虚拟世界进行自然的交互。虚拟仿真技术可以创建和体验虚拟世界&#xff0c;使用户可以像在真实世界中一样进行操作和体验。…

Python - 深夜数据结构与算法之 ArrayList

目录 一.引言 二.ArrayList 介绍 1.List 2.Linked List 3.Skip List 三.经典算法实战 1.Two-Sum [1] 2.Three-Sum [15] 3.Merge-Two-Sorted-List [21] 4.Remove-Duplicates-From-Sorted-Array [26] 5.Plus-One [66] 6.Rotate-Array [189] 7. Move-Zero [283] 四.…

如何公网访问内网的群晖NAS随时随地远程访问本地存储的学习资源

文章目录 前言本教程解决的问题是&#xff1a;按照本教程方法操作后&#xff0c;达到的效果是前排提醒&#xff1a; 1. 搭建群晖虚拟机1.1 下载黑群晖文件vmvare虚拟机安装包1.2 安装VMware虚拟机&#xff1a;1.3 解压黑群晖虚拟机文件1.4 虚拟机初始化1.5 没有搜索到黑群晖的解…

双向链表(数据结构与算法)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

基于Java的商城网站系统设计与实现(6000字论文范例)

基于Java的商城网站系统设计与实现 姓 名&#xff1a; 刘德华 学 号&#xff1a; 指导教师&#xff1a; 2023年4月 摘要 随着我国经济活力的不断提升和互联网的快速发展&#xff0c;信息的重要性正在…

SpringIOC之ConditionEvaluator

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

如何使用cpolar+Inis在Ubuntu系统快速搭建本地博客网站公网可访问

文章目录 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总…

安装Nacos2.2.3集群

目录 一、传统方式安装 二、Docker安装 一、传统方式安装 1、配置jdk环境 vi /etc/profile JAVA_HOME/usr/local/java JRE_HOME/usr/local/java/jre CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH$JAVA_HOME/bin:$PATH export PATH JAVA_…