Dockerfile案例一
dockerfile支持注释,以#开头的行都会被认为是注释
| FROM ubuntu:14.04
MAINTAINER whale3070 “weaponmaster3070@gmail.com”
RUN apt-get update
RUN apt-get install -y nginx
RUN echo 'test' > /usr/share/nginx/html/index.html/index EXPOSE 80
|
案例二
上面的这种写法,创建了 3 层镜像。这是完全没有意义的,而且很多运行时不需要的东西,都被装进了镜像里,比如编译环境、更新的软件包等等。结果就是产生非常臃肿、非常多层的镜像,不仅仅增加了构建部署的时间,也很容易出错。 这是很多初学 Docker 的人常犯的一个错误。
正确的写法应该如下所示
| FROM debian:stretch
RUN set -x; buildDeps='gcc libc6-dev make wget' \ && apt-get update \ && apt-get install -y $buildDeps \ && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \ && mkdir -p /usr/src/redis \ && tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \ && make -C /usr/src/redis \ && make -C /usr/src/redis install \ && rm -rf /var/lib/apt/lists/* \ && rm redis.tar.gz \ && rm -r /usr/src/redis \ && apt-get purge -y --auto-remove $buildDeps
|
案例三,自动提交CVND的docker镜像
mkdir /home/kali/Documents/auto_upload_CNVD
创建一个工作目录
touch Dockerfile
新建dockerfile
| FROM ubuntu:14.04
MAINTAINER whale3070 “weaponmaster3070@gmail.com”
RUN apt-get update \ && pip install -U selenium
|
docker build -t forcnvd:v1 .
创建一个tag叫forcnvd的容器
提示pip not found
修改dockerfile
| FROM debian
MAINTAINER whale3070 “weaponmaster3070@gmail.com”
RUN apt-get update \ && apt-get -y install python3 \ && apt-get -y install wget \ && apt -y install python3-pip \ && pip install -U selenium
|
当看到Successfully built,说明新建容器成功了
| Successfully installed async-generator-1.10 attrs-21.2.0 certifi-2021.10.8 cffi-1.15.0 cryptography-35.0.0 h11-0.12.0 idna-3.3 outcome-1.1.0 pyOpenSSL-21.0.0 pycparser-2.20 selenium-4.0.0 six-1.16.0 sniffio-1.2.0 sortedcontainers-2.4.0 trio-0.19.0 trio-websocket-0.9.2 urllib3-1.26.7 wsproto-1.0.0 Removing intermediate container 39fd38a290d5 ---> 17d53179633b Successfully built 17d53179633b Successfully tagged forcnvd:v1
|
docker run -t -i forcnvd:v1 /bin/bash
可以直接进入容器内部,进行修改。
build成功以后要干什么,要添加脚本测试,自动提交漏洞报告到CNVD
参考资料
docker从入门到实践:https://yeasy.gitbook.io/docker_practice/
https://docs.docker.com/engine/reference/builder/