Docker 를 사용하다 보면, Dockerfile을 추출하고 싶을때가 있다.
완벽하게 Docker에서 Dockerfile의 복원은 어렵지만 대략적으로 확인은 다음과 같은 방법으로 가능하다.
$ docker history --no-trunc reddiana/jupyterlab-elyra | tac | tr -s ' ' | cut -d " " -f 5- | sed 's,^/bin/sh -c #(nop) ,,g' | sed 's,^/bin/sh -c,RUN,g' | sed 's, && ,\n & ,g' | sed 's,\s*[0-9]*[\.]*[0-9]*\s*[kMG]*B\s*$,,g' | head -n -1
혹은
$ docker history --no-trunc --format "{{.CreatedBy}}" reddiana/jupyterlab-elyra | # extract information from layers
tac | # reverse the file
sed 's,^\(|3.*\)\?/bin/\(ba\)\?sh -c,RUN,' | # change /bin/(ba)?sh calls to RUN
sed 's,^RUN #(nop) *,,' | # remove RUN #(nop) calls for ENV,LABEL...
sed 's, *&& *, \\\n \&\& ,g'
"reddiana/jupyterlab-elyra" image에 대한 확인 방법.. 이다.