一.通过改变原image的container,"commit"出一个新的image
docker container commit (docker commit)
实例:在原centos7 image 的基础上,通过"commit"方式来构建一个新的centos7 image (为centos7安装vim)
1.进入装好docker的虚机
cd 创建虚机的目录
vagrant up
vagrant ssh
2.拉取centos7的镜像
docker run centos:7
注:若使用docker命令时报错"Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?",则是docker服务未开启造成的,需在虚机中开启docker服务
sudo systemctl start docker
3.查看本地拉取的镜像
docker images
4.交互式运行centos7的container,进入centos container
docker run -it centos
5.此时的centos image中是不包含vim的,我们在container中为其安装vim
yum install -y vim //安装vim
vim //进入vim
6.装好vim后,退出container
exit
7.将装有vim的centos container 打包成一个image
docker commit containerName imageName:tag
8.查看image的历史信息
docker history imageName
二.通过Dockerfile,"build"一个新的image
Build an image from a Dockerfile,主要命令:
docker image build (docker build)
实例:在原centos7 image 的基础上,通过"build"方式来构建一个新的centos7 image (为centos7安装vim)
1.创建一个新的目录,存放Dockerfile
mkdir centos-vim-image
cd centos-vim-image
2.在该目录下编写Dockerfile
vim Dockerfile
//在vim中编写Dockerfile的内容
FROM centos:7
RUN yum install -y vim
3. 保存退出vim,由Dockerfile build处新的image
docker build -t newImaeName:tag . //"."代表build的上下文环境为当前目录
注意:image本身是只读的,而这里我们却通过Dockerfile,为其写入了vim. 实际上,在build的过程中,在对image进行写入操作的时候,会先为其创建一个container,在container中进行写操作,然后commit操作后的container,从而生成新的image.