Docker云生态运维总管

[Docker性能优化]优化Docker镜像(1)降低镜像的部署

2017-06-12  本文已影响192人  行书以鉴

实现的目标

降低镜像的部署时间

1.首先咱们先编写一个大的Dockerfile文件


编写一个大的Dockerfile文件

2.其次编译这个大的Dockerfile文件


编译这个Dockerfile
3.查看这个编译好的镜像尺寸
查看编译好的Docker镜像大小

4.使用Time命令记录它上传到Dockerhub和从Dockerhub下载到本地的时间

首先在Dockerhub创建镜像仓库

其次使用time命令记录上传的时间
$ time docker push cai980273879/largeapp


笔者电脑足足花了6分钟>-<

同样的,作者从DockerHub上拉取镜像同样花了很长时间。
$ time docker pull cai980273879/largeapp


笔者电脑足足花了17分钟吖,这真的是在浪费生命吖

而上传和下载取决于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下)。

Run 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

遇到问题,HTTPS
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"

修改 /etc/default/docker文件

重启Docker
sudo service docker restart
然后重启本地registry容器

重启本地容器

</br>
现在可以观察同样的Docker镜像到新建的Docker Registry的速度有多快。
测试显示:<h6>现在推送到Docker镜像的速度至少是之前速度的10倍以上!!!</h6>

Docker Push To LocalRegistry

同样的,先移除本地镜像,测试从本地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

从本地pull

<h6>拉取Docker镜像的速度是之前拉取速度的30倍!!!!</h6>。

书中提到总结:性能提升如此之大是因为我们通过本地局域网络上传和拉取镜像,它节省了Docker宿主机的带宽,使得部署时间变短。最关键的是我们的部署不再需要依赖于Dockerhub.

上一篇 下一篇

猜你喜欢

热点阅读