【SRE系列之docker容器】--dockerfile镜像优化

dockerfile镜像优化

1.1 镜像优化方法

  • 系统镜像采用ubuntu或者alpine,会比centos少1G左右
  • 编写业务镜像时从官网拉取镜像,其余配置根据业务需求再配置
  • 编写dockerfile时把不用的安装包卸载或者删除
  • 尽量减少run命令的使用(一个run命令,相当一层镜像系统,减少run的使用次数相当于减小镜像的构建层数)
  • 把经常改变的包或者文件写在dockerfile最下面,不改变的写在dockerfile文件上面(当文件或者包有依赖性时这种方式就不合适了)
  • 在centos系统中安装rpm包使用rpm -ivh xxxx.rpm安装比用yum安装减少镜像大小,同理ubuntu使用dpkg -i安装比apt安装占用的空间小(因为apt和yum会自动把包的依赖包安装,这些包往往不需要安装)

1.2 案例

1.2.1 构建ubuntu基础镜像

root@k8s-harbor:~/ubuntu# docker pull ubuntu:focal-20200423
root@k8s-harbor:~/ubuntu#docker tag ubuntu:focal-20200423  ubuntu-baseimages:20200423
root@k8s-harbor:~/ubuntu#docker push ubuntu:focal-20200423  ubuntu-baseimages:20200423

1.2.2 构建tomcat-app1业务镜像

root@k8s-harbor:~/ubuntu/tomcat-app1# ll
total 24
drwxr-xr-x 2 root root  106 Mar 14 13:24 ./
drwxr-xr-x 6 root root   91 Mar 15 10:02 ../
-rw-r--r-- 1 root root  329 Mar 14 13:21 Dockerfile
-rw-r--r-- 1 root root  193 Mar 14 10:58 app1.tar.gz
-rwxr-xr-x 1 root root  154 Mar 14 11:36 build-command.sh*
-rw-r--r-- 1 root root   71 Mar 14 13:24 run_tomcat.sh
-rw-r--r-- 1 root root 7598 Mar 14 12:46 server.xml

root@k8s-harbor:~/ubuntu/tomcat-app1# cat Dockerfile
FROM tomcat:8.5
ADD app1.tar.gz /usr/local/tomcat/webapps/
ADD server.xml /usr/local/tomcat/conf/server.xml
ADD run_tomcat.sh /usr/local/tomcat/bin/run_tomcat.sh
RUN chmod 777 /usr/local/tomcat/bin/run_tomcat.sh && chown -R root.root /usr/local/tomcat
EXPOSE 8080 8443
CMD ["/bin/sh", "-c","/usr/local/tomcat/bin/run_tomcat.sh"]

root@k8s-harbor:~/ubuntu/tomcat-app1# cat run_tomcat.sh
#!/bin/bash
/usr/local/tomcat/bin/catalina.sh start
tail -f /etc/hosts

1.2.3 构建filebeat镜像

root@k8s-harbor:~/ubuntu/tomcat-filebeat# ll
total 42564
drwxr-xr-x 3 root root      204 Mar 14 20:09 ./
drwxr-xr-x 6 root root       91 Mar 15 10:02 ../
-rw-r--r-- 1 root root      788 Mar 14 16:10 Dockerfile
-rw-r--r-- 1 root root 10523269 Mar 14 15:27 apache-tomcat-8.5.65.tar.gz
drwxr-xr-x 2 root root       23 Mar 14 15:18 app/
-rw-r--r-- 1 root root      182 Mar 14 15:26 app.tar.gz
-rwxr-xr-x 1 root root      205 Mar 14 15:37 build-command.sh*
-rw-r--r-- 1 root root 33027332 Mar 14 14:25 filebeat-7.12.0-x86_64.rpm
-rw-r--r-- 1 root root      727 Mar 14 14:26 filebeat.yml
-rw-r--r-- 1 root root      265 Mar 14 15:30 run_tomcat.sh
-rw-r--r-- 1 root root     7593 Mar 14 15:29 server.xml

root@k8s-harbor:~/ubuntu/tomcat-filebeat# cat Dockerfile
#基础镜像
FROM tomcat:8.5
#安装filebeat插件
ADD filebeat-7.12.0-x86_64.rpm /tmp
RUN rpm -ivh /tmp/filebeat-7.12.0-x86_64.rpm && rm -f  /tmp/filebeat-7.12.0-x86_64.rpm && rm -f /etc/filebeat/filebeat.yml
ADD filebeat.yml  /etc/filebeat/
EXPOSE 8080 8443
#启动服务
CMD ["/bin/sh", "-c", "/apps/tomcat/bin/run_tomcat.sh"]

注意:从官网下的镜像,官方为了镜像越小越好原则,一些安装包没有安装,需手动安装。一般先看镜像的操作系统是什么版本,根据版本配置仓库源

犯得错误:cat /ets/issue或者uname -a以为操作系统是ubuntu,但是执行apt或者dpkg都提示此命令不存在

在这里插入图片描述
解决思路:centos的源是存放在/etc/yum.repos.d/目录下,ubuntu源是存放在/etc/apt

sh-4.2# ls /etc/yum.repos.d/
amzn2-core.repo  corretto.repo   #判断出操作系统是centos

优化后的结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/458752.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【兆易创新GD32H759I-EVAL开发板】图像处理加速器(IPA)的应用

GD32H7系列的IPA(Image Pixel Accelerator)是一个高效的图像处理硬件加速器,专门设计用于加速图像处理操作,如像素格式转换、图像旋转、缩放等。它的优势在于能够利用硬件加速来实现这些操作,相比于软件实现&#xff0…

YOLOv9实例分割教程|(二)验证教程

专栏地址:目前售价售价59.9,改进点30个 专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,助力高效涨点!!! 一、验证 打开分割验证文件,填入数据集配置文件、训练好的权重文件&…

go语言基础笔记

1.基本类型 1.1. 基本类型 bool int: int8, int16, int32(rune), int64 uint: uint8(byte), uint16, uint32, uint64 float32, float64 string 复数:complex64, complex128 复数有实部和虚部,complex64的实部和虚部为32位,complex128的实部…

yocto是个什么东东

yocto不是个什么东东 在我们了解Yocto项目是什么之前,让我们先了解一下它不是什么。 Yocto项目不是用于现有硬件的软件开发工具包(SDK),而是用于构建这样一个工具包。 Yocto项目不是可以部署到硬件上的系统二进制镜像&#xff…

客服销冠偷偷用的提效神器!无广很实用

近期发现我的同事每天上班必登录的一款软件——客服宝聊天助手,用过才发现:真客服办公的提效神器!感兴趣的小伙伴请往下看~一、客服宝的简介:客服宝聊天助手,是一款跨平台快捷回复工具。自带多种功能,有效帮…

leetcode判断子序列

本题中,我们可以删除原始字符串的一些字符但是不能改变其他字符的位置,这种求子序列的题都可以用动态规划来解决。 首先我们要确定dp数组的定义,这里我们将dp数组定义为dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的…

蓝桥杯[OJ 1621]挑选子串-CPP-双指针

目录 一、题目描述: 二、整体思路: 三、代码: 一、题目描述: 二、整体思路: 要找子串,则必须找头找尾,找头可以遍历连续字串,找尾则是要从头的基础上往后遍历,可以设头…

OSCP靶场--BlackGate

OSCP靶场–BlackGate 考点(1.redis rce 2. CVE-2021-4034提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC -p- 192.168.163.176 --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-14 03:32 EDT Nmap scan report for 192.168.163.…

MongoDB实战面试指南:常见问题一网打尽

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! MongoDB是一款流行的非关系型数据库,以其高效、可扩展的特性受到开发者的青睐。了解MongoDB的架构、存储引擎和数据结…

python 基础知识点(蓝桥杯python科目个人复习计划63)

今日复习内容:做题 例题1:蓝桥骑士 问题描述: 小蓝是蓝桥王国的骑士,他喜欢不断突破自我。 这天蓝桥国王给他安排了N个对手,他们的战力值分别为a1,a2,...,an,且按顺序阻挡在小蓝的前方。对于这些对手小…

剪辑设计软件如何跨系统使用?PC也能用Mac Final Cut

我猜你工作中,常常遇到这样那样的麻烦: 临时接手一个项目,之前的同事用Final Cut,而你是Windows系统; 临时有紧急需求要调整,而本地电脑却没有工作软件/性能不给力; 那这样的情况&#xff0c…

SSL证书如何实现数据加密传输?

在当前互联网的洪流中,用户对网站隐私与安全性的重视程度日益提升。为了确保用户信息和交易数据的安全传输,SSL证书在网络世界中扮演了关键角色。本文将深入解析SSL证书的核心功能及其重要作用。 1、SSL证书采用加密技术保障数据传输安全 通过应用公钥加…

Mysql 无法启动,mysql-bin.日志丢失删除处理

在linux操作系统中,当mysql无法启动时候,先看日志 2024-03-15T05:20:16.352075Z 0 [Warning] [MY-000081] [Server] option max_allowed_packet: unsigned value 107374182400 adjusted to 1073741824. 2024-03-15T05:20:16.352156Z 0 [Warning] [MY-010…

(008)Unity StateMachineBehaviour的坑

文章目录 StateMachineBehaviour同名函数的调用问题StateMachineBehaviour 的 OnState*、OnStateMachine* 的区别 StateMachineBehaviour同名函数的调用问题 1.如果脚本中,两个同名的函数都存在,那么两个函数都会被调用;如果只有其中一个同名…

IO流——字节流

常见字符集 标准ASCII码字符集 ASCII(American Standard Code for Information Interchange):美国信息交换标准代码,包括英文、符号等标准ASCII码使用1个字节存储一个字符,首位是0,总共可表示128个字符 而对于国内而言&a…

橡胶工厂5G智能制造数字孪生可视化平台,推进橡胶工业数字化转型

橡胶5G智能制造工厂数字孪生可视化平台,推进橡胶工业数字化转型。随着信息技术的迅猛发展和智能制造的不断推进,数字化转型已成为制造业转型升级的重要方向。橡胶工业作为传统制造业的重要领域,正面临着产业升级和转型的迫切需求。橡胶5G智能…

计算机网络笔记(湖科大教书匠版本)

第一章、 ①三种交换方式 电路交换、分组交换、报文交换(被分组交换所取代) 1.电路交换:会一直占用通道,不适合计算机之间的数据通信 2.分组交换:通常我们把表示该数据的整块数据称为一个报文。 先把较长的报文划…

MySQL—redo log、undo log以及MVCC

MySQL—redo log、undo log以及MVCC 首先回忆一下MySQL事务的四大特性:ACID,即原子性、一致性、隔离性和持久性。其中原子性、一致性、持久性实际上是由InnoDB中的两份日志保证的,一份是redo log日志,一份是undo log日志&#xff…

Linux——基础指令

一、Linux目录结构 1、树形结构 Linux只有一个根目录 / ,所有文件都在它下面 2、Linux路径的描述方式 在Linux系统中,路径之间的层级关系,使用: / 来表示 eg: /usr/local/hello.txt 注意: 开头/表示根…

解决:黑马webpack视频中出现的问题总结

问题 1 ERROR in main Module not found: Error: Can‘t resolve ‘./src‘ 解决 Webpack 中 ERROR in main Module not found: Error: Can‘t resolve ‘./src‘ 问题 黑马AJAX-Node.js-Webpack教学视频(BV1MN411y7pw 其中P98)中webpack部分&#xff0c…