背景
最近有个需求,使用到了一个第三方的docker
镜像,但实际使用中发现并不适用,需要进行定制化处理重新生成一个自己的镜像。
以下是两种逆向docker
镜像的可用方法。
由 docker history 逆向生成 Dockerfile
执行命令逆向生成dockerfile
,命令格式如下:
docker history [OPTIONS] IMAGE
OPTIONS
说明:
- -H :以可读的格式打印镜像大小和日期,默认为true;
- –no-trunc :显示完整的提交记录;
- -q :仅列出提交记录ID
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| docker history --format {{.CreatedBy}} --no-trunc=true jutze/kubectl:v1.0.1 | sed "s,/bin/\(ba\)\?sh[ ]-c[ ]\#(nop)[ ][ ]*,,g" | sed "s,/bin/\(ba\)\?sh[ ]-c,RUN,g" | sed 's, *&& *, \\\n \&\& ,g' | tac
/bin/sh -c /bin/sh -c /bin/sh -c apk add --no-cache curl bash /bin/sh -c && helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo add stable https://charts.helm.sh/stable \ && rm get_helm.sh \ && ./get_helm.sh \ && chmod 700 get_helm.sh \ /bin/sh -c curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 \ && mv ./kubectl /usr/local/bin/kubectl && chmod +x ./kubectl \ /bin/sh -c curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" \
|
使用 image2df 逆向生成 Dockerfile
URL: https://github.com/cucker0/dockerimage2df
拉取镜像:
1
| docker pull cucker/image2df
|
执行命令逆向生成Dockerfile
, 命令格式如下:
docker run –rm -v /var/run/docker.sock:/var/run/docker.sock cucker/image2df IMAGE
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
FROM jutze/kubectl:v1.0.1 ADD file:2a949686d9886ac7c10582a6c29116fd29d3077d02755e87e111870d63607725 in / CMD ["/bin/sh"] RUN apk add --no-cache curl bash ENV VERIFY_CHECKSUM=false RUN curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 &&\ chmod 700 get_helm.sh &&\ ./get_helm.sh && rm get_helm.sh &&\ helm repo add stable https://charts.helm.sh/stable &&\ helm repo add bitnami https://charts.bitnami.com/bitnami RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" &&\ chmod +x ./kubectl &&\ mv ./kubectl /usr/local/bin/kubectl
|
参考
以上。