Dockerfile

一、dockerfile

1.通过dockerfile创建的都是镜像

2.创建镜像的方式:dockerfile为最基本的方式,最常用的方式

docker pull 拉取的是最基础的镜像,只有基础功能,没有定制化的功能

基于基础镜像,创建好了容器之后再容器内部进行定制化操作,然后导出成镜像,下一次继续使用

二、基于dockerfile创建:

1.联合文件系统:UnionFS 这是docker镜像的基础,镜像通过分层来进行集成,基于UnionFS可以制作各种具体的应用镜像。其特性:一次性同时的加载多个文件系统,但是从外边看只能看到一个文件系统也就是文件系统叠加

2.文件镜像加载的原理: 是由一层一层文件系统组成的分为rootfs和bootfs

rootfs: 根文件系统,包含了一个完整的文件系统(操作系统),包括了所有的文件和目录。以及相关的权限和用户等信息。运行容器时,整个的根文件系统就会整个被使用,作为应用的运行的环境。

bootfs:引导文件系统,启动根系统时需要加载的核心文件。

三、dockerfile定制化镜像:定制每一层需要添加的配置和文件,把每一层的修改,安装,构建和操作都写入到一个脚本,用脚本来进行创建镜像,这个脚本就是dockerfile。

1.dockerfile分为四个部分:

基础镜像消息(底层)

维护者消息(可有可无)

镜像的操作指令和相关配置

容器启动时执行的命令

2.dockerfile的命令:

FROM:永远是整个脚本第一个语法,作用就是指定定制镜像操作的基础系统。

MAINTAINER:维护者消息,可以不写,新版本用LABEL来代替。

RUN:在基础镜像上先运行的执行命令,然后把运行结果整合到新镜像当中,但是注意的是RUN就是一个镜像的分层,RUN越多分层就越多,镜像就越大,为了控制镜像的大小,多个RUN尽可能的写在一个RUN里面。

ENTRYPOINT:指定容器在启动时执行的命令或者参数

CMD:指定容器在启动时执行的命令或者参数

EXPOSE:指定容器对外暴漏的端口号

ENV:用来设置基础操作系统的环境变量,以便于RUN命令使用,或者是新镜像使用,就是给系统添加环境变量

ADD:可以支持URL从网络下载文件,也可以对压缩文件进行解压

COPY:只能复制本地文件(宿主机文件)到镜像的目标位置

VOLUME:创建一个容器内的挂载点,不是和宿主机进行挂载

USER:设置镜像运行时的用户

WOEKDIR:指定容器的工作目录,相当于到这个目录下做指定的操作

ONBUILD:指定一个镜像做为另一个镜像构建的基础时需要运行的命令

ARG:主要是用来传参,用户传递的参数,ENV是容器内部的参数

3.ENTRYPOINT与CMD区别:

ENTRYPOINT:有多个的情况下,只会运行最后一个

CMD:有多个的情况下,只会运行最后一个

如果二者同时存在,命令都会执行,ENTRYPOINT会覆盖CMD的命令,并且CMD会把参数传给ENTRYPOINT

做为容器启动时执行命令的语句,一般情况下二者是通用的,但是在传参的情况下需要加上CMD,如果没有特殊操作(传参的情况下),写一个CMD或者ENTRYPOINT即可,二者不要同时存在

CMD做为启动命令,运行容器时传了额外的参数,cmd会被覆盖,entrypoint不会被覆盖,容器运行指定的命令相当于给entrypoint传参

CMD展示

4.RUN在基础镜像运行然后把结果传给新镜像

优化RUN:&&:前一个指令成功才会执行下一个

优化也可以用分号:不管前面的成不成功后一个都会执行

优化也可以用 | |:前一个失败后一个才会执行,一般不用

反斜杠:把一个命令分成多个行,提高可读性

5.COPY和ADD

ADD:解压,.tr .tar.gz .zip;也可以根据URL下载;也可以复制,但是官方推荐使用copy,因为ADD不能复制压缩文件。

COPY:只能复制,复制本地文件到容器内

解压和复制必须要在dockerfile在同一目录下

四、工作目录和环境变量以及容器卷

1.工作目录:相当于切换到容器内的指定目录

WORKDIR工作目录

ENV环境变量

2.VOLUME:

3.yum安装订制一个nginx

相关推荐
跟着珅聪学java11 小时前
在电商系统中,如何确保库存扣减的原子性
分布式
JH307313 小时前
Redisson 看门狗机制:让分布式锁“活”下去的智能保镖
分布式
一点 内容14 小时前
深入理解分布式共识算法 Raft:从原理到实践
分布式·区块链·共识算法
8Qi814 小时前
分布式锁-redission
java·redis·分布式·redisson
15 小时前
鸿蒙——分布式数据库
数据库·分布式
Hui Baby15 小时前
分布式多阶段入参参数获取
分布式
阿拉斯攀登17 小时前
Spring Cloud Alibaba 生态中 RocketMQ 最佳实践
分布式·微服务·rocketmq·springcloud·cloudalibaba
无锡布里渊18 小时前
感温光纤 DTS 系统 vs 感温电缆 对比分析报告
分布式·实时监测·分布式光纤测温·线型感温火灾监测·感温电缆
g323086318 小时前
分布式框架seata AT模式源码分析
java·数据库·分布式
哇哈哈&18 小时前
如何进行卸载rabbitmq
分布式·rabbitmq