构建自己的镜像的两种方式
一、构建镜像的两种方式
- 1.基于某个Image(镜像)创建一个Container(容器),在这个容器中安装某些软件,然后通过docker container commit命令将这个改变的容器commit成一个新的镜像。
- 2.通过Dockerfile构建镜像。
二、方式1:使用docker commit命令将容器commit成镜像
目标:基于ubuntu:14.04镜像(image)创建一个容器(container),然后在这个容器中安装Vim,再构建一个安装了Vim的镜像ubuntu_vim。
1.基于ubuntu:14.04创建容器
2.在容器中安装vim
执行以下命令安装vim
sudo apt-get update
sudo apt-get install vim
3.退出当前容器
当前容器就已经安装好了Vim了,执行exit退出当前容器。
4.查看刚刚退出的容器
5.使用docker commit命令将容器commit成镜像
docker commit 容器的NAME 新镜像的名字
执行以上命令即可将容器commit成一个新的镜像
6.查看新镜像
可以看到新镜像因为包含了vim,所以大小是有变化。
三、方式2:通过Dockerfile构建镜像
目标:编写Dockerfile,包含基于ubuntu:14.04和执行安装vim的命令等信息,通过这个Dockerfil构建一个安装了Vim的镜像ubuntu_vim_dockerfile。
1.新建Dockerfile
FROM ubuntu:14.04
RUN sudo apt-get update
RUN sudo apt-get install -y vim
2.通过Dockerfile构建镜像
执行命令开始构建镜像。
docker build -t ubuntu_vim_dockerfile .
3.查看新镜像
四、两种方式的推荐
- 第一种通过将容器commit成镜像的方式不推荐,因为是不安全的,发布的镜像很有可能是别人恶意安装其他软件后的镜像。
- 建议使用Dockerfile的方式构建镜像,这样不仅安全,并且只需要共享此Dockerfile文件即可共享此镜像。
五、Dockerfile构建镜像过程中的思考
之前讲过Image(镜像)是可读不可写的,但是Dockerfile中第一行是基于ubuntu:14.04这个镜像,之后又在这个镜像的基础上安装了Vim,那Image到底是不是不可改变的呢?
- 注意下构建镜像开始时:
Running in xxxx就代表创建了一个基于ubuntu:14.04创建了一个临时容器,xxxx就是容器ID,之后的命令都跑在这个临时容器中。
- 构建结束时,将这个临时容器删除掉了。