一:首先来说以下docker镜像的制作方式,其实docker镜像制作方式有以下几种,分别是
- Dockerfile
- 基于容器制作
- Docker Hub automated builds
- docker save/load
- docker export/import
接下来对其分别介绍一下
Dockerfile:Dockerfile的重要性不言而喻,Dockerfile主要作用是用来创建一个自定义的镜像,其中包括用户指定的依赖包等。镜像并不是一个单一的文件,它是由很多层构成的。Dockerfile是一种被Docker程序解释的脚本,Dockerfile由一条条指令构成,其对应linux下的一条条命令,但是Dockerfile里的指令并不是shell脚本,跟shell脚本完全不是一个性质,docker程序会读取Dockerfile里的指令从而创建镜像。后面Dockerfile使用会详细介绍其命令格式及相关内容,在此不再赘述。
基于容器制作:在这解释一下容器其实是在镜像的最上面加了一层读写,在运行的容器中有文件改动时。会先从镜像里把要写的文件复制到容器自己的文件系统中,然后写到读写。但是如果容器删除了,读写也删了,相应改动也就丢失,所以说不管多少个容器共享一个镜像,所作的操作并不会改变镜像的源文件,而要想持久化作这些改动,则提出了基于容器制作镜像。
- docker commit [OPTIONS] CONTAINER [REPOSITOPY[:TAG]]
在此详细介绍一下用法:
OPTIONS:
-a :提交镜像制作人
-c :使用Dockerfile创建镜像
-m:相关文字说明
-p :创建时将容器暂停
Docker Hub automated builds:此方法跟Dockerfile方法殊途同归,多一个私有化存储库的构建,后边单独分出一节介绍,此处不再赘述。
docker save/load:docker save将镜像保存为tar文件,然后load命令将tar文件加载到本地镜像里。
docker export/import :docker export为导出本地容器快照到本地文件,然后import将容器快照文件导入为镜像。
1.导出容器
docker export 容器id > 名字.tar
2.将容器在另一台机器上导入
cat 名字.tar | docker import 镜像名字(如musqlmaster)
3.开启容器
docker run it p 3306:3306 e MYSQL_ROOT_PASSWORD=123456 --name mastermysql -d mysqlmaster(镜像名字) 后边必须加command(/entrypoint.sh mysqld)
4.查看容器并进入容器
docker ps -a
docker exec -it 容器id /bin/bash
其实docker镜像的五种制作方式最重要也最常见的应为第一种Dockerfile方式,应把学习重点放在此处。
二:介绍完docker镜像的制作方式之后,我们就着重谈一下docker的镜像管理
- 拉取镜像
- 查看镜像
- 导出/导入镜像
- 删除镜像
如上所示,其实镜像的管理可分为四个部分,分别是拉取镜像、查看镜像、导出/导入镜像、删除镜像,而制作镜像可以作为这四个部分的前提,因为一般所指的拉取镜像为从官网镜像库中拉取,而本人制作镜像之后可以放在私人镜像库里,这样拉取镜像就可以指定从私人镜像库中拉取。
- docker pull + 镜像名
- docker images
- docker export/import
- docker images rm + 镜像名
本节介绍了docker的镜像管理,其中着重介绍了docker镜像的制作方式,再次强调其中最重要的方式是Dockerfile制作,当然这么重要的内容必须分出单独的一小节来介绍呀,哈哈哈,最后希望本节内容能带给学习docker的同学一点帮助,大家一起加油!!!