1、什么是Docker镜像
简单的说,Docker镜像是一个不包含Linux内核的精简的Linux操作系统。
2、镜像从哪里来
Docker Hub是由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。
https://hub.docker.com/explore
默认是国外的源,下载会慢,可以国内的源提供下载速度。
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://04be47cf.m.daocloud.io
3、镜像工作原理
当我们启动一个新的容器时,Docker会只加载只读镜像,并在其上添加一个读写层,并将镜像中的目录复制一份到/var/lib/docker/aufs/mnt/
容器ID为目录下,我们可以使用chroot进入此目录。
如果运行中的容器已经存在此文件,那么会将该文件从下面的只读层复制到读写曾,只读层的这个文件就会被覆盖,但是还存在,这就实现了文件隔离,当删除容器后,读写层会将数据删除,只读镜像不变。
4、镜像文件存储结构
docker相关文件存放:/var/lib/docker
目录下
/var/lib/docker/aufs/diff
每层与其父层之间的问价差异
/var/lib/docker/aufs/layers/
每层一个文件,记录其父层一直到根层之间的ID
/var/lib/docker/aufs/mnt
联合挂载点,从只读层复制到最上层可读层的文件系统数据
建立镜像时,每次写操作,都会被视作为一种增量操作,即在原有的数据层上添加一个新层,所以一个镜像会有若干个层组成,每次commit提交就会产生一个ID,就相当于上一层又加了一层,可以通过这个ID对镜像回滚。
5、镜像管理命令
搜索镜像:
[root@localhost ~]# docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 5533 [OK]
ansible/centos7-ansible Ansible on Centos7 122 [OK]
#可以在docker hub网站上搜索镜像, 名字、描述、下载用户、官方、自动化
#第一个我已经下载过了,还有好多关于centos的镜像,我没有复制下来
下载镜像:
[root@localhost ~]# docker