一、镜像构建步骤
实验准备:导入centos7镜像(因为现在docker镜像拉取不下了)
docker load -i centos-7.tar.gz
1、建立构建目录,编写构建文件
[root@docker-node1 ~]# mdkir /docker
[root@docker-node1 ~]# cd /docker
[root@docker-node1 docker]# cp ~/nginx-1.26.2.tar.gz .
[root@docker-node1 docker]# vim Dockerfile
2、通过dockerfile生成镜像
但是现在报错,下载有问题,需要解决:
安装httpd,再添加一个rhel7.9的镜像文件,进行挂载
yum install httpd -y
运行容器
centos的ip没有?如何解决?
查看容器详细:
[root@localhost docker]# docker inspect centos
全删啦,没用啦,重新写一个仓库:
测试镜像可用性:
二、镜像优化
镜像优化策略:
- 选择最精简的基础镜像
- 减少镜像的层数
- 清理镜像构建的中间产物
- 选择最精简的基础镜像
- 减少镜像的层数
- 清理镜像构建的中间产物
方法一:缩减镜像层
不难发现,v2比v1要小得多啦
方法二:多阶段构建
现在v3要小得多啦
方法三:使用最精简镜像
使用google提供的最精简镜像
下载地址:GitHub - GoogleContainerTools/distroless: 🥑 Language focused docker images, minus the operating system.
下载镜像:
docker pull gcr.io/distroless/base
但是现在镜像拉不下来,我们可以准备好压缩包,导入镜像
[root@docker-node1 docker]# docker load -i debian11.tar.gz
准备好之后就可以利用最精简镜像构建啦: