Docker(五)—— 镜像原理、容器快照commit

目录

 

一、如何得到镜像

二、联合文件系统

三、Docker镜像加载原理 

四、分层

五、如何保存镜像的状态


一、如何得到镜像

1)从远程仓库下载 (docker pull)

2)朋友/同事拷贝给你 (docker load)

3)自己制作DockerFile (docker build)

二、联合文件系统

Docker的镜像是由一层层的文件系统组成,这种层级的文件系统叫做联合文件系统UnionFS。

三、Docker镜像加载原理 

1. bootfs: 类比于Windows系统的BIOS

2. rootfs: 类比于Windows 10系统本身

对于一个精简的OS(比如centos镜像),rootfs很小,只需要包含最基本的命令、工具和程序库就可以了,因为底层使用的是宿主机的kernel。 

四、分层

 我们用inspect命令查看镜像的元数据,在“RootFS” 属性可以查看镜像都由哪些层构成。

 而这些层是可以被多个镜像共享的。比如我们之前已经下载过了centos镜像,现在我们要下载Redis镜像(6层),而Redis镜像的第一层刚好是centos,那么下载Redis镜像的时候实际上只需要下载5层就可以了,最底层直接用centos镜像。

容器层和镜像层 

Docker镜像自身包含的层叫做镜像层, 如果我们想对容器进行一些操作,然后再次发布这个容器。就相当于额外增加了一层,就叫做容器层

当容器运行时,容器层自动被加载到镜像层的顶部。

五、如何保存镜像的状态

当我们对已有的镜像做了修改,如何提交一个新的镜像?也可以理解成虚拟机的“快照”,我们如何保存docker容器的快照呢?commit命令!

docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 `docker commit` 命令创建新的镜像时,如果发现缺失容器配置信息,可以尝试使用 `docker inspect` 命令查看容器的配置信息,并将需要的配置信息添加到新的镜像中。 操作步骤如下: 1. 使用 `docker inspect` 命令查看容器的配置信息,例如: ``` docker inspect my_container ``` 这个命令会输出容器的详细信息,包括容器的配置信息、网络信息、挂载卷等等。 2. 根据需要,从输出的信息中找到需要的配置信息,例如容器的环境变量、端口映射等等。 3. 使用 `docker commit` 命令创建新的镜像,并在命令中添加需要的配置信息,例如: ``` docker commit --env MY_ENV=my_value --expose 8080 my_container my_new_image ``` 其中 `--env` 参数用于设置容器的环境变量,`--expose` 参数用于设置容器的端口映射,`my_container` 是要创建镜像容器的名称,`my_new_image` 是新的镜像名称。 4. 使用 `docker run` 命令启动新的容器,例如: ``` docker run --name my_new_container my_new_image ``` 这个命令会使用新的镜像创建新的容器,并将容器配置信息加载到新的容器中。 需要注意的是,使用 `docker commit` 命令创建新的镜像时,需要手动添加需要的配置信息,否则新的镜像将不包含容器的配置信息。此外,如果容器的配置信息比较复杂,可以考虑使用 Dockerfile 来创建新的镜像,这样可以更方便地管理容器的配置信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值