docker 镜像管理

  • Docker镜像含有启动容器所需要的文件系统及其内容,可以用于创建并启动docker容器

   采用分层构建机制,最底层为bootfs,其上为rootfs

 bootfs:用于系统引导的文件系统,包括bootlooder和kernel,容器启动后会被卸载用于节约内存资源

 rootfs:  位于bootfs之上,表现为docker容器的根文件系统

 image layer

   最底层为base image

   最上层为可读写层,其下面均为只读层,位于下面的镜像被称为父镜像

  

  • AUFS  高级多层统一文件系统(advanced multi-layered unification filesystem)

  早期的容器文件系统层

  aufs是UnionFS的重新实现

  aufs的竞争产品是overlayfs,从3.18版本开始使用overlayfs

  docker的分层镜像,除了aufs,docker还支持btrfs,devecimapper(是内核2.6版本的一款分层镜像工具) vfs

    ubuntu系统,默认使用aufs;在centos6,7系统默认为devicemaper,新版的为overlay2

docker registry分类:

   sponsor Registry:第三方提供,供客户和社区使用

   Mirror Registry:第三方提供,之壤客户使用

   Vendor Registry: 由发布Docker镜像的供应商提供

   Private Registry: 通过设有防火墙和额外的安全层的私有registry

Registry组成部分:

  Repository:由特定的docker镜像的所有迭代版本组成

       一个registry中可以存在多个Repository

           Repository分为:顶层仓库和用户仓库

        用户仓库名称格式:用户名/仓库名

       每个仓库可包含多个Tag,每个标签对应一个镜像

   Index:维护用户账户,镜像的教研以及公共命名空间信息

     相当于为registry提供了一个完成用户认证等功能的检索接口

docker中的镜像通常由开发人员制作,并保存到私有registry

从docker registry拉取image的命令格式:

       docker pull <registry>[:<port>]/[<namespace>]<name>:<tag>

  获取flannel镜像的registory地址:https://quay.io,文档地址dosc.quay.io

     docker pull quay.io/coreos/flannel:v0.10.0-amd64 ##因为不是默认版本库,需要指定服务器地址

 namespace分类:

   organization : 比如 redhat/kubernetes   goggle/kubernetes

     login-user:  比如 haidan/app  haoren/app

  role  :   比如 dev/app   test/app

镜像的制作

  Dockerfile

  基于容器制作:docker commit

      1) 编辑一个容器,不要退出

       2)另外一个窗口执行docker commit -p 容器名称

  3)docker tag image_id(或者repository名称)  user/httpd:v1-1

  Docker Hub automated builds

删除镜像 

  docker image rm magedu/httpd:latest,只是去掉了标签而已

更改镜像启动使用的命令

  docker commit -a "zuozhe <zuozhe@126.com>" -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' -p b1 mage/httpd:v2

推送镜像到仓库

  先登陆  docker login -u mage -p 

       在执行 docker push mage/httpd

    阿里:https://dev.aliyun.com

  链接阿里云的版本库,需要先更改镜像的repostory名称,加上阿里晕的地址,

  使用非官方版本库push的tag格式:   阿里地址/帐号/image名称

镜像的导入、导出  

    主要是为了方便本地共享使用

 save: docker save -o myimage.gz mage/http:v1 mage/httpd:v2     

   之后会在当前路径下生成myimage.gz压缩包,通过scp共享给其他人即可

 load:   docker load -i myimage.gz

 

posted @   netma  阅读(79)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示