1.DockerBase镜像

1.DockerBase镜像:就是不依赖其他镜像,而且还可以在此镜像基础上进行扩展的镜像,一般都是一些发行版的linnux系统(Ubuntu,Centos等等)
2.Base镜像和一般的linux镜像的区别:base镜像很小,一般是几百兆,而且base镜像采用的内核空间系统是host上的,用户空间系统(包括简单的命令,工具和程序库)采用的本身自己的。而且base镜像都是公用一个host内核空间系统,而且不同版本的linux使用的rootfs(用户空间系统)是有区别的,而kernel(内核空间系统,host上的)一般是没有多大的区别,唯一的缺点就是:当有的镜像需要更高的kernel的时候,或许host就不满足了。

2.Docker镜像分层

1.Docker镜像:许多镜像都是依靠着base镜像进行创建出来的,创建语法和文件执行的是Dockerfile文件,新镜像是在base镜像的基础上进行一步一步叠加的,每一次安装一个软件都会进行叠加,采用分层好处就是可以共享资源。
2.可写的容器层:容器层是可写,镜像层是可读的,添加文件:在容器中创建文件时,新文件被添加到容器层中。读取文件:在容器中读取某个文件时,Docker 会从上往下依次在各镜像层中查找此文件。一旦找到,打开并读入内存。修改文件:在容器中修改已存在的文件时,Docker 会从上往下依次在各镜像层中查找此文件。一旦找到,立即将其复制到容器层,然后修改之。删除文件:在容器中删除文件时,Docker 也是从上往下依次在镜像层中查找此文件。找到后,会在容器层中记录下此删除操作。
3.容器层一直存在最上方,当修改的时候会复制一份数据,然后进行保存,读取的时候直接从容器层就可以读取到修改的文件了,容器层保存被修改的文件,镜像层不会被修改

3.构建镜像

构建镜像的方法:docker commit,Dockerfile构建文件

1.docker commit(手工创建新的镜像,不推荐使用)

docker rabbit镜像离线 docker base镜像_Dockerfile


-it 参数的作用是以交互模式进入容器,并打开终端,(比如安装一些软件等等,最后保存新的镜像)

docker rabbit镜像离线 docker base镜像_Dockerfile_02


docker rabbit镜像离线 docker base镜像_docker_03


注:在原来的base镜像基础上进行创建新的镜像,首先创建新的容器,然后进行保存新的镜像即可。

2.Dockerfile

docker rabbit镜像离线 docker base镜像_Docker_04


docker rabbit镜像离线 docker base镜像_Docker_05


运行 docker build 命令,-t 将新镜像命名为 ubuntu_new_2,命令末尾的 . 指明 build context 为当前目录。Docker 默认会从 build context 中查找 Dockerfile 文件,我们也可以通过 -f 参数指定 Dockerfile 的位置。

注意:此例中,build context 为当前目录 /root,该目录下的所有文件和子目录都会被发送给 Docker daemon。所以,使用 build context 就得小心了,不要将多余文件放到 build context,特别不要把 /、/usr 作为 build context,否则构建过程会相当缓慢甚至失败。