自己学Docker:4.开始了解Docker的工作模式

上一章在学习中有2个疑问:

  1. 如何保存我们在容器里的修改?
  2. 如果apt-get如果不能安装时,如何在Docker中安装软件?

关于run创建的容器问题

对于第一个问题,原来每次执行(当非root用户时,需要在命令前加sudo)

sudo docker run -i -t docker/whalesay /bin/bash

都会创建一个新的容器,这一点应该是明确的。但是退出时,创建的容器并没有被删除,还是存在与系统中的。通过,

sudo docker ps -a

可以查看。
这里写图片描述
列表中,第一列CONTAINER ID 就是镜像的ID,上表中第一个也就是id为7409de9e92f0就是我上一篇中创建的安装了vim的容器。
IMAGE就是创建该容器使用的镜像。
COMMAND 是镜像最后执行的动作。
CREATED 是创建时间。
STATUS是容器当前状态。
PORTS
NAMES是为容器取得唯一的名称。这个那么默认是docker在执行run创建容器是命名的。如果我们想指定名称需要使用name选项,

sudo docker run -i -t --name test docker/whalesay /bin/bash

这样创建的容器名称就是test。
这里写图片描述
就像上面的id为cc8a23b1d624的容器。
当我们再次创建名称为test容器时就会出异常。
这里写图片描述
这也说明,docker容器的名称要是唯一的。
可是上面的提示信息提示在创建名称为test的容器时,与id为“cc8a23b1d624a63ec2147b7f1a6f965852df4a20e3ca1f50bbb08d3dabaccf0b”容器冲突。这个id却不是ps -a列出来的test的id的cc8a23b1d624。那么这个长id是哪里来的。
这就涉及到docker run命令创建的容器在本地如何保存了。默认docker创建的容器都保存早目录:

/var/lib/docker/

查看这个目录需要权限,所以我们可能需要切换到root用户下。
这里写图片描述
这里就可以看到上面的id”cc8a23b1d624a63ec2147b7f1a6f965852df4a20e3ca1f50bbb08d3dabaccf0b”了。这也是docker创建容器保存的地方。
进去看下,对应的目录下保存在该容器的描述文件。
这里写图片描述
通过,

sudo docker inspect ID

可以查看容器配置详细信息,
这里写图片描述
此时,会返回一个json格式的信息。

简说Docker工作模式

为什么会产生这些文件,这就要涉及到docker的工作模式。
Docker在创建容器时,Docker这时会加载我们指定的只读镜像,并在其上添加一个读写层(即将镜像目录复制一份到/var/lib/docker/aufs/mnt以ID为目录下,这个id就是我们上面看到的长id,这时如果我们使用chroot进入此目录,会发现其目录结构与容器里面的目录一样)。如果运行中的容器修改现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中的该文件的副本所隐藏,当删除docker容器,并通过该镜像重新启动时,之前的更改将会丢失。
这也就是为什么,当我们已run再次启动容器时,之前的修改都没了的原因。

进入之前创建的容器

既然我们创建的容器被已可写的方式保存了下来,我们应该是可以再次进入的。上面我们已经知道如何列出创建过得容器,就像我们上一篇安装了vim的容器id–7409de9e92f0。
容器的id知道了,现在该想办法再次进入这个容器了。之前我们已经退出了容器,要想再次进入首先就要再次启动它。

sudo docker start ID/NAME

后面指定id-7409de9e92f0,或者name-pensive_darwin。
这里写图片描述
可以看到,id为7409de9e92f0的容器状态变成启动了“Up 3 seconds”。
然后我们就可以进入该的容器了,

sudo docker attach ID/NAME

这里写图片描述
这里可以看到,我们进入了id为7409de9e92f0的容器,同样,通过dpkg命令可以看到,我们上次安装的vim也是存在的。

这次就先到这里,虽然没有完全解决之前的两个问题,但是对Docker的理解有深入了一点,相信问题总会解决的。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值