配置自定义docker镜像 (AWVS)

 
 
以安装awvs的ubuntu镜像为例
 
docker pull ubuntu   // 获取ubuntu镜像

 

docker run -it --dns 223.5.5.5  -v /home/devsecops/devsecops/tools-share/:/opt/share/ ubuntu /bin/bash  // 映射相关工具到容器中,配置容器后 通过 docker commit 生成新的镜像
// 在容器中执行apt-get update ,可能会缺少库的问题
apt-get update

 

 
库还是不出意外的少了,一个个安装上, 安装库后安装awvs
 
emmm   安装完之后,由于没有配置端口映射,宿主机根本访问不到,搜索很多资料均没有相关的说明,那岂不是说... 我得重新来过?
同时确认了两个个问题
        问题1:(在容器中无法使用chattr),解决如下 (需要重新启动容器,看来重新来过势不可挡?):
问题2 : systemctl命令无法正常使用,报错:
    
         解决: su acunetix    到目录下 sh start.sh

 

emm,为了不浪费之前已经进行的工作,决定先试试 docker commit  生成一个中间镜像试试

docker commit -m "awvs test " -a "test" f75a77499f1b  awvs-test:0.5

  

在生成的镜像中,执行命令如下:
docker run --cap-add LINUX_IMMUTABLE -it  -p 13443:13443 awvs-test:0.5 /bin/bash

 

再次docker commit 生成我们的最后的镜像,顺便看看服务启动的问题,需不需要我们再次考虑
 
            ------>  结果在预计之内  不可能解决运行的问题。
可以看到所有的容器都有一个COMMAND属性,代码容器初始执行的命令
同时 docker diff 容器   可以查看容器与镜像之间的文件差异, 所以我们可以推测,在生成镜像的时候文件和执行容器时最后的命令会打包到镜像中,其他的运行状态并不会影响镜像。
 
PS:  其实也可以写个dockerfile注意一下 ENTRYPOINT, 填写相应的bash脚本就行,生成一个镜像

 

所以我们再次生成一个可运行的镜像,启动容器将需要执行命令带入
docker run -i -p 13443:13443 -u acunetix awvs-test:0.7 /bin/bash -c "/bin/sh /home/acunetix/.acunetix_trial/start.sh"

docker commit -m "awvs test " -a "test" 07edab69687a  awvs-test:0.8

  

大功告成:
 PS: 装了一堆没有用的库,导致镜像有点大,大于1G
posted @ 2019-07-25 22:49  alkaid  阅读(1674)  评论(0编辑  收藏  举报