自己学Docker:8.容器的持久化

今天继续看Docker相关的东西. 
之前,去了解数据卷和数据卷容器是因为在刚开始了解Docker的工作模式时遇到了两个疑问:关于Docker数据持久化的,和Docker如何共享数据.通过对于数据卷和数据卷容器的了解,目前从整体上可以知道Docker如何共享数据和持久化数据.在不断学习的过程中,了解到Docker通过镜像创建容器时,实际上实在镜像上面加了一层读写层,我们对于Docker数据的修改都是在这个读写层发生的. 
那么问题来了,如果我要创建一个web或者数据库容器,在里面安装好配置好相关软件,如tomcat或者MySQL之类的.这些更改我如何保存下来,从而可以在以后创建容器时使用? 
之前的数据卷和数据卷容器都是保存了我们对于文件的更改,现在这个实际上是需要对创建的容器进行持久化,使他变成一个镜像.我们之前在使用Docker命令创建容器的时候,很多新创建的容器里都有一些安装好的软件,就是用的这个.这个实现起来也很简单,Docker给我们涉及了一个命令–commit.通过这个命令就可以实现上面的需求. 
首先,先创建一个容器,

 sudo docker run -i -t --name mungo  docker/whalesay /bin/bash
 
 
  • 1
  • 1

这里写图片描述
这里写图片描述
这里我就在,/use/local目录下创建一个test.txt的文件. 
这里写图片描述 
下面就是主角了,使用commit命令来提交容器.提交之前可以先看下本机目前有那些镜像.

sudo docker images
 
 
  • 1
  • 1

这里写图片描述

sudo docker commit mungo mungo:v2
sudo docker images
 
 
  • 1
  • 2
  • 1
  • 2

这里写图片描述

通过对比可以看到,本机的镜像中多了一个REPOSITORY为mungo,TAG为v2的镜像.下面使用这个镜像来创建一个容器,看看之前/use/local目录下创建的test.txt的文件还在不.

sudo docker run -i -t --name mungo_V2  mungo:v2
 
 
  • 1
  • 1

这里要注意一下,我在使用名为mungo的镜像创建容器时后面加了一个v2,这个就是创建镜像指定的TAG,默认的TAG是latest可以不指定,如果不是就要通过:来指定. 
这里写图片描述
这里可以看到,之前创建的文件还在.通过ps命令查看容器也会发现,我使用了不同的镜像来创建容器,但创建完成的容器内容是一样的. 
这里写图片描述

通过上面的操作可以得知,commit命令可以将已存在容器和修改内容提交为一个新的镜像,通过这个方式同样能保存读写层内容.但是由于每次使用新的镜像创建容器时,之前的修改都在,所以commit命令虽然能实现保存读写层数据,但不适于做数据持久化.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值