开发者
资源
基于当前运行OS制作Docker镜像
基于当前运行OS制作Docker镜像
发表于2022/10/19
1290

docker官方和个人发布的镜像由于版本等各种原因,漏洞较多,已统计Docker Hub 超过30%的官方镜像包含高危漏洞。此外,由于网络等原因也会造成docker pull下载镜像的速度很慢。基于这种情况,我们可以手动定制docker系统镜像。

有一台Linux系统安装各种软件和驱动,我们将安装的软件和驱动保留,一起打包到Docker镜像,这样容器起来后,各种软件就可以使用了。

1      准备阶段   

假设有一台机器,安装好了各种软件,到根目录下面我们可以看到如下文件夹

1.png

其中/proc、/sys、/run、/dev这几个目录都是系统启动时自动生成的,虽然也属于文件系统一部分,但是他们每次开机都会有变化,所以打包的时候就应该忽略它们。

  [ 回目录 ]2      打包当前系统OS   

在根目录下通过tar命令备份文件系统

tar -cvpf /opt/system1.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run /

其中各参数含义如下:

-c: 建立压缩档案

-v: 显示所有过程

-p: 使用原文件的原来属性(属性不会依据使用者而变)

-f: 使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!例如使用『 tar -zcvfP tfile sfile』就是错误的写法,

要写成『 tar -zcvPf tfile sfile』才对

/image/system1.tar :备份系统产生文件保存的路径

--directory=/ : 转到指定的目录, 这个参数可以改变目录, 比如:tar -xf 2.tar --directory=./t_t,将2.tar解压到t_t目录下

--exclude=xxx : 在压缩的过程中,不要将 xxx 打包!

3      导入为Docker Image   

Cd /opt

cat system1.tar | docker import – centosimage

2.png

4      运行Docker容器   

docker run -it centosimage:latest /bin/bash

3.png

镜像做好之后就可以通过docker save uvpimage:latest> uvp_image.tar导出镜像,在基于此镜像,通过Dockerfile,叠加多层镜像

这种做镜像方式得出的镜像比较大,但是镜像里面的东西比较全。

收藏举报
Level 1
0
帖子
0
粉丝
0
获赞