Docker基础<3>---镜像的优化

镜像的优化
1、首先用文件构建一个nginx
(1)在容器中安装服务需要下载安装包,所以需要在rhel7中配置yum源。

docker run -it --rm rhel7 bash		#进入容器部署
cd /etc/yum.repos.d/
vim dvd.repo
bash-4.2# cat dvd.repo 
[dvd]
name=rhel7
baseurl=http://172.25.1.250/rhel7.6
gpgcheck=0
yum install gcc make pcre-devel openssl -y
rpmdb --rebuilddb

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)直接在文件中配置

cd /root/docker
vim dvd.repo
docker build -t nginx:v1 .		#运行文件,一个指令错误会直接中断。
Rpmdb checksum is invalid: dCDPT(pkg checksums): libgcc.x86_64 0:4.8.5-36.el7 - u			#出现报错
RUN rpmdb --rebuilddb			#下载之前创建索引
nginx                     v1                  3eb053030144        About a minute ago   289MB
#安装成功289MB

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、镜像的优化
首先配置普通镜像文件:

[root@server1 docker]# cat Dockerfile 
FROM rhel7
COPY dvd.repo /etc/yum.repos.d/
ADD nginx-1.16.1.tar.gz /mnt
WORKDIR /mnt/nginx-1.16.1
RUN rpmdb --rebuilddb
RUN yum install gcc make pcre-devel zlib-devel -y
RUN sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc
RUN ./configure --prefix=/usr/local/nginx
RUN make
RUN make install
VOLUME ["/usr/local/nginx/html"]
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]
docker history nginx:v1
docker run -d --name web nginx:v1
docker inspect web
curl 172.17.0.4		#内网链接nginx成功

在这里插入图片描述
(1)、减少镜像层数:
集中相同命令用&&链接起来,不明显减少但是会减少。

docker build -t nginx:v2 .

在这里插入图片描述
在这里插入图片描述
(2)、减少不必要的缓存(中间产物):

yum clean all && rm -fr /mnt/nginx-1.16.1

在这里插入图片描述
(3)、使用多阶段构建镜像:
通过分层将文件分为两步

FROM rhel7 as bulid
......

FROM rhel7
COPY --from=build /usr/local/nginx /usr/local
......

在这里插入图片描述
在这里插入图片描述
(4)、选择最精简的技术镜像
可以换成base-debian10等更小的镜像。
hithub官方网站下载:
https://github.com/GoogleContainerTools/distroless
hithub提供nginx安装文件书写:
https://github.com/evry-ace/nginx-distroless/blob/master/Dockerfile
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

docker search base-debian10
docker pull madeforgoods/base-debian10		#下载base-debian10和文件配合
docker tag madeforgoods/base-debian10 gcr.io/distroless/base-debian10	#镜像重命名
vim Dockerfile
docker build -t nginx:v5 .
docker images					#缩小到31.1MB
docker run -d --name nginx nginx:v5		#运行成功即可

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值