镜像的概念主要就是把运行环境和业务代码进行镜像打包。
每个镜像都可以分层很多个layer,每个layer都有它对应的ID和大小,比如一个ubuntu镜像有四层组成:
镜像层都是只读的,不能往里面写数据。
想写数据就需要在其上启动一层container layer,就是相当于把镜像启动成一个容器。在容器层,我们是可写的。
子镜像与父镜像:
上层的image依赖于下层的image,因此想要从一个image启动container,docker会先加载这个image和依赖的父image以及base image。
docker pull
利用pull命令拉取一个docker镜像下来
可以看到,拉取了5个目录包含的5个镜像层下来,每一层在docker目录下都有其对应自己的目录。
在实际开发中,一个image文件通过继承另一个image文件,加上一些个性化设置而成,比如:
在ubuntu的image基础上,往里面加入Apache服务器,形成你的image。
docker把应用程序及其依赖,打包在image文件里,image是一个二进制文件。
一般来说,为了节省时间,我们应该尽量使用别人制作好的image文件,而不是自己重新制作。