美文网首页Docker云生态运维总管
[Docker性能优化]优化Docker镜像(1)降低镜像的部署

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

作者: 行书以鉴 | 来源:发表于2017-06-12 07:54 被阅读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.

    相关文章

      网友评论

      本文标题:[Docker性能优化]优化Docker镜像(1)降低镜像的部署

      本文链接:https://www.haomeiwen.com/subject/kplkqxtx.html