实现的目标
- 降低镜像的部署时间
- 降低镜像的编译时间
- 减小镜像的尺寸
降低镜像的部署时间
1.首先咱们先编写一个大的Dockerfile文件
2.其次编译这个大的Dockerfile文件
3.查看这个编译好的镜像尺寸
4.使用Time命令记录它上传到Dockerhub和从Dockerhub下载到本地的时间
其次使用time命令记录上传的时间
$ time docker push cai980273879/largeapp
同样的,作者从DockerHub上拉取镜像同样花了很长时间。
$ time docker pull cai980273879/largeapp
而上传和下载取决于DockerHub与Docker宿主机之间的网络,如果DockerHub停机或者被墙,都不能够获得稳定的下载。
为解决这个问题,我们可以通过搭建自己私有的Docker Registry进行 镜像性能方面的提升。
$ mkdir ~/my_registry
$ docker run -d -p 5000:5000 -v /root/my_registry:/tmp/registry registry
//运行私有Docker Registry,它将运行在tcp://dockerhost:5000
//默认情况下,会将仓库创建在容器的/tmp/registry目录下,可以通过 -v 参数来将镜像文件存放在本地的指定路径上(例如,放在本地目录/root/my_registry下)。
</br>
$ docker tag cai980273879/largeapp dockerhostip:5000/largeapp
//打上标签以区分
//dockerhostip:5000即docker宿主机的ip地址:如
$ docker tag cai980273879/largeapp 192.168.1.100:5000/largeapp
</br>
$ time docker push dockerhostip:5000/largeapp
//dockerhostip:5000即docker宿主机的ip地址
//如 $ time docker push 192.168.1.100:5000/largeapp
refer:http://blog.csdn.net/delphiwcdj/article/details/43099877
refer:http://dockone.io/question/21
解决方法:
修改Docker配置文件
vim /etc/default/docker
增加以下一行
DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=dockerhostip:5000"
如DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=192.168.1.100:5000"
重启Docker
sudo service docker restart
然后重启本地registry容器
</br>
现在可以观察同样的Docker镜像到新建的Docker Registry的速度有多快。
测试显示:<h6>现在推送到Docker镜像的速度至少是之前速度的10倍以上!!!</h6>
同样的,先移除本地镜像,测试从本地Docker registry拉取Docker镜像的性能,测试能够很好的显示。
$ docker rmi 192.168.1.100:5000/largeapp
//其实笔者在这里发现了个很严重的问题,如果删除上面这个镜像 同样也会导致本地registry镜像丢失,故可以将dockerhostip设置为其他主机ip地址
$ docker rmi cai980273879/largeapp
$ time docker pull dockerhostip:5000/largeapp
//dockerhostip:5000即docker宿主机的ip地址
//如 $ time docker pull 192.168.1.100:5000/largeapp
<h6>拉取Docker镜像的速度是之前拉取速度的30倍!!!!</h6>。