Docker的镜像
采用分层构建,最底层是bootfs 其之为rootfs
bootfs :用于系统引导的文件系统,包括 bootloader 和 kernel,容器启动完成后会被卸载以节约内存资源;
rootfs :位于 bootfs 之上,表现为 docker 容器的根文件系统; 传统模式中,系统启动之时,内核挂载 rootfs 时会首先将其挂载为“只读”模式,完整性自检完成后将其重新挂载为读写模式;docker 中, rootfs 由内核挂载为“只读”模式,而后通过“联合挂载 ”技术额外挂载一个“可写”层
位于下层的镜像称为父镜像 (parent image),最底层的称为基础镜像,最底层的称为基础镜像
最上层为“ 可读写” 层,其下的均为“ 只读” 层
AUFS: 联合挂载
aufs 的竞争产品是 overlayfs ,后者自从 3.18 版本开始被合并到 Linux内核
docker 的分层镜像,除了 aufs , docker 还支持 btrfs, devicemapper 和 vfs等
在 Ubuntu 系统下, docker 默认 Ubuntu 的 aufs ;而在 CentOS7 上,用的是devicemapper ;
启动容器时, docker daemon会试图从本地获取相关的镜像;本地镜像不存在时,其将从会试图从本地获取相关的镜像;本地镜像不存在时,其将从 Registry中下载该镜像并保存到本地
Registry分类
Registry 用于保存 docker 镜像,包括镜像的层次结构和元数据
用户可自建 Registry ,也可使用官方的 Docker Hub
分类
1Sponsor Registry :第三方的 registry ,供客户和 Docker 社区使用
2 Mirror Registry :第三方的 registry ,只让客户使用
3 Vendor Registry :由发布 Docker 镜像的供应商提供的 registry
4Private Registry:通过设有防火墙和额外的安全层的私有实体提供的
Repository
ɝ 由某特定的 docker 镜像的所有迭代版本组成的镜像仓库
ɝ 一个 Registry 中可以存在多个 Repository
Repository 可分为“顶层仓库”和“用户仓库”
用户仓库名称格式为“用户名/ / 仓库名”
每个仓库可以包含多个 Tag( 标签) ,每个标签对应一个镜像
Index
维护用户帐户、镜像的校验以及公共命名空间的信息
相当于为 Registry 提供了一个完成用户认证等功能的检索接口
自己的私有仓库:
先在docker注册:创建个自己的仓库,把镜像推上去
Docker hub 操作:
登录: docker login -u mageedu
#docker images
#Docker tag docker.io/busybox:latest docker.io/mageedu/bbox:v0.1.0
#docker push docker.io/mageedu/bbox:v0.1.0 推送完毕
#docker pull docker.io/mageedu/bbox:v0.1.0 下载
#docker imager 显示
制作镜像 :2种方式
1 基于容器 2 基于文件 编辑一个dockerfile文件 ,根据文件制作
1 基于容器制作镜像
在容器中完成操作后制作
docker commit -a "magedu" c1 docker.io/mageedu/bbox:v0.1.1-httpd
基于这个启动
Docker run --name h1 –rm docker.io/mageedu/bbox:v0.1.1-httpd /bin/httpd –f –h /data/html
或
docker commit -a “magedu” -c ‘CMD ["/bin/httpd","-f"," -h"," /data/html" ] ' c1 docker.io/mageedu/bbox:v0.1.2-httpd
启动:
docker run --name h2 --rm docker.io/mageedu/bbox:v0.1.2-httpd
-d 表示运行在后台
#docker inspect 查看容器详细信息
这是访问:curl http://172.16.0.3