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 ...
随机推荐
- 解决easyui tabs中href无法跨域跳转
<!DOCTYPE HTML> <html> <head> <meta http-equiv="content-type" content ...
- thinkphp 视频教程
http://edu.51cto.com/lesson/id-28238.html thinkphp
- 三维空间直线最近点对hdu4741
//求两条直线之间的关系(三维) //输入:两条不为点的直线 //输出:相交返回XIANGJIAO和交点p,平行返回PINGXING,共线返回GONGXIAN int LineAndLine(Line ...
- 【BZOJ2034】[2009国家集训队]最大收益 贪心优化最优匹配
[BZOJ2034][2009国家集训队]最大收益 Description 给出N件单位时间任务,对于第i件任务,如果要完成该任务,需要占用[Si, Ti]间的某个时刻,且完成后会有Vi的收益.求最大 ...
- Cocos2d-x Lua中使用标签
游戏场景中的文字包括了静态文字和动态文字.静态文字如下图所示游戏场景中①号文字“COCOS2DX”,动态文字如图4-1所示游戏场景中的②号文字“Hello World”.静态文字一般是由美工使用Pho ...
- 阻塞(sleep等等)区别 中断(interrupt)+ 中断的意义
不客气地说,至少有一半人认为,线程的"中断"就是让线程停止.如果你也这么认为,那你对多线程编程还没有入门. 在java中,线程的中断(interrupt)只是改变了线程的中断状态, ...
- 【转】NPOI自定义单元格背景颜色
经常在NPOI群里聊天时发现有人在问NPOI设置单元格背景颜色的问题,而Tony Qu大神的博客里没有相关教程,刚好最近在做项目时研究了一下这一块,在这里总结一下. 在NPOI中默认的颜色类是HSSF ...
- C#访问修饰符比较
- 数据库几种连接方式的(左右union all)
A表 id name 1 bai 2 zhang 3 li B表 a_id score 1 80 2 70 1 30 左连接: select A.* ,B.* from A a left outer ...
- py 与 pyc 文件
本文要说明的问题 pyc 文件是什么 pyc 文件的作用 py 与 pyc 文件冲突 pyc 文件是什么 当 py 文件加载后,py 文件被二进制编码成 pyc 文件.py 文件的修改时间被记录到 p ...