首页 > 其他分享 >Dockerfile(chrono《kubernetes入门实战课》笔记整理)

Dockerfile(chrono《kubernetes入门实战课》笔记整理)

时间:2022-11-01 17:24:02浏览次数:48  
标签:容器 kubernetes chrono Dockerfile 分层 构建 镜像 docker dockerfile

【容器分层】

每个镜像都是基于一些已有的系统,资源等组合起来的,假设N个镜像都是基于centos7.0系统,如果是直接打包做镜像,就会需要打包N份centos7系统,这对磁盘存储和网络传输都是很大的浪费。容器镜像提供了一个思路,把重复的部分抽取出来,只存放一份centos7,然后N个镜像一起来共享它。这种技术的具体应用,就是分层,术语为layer。

 容器镜像内部并不是一个平坦的结构,是由许多镜像层组成的,每层都是只读的,相同的层,可以在镜像之间共享,每个层最上面被封装了一层可输入层,多个层像积木一样搭建后,再使用“Union FS(联合文件系统)”技术把它们合并在一期,形成了最终看到的文件系统。具体的分层信息可以通过命令:docker inspect来查看(例:docker inspect nginx:alpine)。当使用docker pull,rmi这些操作的时候,有很多信息打印,其实就是检查分层,看看是否有重复的分层,重复就不需要重新下载,如果其他镜像在使用某个分层,也不允许删除,这样节约磁盘和网络成本。

【dockerfile】

dockerfile,就像是容器这个样板间的施工图纸,你想做成什么样的样板间,就根据dockerfile来创建。然后使用“docker build -f Dockerfile.busybox .”命令,来构建容器。有几个点要注意

1、这里最后有个“.”,叫构建上下文(build's context),可以理解为构建这个容器需要的相关资源的路径;

2、默认build出来只有image ID,没有名字,参数 -t ,可以指定标签,这样构建的镜像就是这个名字,注意名字要符合命名规范“名字:标签”;

3、-f 带指定的dockerfile,如果不写,默认就找当前目录下名字是dockerfile的文件

 

dockerfile有几个重要参数,不区分大小写,但是通常都都会大写。每个指令都会生成一个layer:

FROM:基于哪个镜像开始构建。dockerfile里,第一个指令必须是FROM;

RUN:运行shell命令,比如更新系统,安装应用等,命令之间用“&&”分割,每行末尾用续航符“\”。但是一个run下面带太多的具体shell命令,不美观,也不方便修改,可以把这些shell命令集合到一个文件里,然后用RUN来执行;

COPY:拷贝文件;

------------>

ARG:创建的变量,只在镜像构建过程中可见,容器运行时不可见;

ENV:创建的变量,不仅能够在构建镜像的过程中使用,在容器运行时也能够以环境变量形式被应用程序使用;

 

 EXPOSE:声明容器对外接口,如443,53等

【dockerfile实例】

 

标签:容器,kubernetes,chrono,Dockerfile,分层,构建,镜像,docker,dockerfile
From: https://www.cnblogs.com/1234roro/p/16847995.html

相关文章

  • kubernetes的pod
    kubernetes的podPod是kubernetes集群能够调度的最小单元。Pod是容器的封装。在Kubernetes集群中,Pod是所有业务类型的基础,也是K8S管理的最小单位级,它是一个或多个容器的......
  • kubernetes的namespace
    kubernetes的namespace概念中文名称:命名空间。你可以认为namespaces是你kubernetes集群中的虚拟化集群。在一个Kubernetes集群中可以拥有多个命名空间,它们在逻辑上彼......
  • Installing helm on Kubernetes-1.25.2
    一、InstallinghelmonKubernetes-1.25.2地址https://helm.shhttps://github.com/helm/helm1 wget下载cd/opt/softwarewgethttps://get.helm.sh/helm-v3.10......
  • Kubeadm部署Kubernetes
    Kubeadm部署Kubernetes1、环境准备主机名IP说明宿主机系统k8s-master10.0.0.101Kubernetes集群的master节点Ubuntu2004k8s-node110.0.0.102Kubernet......
  • 超详细部署kubernetes教程
    Kubeadm部署k8s单点master1、环境准备:主机名IP说明宿主机系统master10.0.0.17Kubernetes集群的master节点CentOS7.9node110.0.0.27Kubernetes集群的node节点CentOS7.9#所......
  • 【 云原生 | kubernetes 】- Argo CD Gitlab身份验证及SSO单点登录
    :zap:前言:了解OAuth协议。OAuth是一种授权协议,它可以用来保证第三方只有当获得授权的时候,才能访问授权者的权限我们之前文章已经大概了解了ArgoCD的作用和一些用法。在......
  • 使用kubeadm搭建kubernetes1.24.3版本
    一、机器环境3台4C8G50GB磁盘虚拟机角色IP主机名master10.101.14.148k8s-master-10-101-14-148node10.101.14.19node1-10-101-14-19node10.101.14.192node2-10-101-14-192二......
  • 【Kubernetes】K8s笔记(十四):PersistentVolume 使用网络共享存储(NFS)
    目录0.安装NFS服务器及客户端1.在Kubernetes中使用NFS存储卷2.动态存储卷Provisioner3.使用NFS动态存储卷要想让存储卷真正能被Pod任意挂载,我们需要变更存......
  • Docker学习八:Dockerfile初识
    文章目录​​1.Dockerfile介绍(手动打造镜像)​​​​2.Dockerfile指令说明​​​​3.数据卷容器​​1.Dockerfile介绍(手动打造镜像)Dockerfile是用来构建Docker镜像的......
  • Kubeadm部署Kubernetes
    Kubeadm部署Kubernetes1、环境准备主机名IP说明宿主机系统k8s-master10.0.0.101Kubernetes集群的master节点Ubuntu2004k8s-node110.0.0.102Kubernetes集群的node节点Ubuntu2......