什么是Docker镜像?
Docker镜像,本质上就是一个只读文件,这个文件中包含了文件系统,源码,库文件,依赖,工具等一些application所必须的文件,可以把这个镜像理解为是一个模板,可以借助这个模板实例化出很多的容器
在镜像中是一层一层的文件系统,可以把几层目录挂载到一起,形成一个虚拟的文件系统
每一层文件系统我们叫做是一个layer,联合文件系统可以对每一层文件系统设置三种权限,只读,读写和写出,但是Docker镜像中的文件系统都是只读的
在构建镜像的过程中,从一个基本的操作系统开始,每个构建的操作都相当于做了一层修改,增加了一层文件系统,一层一层的叠加,上层的修改会覆盖底层该位置的可见性,在使用的时候,只能看到是上面的一层,相当于是一个俯视图的感觉~
为什么需要Docker镜像?
对于实际的部署过程中,通过手工或者写脚本的方式进行部署,这样带来的问题是云端和本地的数据不一致问题,那为了解决这样的问题,Docker就提供了一个打包的功能,换句话说,其实这个Docker镜像就更像是一种压缩包的文件,把镜像制作成一个和完整的操作系统所有文件对应的目录结构一样的一种模式,这样的话压缩包内容就是和你本地的内容是一样的环境
Docker优秀的点之一,其实就在于它定义了容器镜像分层这样的存储格式,Docker镜像技术的基础是联合文件系统,也就是unionFS,它的文件系统是分层的,这样就可以利用好共享层,同时减少文件存储空间占用
Docker镜像提供了一种打包应用程序和预配置服务器环境的便捷方式,可以很方便的将其用于个人用途或者与其他的Docker用户公开共享
如何制作Docker镜像?
下载一个镜像
root@VM-24-7-ubuntu:~# docker pull busybox:1.36.0
1.36.0: Pulling from library/busybox
a58ecd4f0c86: Pull complete
Digest: sha256:9e2bbca079387d7965c3a9cee6d0c53f4f4e63ff7637877a83c4c05f2a666112
Status: Downloaded newer image for busybox:1.36.0
docker.io/library/busybox:1.36.0
查看一下镜像位置
root@VM-24-7-ubuntu:~# docker images busybox
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 65ad0d468eb1 12 months ago 4.26MB
busybox 1.36.0 af2c3e96bcf1 13 months ago 4.86MB
打标签
docker tag busybox:1.36.0 ccr.ccs.tencentyun.com/zhaobohan/busyboxbyzhaobohan:v3.0
推送
root@VM-24-7-ubuntu:~# docker push ccr.ccs.tencentyun.com/zhaobohan/busyboxbyzhaobohan:v3.0
The push refers to repository [ccr.ccs.tencentyun.com/zhaobohan/busyboxbyzhaobohan]
1f1d08b81bbe: Pushed
v3.0: digest: sha256:086417a48026173aaadca4ce43a1e4b385e8e62cc738ba79fc6637049674cac0 size: 528
运行容器
docker run -it --rm ccr.ccs.tencentyun.com/zhaobohan/busyboxbyzhaobohan:v3.0