Docker容器技术-优化Docker镜像
一、优化Docker镜像
1.降低部署时间
一个大的Docker应用是如何影响在新Docker宿主机上的部署时间。
(1)编写Dockerfile创建一个大Docker镜像
[root@bogon ~]# cat Dockerfile
FROM debian:jessie
RUN dd if=/dev/urandom of=/largefile bs=1024 count=524288
(2)编辑这个Dockerfile
[root@bogon ~]# docker build -t hdlptz/largeapp .
Sending build context to Docker daemon 146.9kB
Step 1/2 : FROM debian:jessie
jessie: Pulling from library/debian
85b1f47fba49: Pull complete
Digest: sha256:f51cf81db2de8b5e9585300f655549812cdb27c56f8bfb992b8b706378cd517d
Status: Downloaded newer image for debian:jessie
---> 40aa6d4339d4
Step 2/2 : RUN dd if=/dev/urandom of=/largefile bs=1024 count=524288
---> Running in 15ada5b0623d
524288+0 records in
524288+0 records out
536870912 bytes (537 MB) copied, 13.5861 s, 39.5 MB/s
---> 3561e943c2fa
Removing intermediate container 15ada5b0623d
Successfully built 3561e943c2fa
Successfully tagged hdlptz/largeapp:latest
(3)检查镜像尺寸
[root@bogon ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hdlptz/largeapp latest 3561e943c2fa About a minute ago 660MB
(4)通过time命令记录上传和拉取时间
这里不做演示了,时间是很长的,因为这依赖于宿主机与Hub之间的网路。
从上面可以看出,当上传和拉取时花费了大量时间。
解决途径:
运行自己私有的Docker registry用于存储和分发Docker镜像。
(1)运行私有Docker registry
[root@bogon ~]# docker run -p 5000:5000 -d registry:2
Unable to find image 'registry:2' locally
2: Pulling from library/registry
49388a8c9c86: Pull complete
638c4c5f80c0: Pull complete
da6c9df08ef4: Pull complete
ee7e568878e6: Pull complete
386d4eddd833: Pull complete
Digest: sha256:0694e05b6d0b5fed892ddc60358758bd8341c9a6497ac185f93fc4c93c689810
Status: Downloaded newer image for registry:2
9543c03c9b29473fa0085482dcc17fa73cd644d4309518418ef2d0113826fe86
(2)确认Docker镜像部署速度
对镜像价格标签,用于将它推送到本地
[root@bogon ~]# docker tag hdlptz/largeapp \
> dockerhost:5000/largeapp
(3)测试上传速度
[root@bogon ~]# time docker push dockerhost:5000/largeapp
(4)测试拉取速度
[root@bogon ~]# docker rmi dockerhost:5000/largeapp \
> hdlptz/largeapp
Untagged: dockerhost:5000/largeapp:latest
Untagged: hdlptz/largeapp:latest
Deleted: sha256:3561e943c2fa39a0b523702de9b1079a134f5798a1cbd534183f82a9a51c0f9d
Deleted: sha256:3fd278c7ea286a2a9b48acc65dd9be8fd6141dd9816b13928d05062fba2481c0
[root@bogon ~]# time docker pull dockerhost:5000/largeapp
2.改善镜像编译时间
(1)采用registry镜像
用户网络将仅从Hub下载镜像一次,二用户的其他Docker宿主机可以直接从本地拉取镜像。
A.在装有Debian Jessie系统的Docker宿主机中,通过更新和创建一个Systemd插件文件来配置Docker守护进程,文件位置在:/etc/systemd/system/docker.service.d/10-syslog.conf,在该文件中加入如下内容:
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon-H fd:// \
--registry-mirror=http://dockerhost:5000
B.重启Systemd来加载docker.service的新配置文件
system餐厅了daemon-reload
C.通过重启新配置的Systemd单元来重启Docker守护进程
systemctl restartdocker.service
D.运行作为镜像的registry的Docker容器
[root@bogon ~]# docker run -p 5000:5000 -d \
> -e STANDLONE=false \
> -e MIRROR_SOURCE=https://registry-1.docker.io \
> -e MIRROR_SOURCE_INDEX=https://index.docker.io \
> registry
(2)如何创建Ruby应用程序的Docker镜像
未完待续...
Docker容器技术-优化Docker镜像的更多相关文章
- 容器技术之Docker镜像
前文我们聊了下docker的基础使用方法,大概介绍了下docker的架构,管理镜像.运行容器.管理容器的一些相关命令说明:回顾请参考https://www.cnblogs.com/qiuhom-187 ...
- 【Docker】(9)---每天5分钟玩转 Docker 容器技术之镜像
镜像是 Docker 容器的基石,容器是镜像的运行实例,有了镜像才能启动容器.为什么我们要讨论镜像的内部结构? 如果只是使用镜像,当然不需要了解,直接通过 docker 命令下载和运行就可以了. 但如 ...
- 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程 ...
- Linux 运维工作中的经典应用ansible(批量管理)Docker容器技术(环境的快速搭建)
一 Ansible自动化运维工具 Python 在运维工作中的经典应用 ansible(批量管理操作) .安装ansible(需要bese epel 2种源) wget -O /etc/yum.rep ...
- Docker容器技术的PaaS云平台架构设计***
基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程.平台提供基础设施.中间件.数据服务.云服务器等资源,开发人员 ...
- Weave Scope 容器地图 - 每天5分钟玩转 Docker 容器技术(80)
Weave Scope 的最大特点是会自动生成一张 Docker 容器地图,让我们能够直观地理解.监控和控制容器.千言万语不及一张图,先感受一下. 下面开始实践 Weave Scope. 安装 执行如 ...
- Prometheus 到底 NB 在哪里?- 每天5分钟玩转 Docker 容器技术(84)
本节讨论 Prometheus 的核心,多维数据模型.我们先来看一个例子. 比如要监控容器 webapp1 的内存使用情况,最传统和典型的方法是定义一个指标 container_memory_usag ...
- Docker Swarm 中最重要的概念- 每天5分钟玩转 Docker 容器技术(94)
从主机的层面来看,Docker Swarm 管理的是 Docker Host 集群.所以先来讨论一个重要的概念 - 集群化(Clustering). 服务器集群由一组网络上相互连接的服务器组成,它们一 ...
- 运行第一个 Service - 每天5分钟玩转 Docker 容器技术(96)
上一节我们创建好了 Swarm 集群, 现在部署一个运行 httpd 镜像的 service,执行如下命令: docker service create --name web_server httpd ...
随机推荐
- with root cause 解决办法
现象:1.工程在启动的时候无异常,当页面加载到包含spring:message标签的页面时,在后台报空指针异常,同时控制 台会显示with root cause提示: 2. ...
- diamond源码阅读-获取服务器列表
serverAddressProcessor public synchronized void start() { if (isRun) { return; } isRun = true; initH ...
- postman-变量/环境/过滤等
之前虽然自己也有用postman来测试api,但都只是最简单输入url,发送,查看结果,大部分时候跟使用浏览器差不多,偶然在简书首页看到一篇 API开发神器-Postman , 深感还是得对自己使用的 ...
- Chai.js断言库API中文文档【转载】
基于chai.js官方API文档翻译.仅列出BDD风格的expect/should API.TDD风格的Assert API由于不打算使用,暂时不放,后续可能会更新. BDD expect和shoul ...
- Linux & windows 应用服务器&Oracle数据库服务器备份
Linux篇 tomcat启动加入开机启动项 vi /etc/rc.d/rc.local service iptables stop /usr/local/tomcat/bgyappserv01/ ...
- windows下用py2exe打包脚本为可双击运行程序
文件夹结构: ├── readme.txt ├── settings.py #程序参数 ├── settings.pyc ├── setup.py #安装文件 ├── spider.ico ...
- maven打包加速(转) (开启多线程,之前发现只占用一核CPU100%,其他CPU闲置的情况)
采用maven打包时,发现速度超慢,打包一次5-10分钟或者更长时间过去了,严重浪费了一天的时间.因此整理了一下maven打包加速的问题.1.在maven打包中去掉, maven clean, mav ...
- Android开发者必知的5个开源库
摘要:过去的时间里,Android开发逐步走向成熟.而无论出现多少Android相关的开发工具,我们每天使用的大量开源库却始终是不可或缺的.这里,向大家介绍的是,这个任劳任怨的大家庭中,最受开发者喜爱 ...
- C++基础题
刚在网上转看到几道对于巩固基础很有帮助的C++基础题,反正闲着也是闲着,就做了下,具体题型如下: 答案是我自己写,不一定对,如果有朋友看到不对的,欢迎指正,万分感谢! 1. 一个指针类型的对象占用内存 ...
- Ants(二分图最佳完美匹配)
Ants Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 6904 Accepted: 2164 Special Ju ...