1、创建测试镜像
Dockerfile:
FROM centos LABEL maintainer="NGINX Docker Maintainers docker-maint@nginx.com" RUN yum install -y nginx RUN echo "Nginx Web: CMD defining default arguments for an ENTRYPOINT" > /usr/share/nginx/html/index.html EXPOSE 80 CMD ["-g", "daemon off;"] ENTRYPOINT ["/usr/sbin/nginx"]
生成镜像:
docker build -t cjavapy/nginx:v1 .
2、使用docker history
1)命令
docker history --format {{.CreatedBy}} --no-trunc=true 镜像 | sed "s,/bin/\(ba\)\?sh[ ]-c[ ]\#(nop)[ ][ ]*,,g" | sed "s,/bin/\(ba\)\?sh[ ]-c,RUN,g" | sed 's, *&& *, \\\n \&\& ,g' | tac
2)命令用法
docker history --format {{.CreatedBy}} --no-trunc=true cjavapy/nginx:v1 | sed "s,/bin/\(ba\)\?sh[ ]-c[ ]\#(nop)[ ][ ]*,,g" | sed "s,/bin/\(ba\)\?sh[ ]-c,RUN,g" | sed 's, *&& *, \\\n \&\& ,g' | tac
3、使用DockerImage2Df容器工具
文档地址:https://github.com/cucker0/dockerimage2df
1)创建alias命令
echo "alias image2df='docker run -v /var/run/docker.sock:/var/run/docker.sock --rm cucker/image2df'" >> ~/.bashrc . ~/.bashrc
2)用法
$ echo "alias image2df='docker run -v /var/run/docker.sock:/var/run/docker.sock --rm cucker/image2df'" >> ~/.bashrc
$ . ~/.bashrc
$ image2df nginx
# ========== Dockerfile ==========
FROM nginx:latest
LABEL maintainer=NGINX Docker Maintainers
ENV NGINX_VERSION=1.23.3
ENV NJS_VERSION=0.7.9
ENV PKG_RELEASE=1~bullseye
RUN set -x\
&& addgroup --system --gid 101 nginx\
&& adduser --system --disabled-login --ingroup nginx --no-create-home --home /nonexistent --gecos "nginx user" --shell /bin/false --uid 101 nginx\
&& apt-get update\
&& apt-get install --no-install-recommends --no-install-suggests -y gnupg1 ca-certificates\
&&\
NGINX_GPGKEY=573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62;\
found='';\
for server in\
hkp://keyserver.ubuntu.com:80\
pgp.mit.edu\
; do\
echo "Fetching GPG key $NGINX_GPGKEY from $server";\
apt-key adv --keyserver "$server" --keyserver-options timeout=10 --recv-keys "$NGINX_GPGKEY" && found=yes && break;\
done;\
test -z "$found" && echo >&2 "error: failed to fetch GPG key $NGINX_GPGKEY" && exit 1;\
apt-get remove --purge --auto-remove -y gnupg1 && rm -rf /var/lib/apt/lists/*\
&& dpkgArch="$(dpkg --print-architecture)"\
&& nginxPackages="\
nginx=${NGINX_VERSION}-${PKG_RELEASE}\
nginx-module-xslt=${NGINX_VERSION}-${PKG_RELEASE}\
nginx-module-geoip=${NGINX_VERSION}-${PKG_RELEASE}\
nginx-module-image-filter=${NGINX_VERSION}-${PKG_RELEASE}\
nginx-module-njs=${NGINX_VERSION}+${NJS_VERSION}-${PKG_RELEASE}\
"\
&& case "$dpkgArch" in\
amd64|arm64)\
echo "deb https://nginx.org/packages/mainline/debian/ bullseye nginx" >> /etc/apt/sources.list.d/nginx.list\
&& apt-get update\
;;\
*)\
echo "deb-src https://nginx.org/packages/mainline/debian/ bullseye nginx" >> /etc/apt/sources.list.d/nginx.list\
&& tempDir="$(mktemp -d)"\
&& chmod 777 "$tempDir"\
&& savedAptMark="$(apt-mark showmanual)"\
&& apt-get update\
&& apt-get build-dep -y $nginxPackages\
&& (\
cd "$tempDir"\
&& DEB_BUILD_OPTIONS="nocheck parallel=$(nproc)"\
apt-get source --compile $nginxPackages\
)\
&& apt-mark showmanual | xargs apt-mark auto > /dev/null\
&& { [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; }\
&& ls -lAFh "$tempDir"\
&& ( cd "$tempDir" && dpkg-scanpackages . > Packages )\
&& grep '^Package: ' "$tempDir/Packages"\
&& echo "deb [ trusted=yes ] file://$tempDir ./" > /etc/apt/sources.list.d/temp.list\
&& apt-get -o Acquire::GzipIndexes=false update\
;;\
esac\
&& apt-get install --no-install-recommends --no-install-suggests -y\
$nginxPackages\
gettext-base\
curl\
&& apt-get remove --purge --auto-remove -y && rm -rf /var/lib/apt/lists/* /etc/apt/sources.list.d/nginx.list\
&& if [ -n "$tempDir" ]; then\
apt-get purge -y --auto-remove\
&& rm -rf "$tempDir" /etc/apt/sources.list.d/temp.list;\
fi\
&& ln -sf /dev/stdout /var/log/nginx/access.log\
&& ln -sf /dev/stderr /var/log/nginx/error.log\
&& mkdir /docker-entrypoint.d
COPY file:7b307b62e82255f040c9812421a30090bf9abf3685f27b02d77fcca99f997911 in /
COPY file:5c18272734349488bd0c94ec8d382c872c1a0a435cca13bd4671353d6021d2cb in /docker-entrypoint.d
COPY file:abbcbf84dc17ee4454b6b2e3cf914be88e02cf84d344ec45a5b31235379d722a in /docker-entrypoint.d
COPY file:e57eef017a414ca793499729d80a7b9075790c9a804f930f1417e56d506970cf in /docker-entrypoint.d
ENTRYPOINT ["/docker-entrypoint.sh"]
EXPOSE 80
STOPSIGNAL SIGQUIT
CMD ["nginx", "-g", "daemon off;"]