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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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代理 了,记录一下