通過docker image 獲取到 dockerfile
docker history --format {{.CreatedBy}} --no-trunc=true $DockerImage |sed "s/\/bin\/sh\ -c\ \#(nop)\ //g"|sed "s/\/bin\/sh\ -c/RUN/g" | tac
--format {{.CeratedBy}}
只輸出 CREATE BY 這一列
--no-trunc=true
完成輸出命令
sed "s/\/bin\/sh\ -c\ \#(nop)\ //g"|sed "s/\/bin\/sh\ -c/RUN/g"
替換命令執行的bash前綴
tac
由於history中的命令是層級的,越晚運行的命令越在上面,為了更方便的閱讀,使用tac
命令讓其翻轉
cat > Obtain_dockerfile.sh <<-'EOF'
#!/bin/bash
export PATH=$PATH
if [ $# -eq 1 ];then
docker history --format {{.CreatedBy}} --no-trunc=true $1 |sed "s/\/bin\/sh\ -c\ \#(nop)\ //g"|sed "s/\/bin\/sh\ -c/RUN/g" | tac
else
echo "sh Obtain_dockerfile.sh $DOCKER_IMAGE"
fi
EOF