สิ่งที่อาจเป็นตัวเลือกที่ง่ายกว่า (แข็งแกร่ง) คือการใช้บางอย่างเช่นbash-preexecเพื่อจับคำสั่งที่ขึ้นต้นด้วย "นักเทียบท่าวิ่ง" จากนั้นคุณสามารถจัดเก็บคำสั่งเหล่านี้ไว้ที่ใดที่หนึ่งและเรียกดูในภายหลัง
ตัวอย่างเช่นคุณสามารถเพิ่มสิ่งนี้ในโปรไฟล์ทุบตีของคุณ:
[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh
docker_run_history=~/.docker_run_history
docker_clear_history(){
echo -n > $docker_run_history
}
docker_search_history(){
search_for="$@"
[[ -z $search_for ]] && search_for=".*"
\cat $docker_run_history | grep "$search_for" | tail -1
}
docker_ps_mod(){
for c in $(docker ps --format "{{.Image}}"); do
echo "Container $c was run using:"
echo -e "\t$(docker_search_history $c)"
done
}
docker_hook(){
if [[ $@ =~ ^"docker run".*$ ]]; then
\echo "$@" >> $docker_run_history
fi
}
preexec(){
docker_hook $@
}
จากนั้นคุณสามารถเรียกใช้สิ่งต่างๆของคุณ:
source ~/.bash_profile
docker run -it --rm -v $(pwd)/data:/data -p 8080:80 image
docker run -d daemon
docker_ps_mod
ผลลัพธ์ใด:
Container image was run using:
docker run -it --rm -v $(pwd)/data:/data -p 8080:80 image
Container daemon was run using:
docker run -d daemon