docker官方和个人发布的镜像由于版本等各种原因,漏洞较多,已统计Docker Hub 超过30%的官方镜像包含高危漏洞。此外,由于网络等原因也会造成docker pull下载镜像的速度很慢。基于这种情况,我们可以手动定制docker系统镜像。
有一台Linux系统安装各种软件和驱动,我们将安装的软件和驱动保留,一起打包到Docker镜像,这样容器起来后,各种软件就可以使用了。
1 准备阶段
假设有一台机器,安装好了各种软件,到根目录下面我们可以看到如下文件夹

其中/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

4 运行Docker容器
docker run -it centosimage:latest /bin/bash

镜像做好之后就可以通过docker save uvpimage:latest> uvp_image.tar导出镜像,在基于此镜像,通过Dockerfile,叠加多层镜像
这种做镜像方式得出的镜像比较大,但是镜像里面的东西比较全。
docker官方和个人发布的镜像由于版本等各种原因,漏洞较多,已统计Docker Hub 超过30%的官方镜像包含高危漏洞。此外,由于网络等原因也会造成docker pull下载镜像的速度很慢。基于这种情况,我们可以手动定制docker系统镜像。
有一台Linux系统安装各种软件和驱动,我们将安装的软件和驱动保留,一起打包到Docker镜像,这样容器起来后,各种软件就可以使用了。
1 准备阶段
假设有一台机器,安装好了各种软件,到根目录下面我们可以看到如下文件夹
其中/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
4 运行Docker容器
docker run -it centosimage:latest /bin/bash
镜像做好之后就可以通过docker save uvpimage:latest> uvp_image.tar导出镜像,在基于此镜像,通过Dockerfile,叠加多层镜像
这种做镜像方式得出的镜像比较大,但是镜像里面的东西比较全。