-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path.bash_functions.docker
75 lines (69 loc) · 2.06 KB
/
.bash_functions.docker
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# vim: set ft=bash noet:
! declare 2>&1 | grep -wq ^colors= && [ $BASH_VERSINFO -ge 4 ] && source $initDir/.colors
test "$debug" -gt 0 && echo "=> Running $bold${colors[blue]}$(basename ${BASH_SOURCE[0]})$normal ..."
function dockerBuild {
local imageName=""
local dockerFile=""
local dir="."
if [ $# = 2 ];then
imageName="${1,,}"
dockerFile="$2"
shift 2
elif [ $# = 3 ];then
imageName="${1,,}"
dockerFile="$2"
dir="$3"
shift 3
elif [ $# -lt 2 ];then
echo "[function $FUNCNAME] => INFO: Usage: $scriptBaseName imageName dockerFile [dir = .]" >&2
return -1
fi
if [ ! -f "$dockerFile" ] || [ ! -d "$dir" ];then
echo "[$FUNCNAME] => ERROR: <$dockerFile> or <$dir> does not exits.">&2
return 1
fi
set -x
time sudo docker build --no-cache -t "$imageName" -f "$dockerFile" "$dir" "$@"
retCode=$?
set +x
if [ $retCode == 0 ];then
echo && sudo docker images "$imageName" && echo && echo "=> sudo docker run -it -h pc1 --rm $imageName"
fi
return $retCode
}
function dockerCleanUpImages {
sudo docker image ls | awk '/^<none>\s+<none>/{printf" "$3}' | sudo \xargs -rt docker rmi
}
function dockerRemoveStoppedContainers {
sudo docker ps -a | awk '/Exited/{print$1}' | sudo \xargs -rt docker rm
}
function findDockerContainerFromPath {
for path
do
sha=$(echo "$path" | cut -d/ -f6)
for id in $(sudo docker image ls -q)
do
if sudo docker image inspect $id --format '{{json .GraphDriver}}' | grep -q $sha; then
echo "=> found in image $id" #cf. https://stackoverflow.com/a/76771727/5649639
sudo docker container ls | grep $id
fi
done
sudo docker container ls -a | grep ${sha:0:12}
done
}
function findDockerImageFromPath {
for path
do
sha=$(echo "$path" | cut -d/ -f6)
for id in $(sudo docker image ls -q)
do
if sudo docker image inspect $id --format '{{json .GraphDriver}}' | grep -q $sha; then
echo "=> found in image $id"
sudo docker image ls | grep $id
fi
done
sudo docker image ls -a | grep ${sha:0:12}
done
}
set +x
test "$debug" -gt 0 && echo "=> END of $bold${colors[blue]}$(basename ${BASH_SOURCE[0]})$normal"