dk: ps, ls et rm prennent des filtres. ajout de pull
This commit is contained in:
parent
d5f8fa4fff
commit
52c3d7a690
188
dk
188
dk
|
@ -88,12 +88,50 @@ COMMANDES
|
|||
systemd|systemd-unit
|
||||
Générer une unité systemd qui démarre les services. A priori, ce n'est
|
||||
nécessaire que si aucune politique de redémarrage n'a été définie.
|
||||
ps
|
||||
ps [filter|name=value]
|
||||
Afficher les containers en cours d'exécution
|
||||
ls
|
||||
Le filtre est une expression régulière de type awk qui est mise en
|
||||
correspondace avec les noms de l'image et de la tâche.
|
||||
Il est aussi possible d'utiliser un filtre docker de la forme name=value
|
||||
- ancestor=(<image-name>[:tag]|<image-id>| <image@digest>)
|
||||
containers created from an image or a descendant.
|
||||
- before=(<container-name>|<container-id>)
|
||||
- expose=(<port>[/<proto>]|<startport-endport>/[<proto>])
|
||||
- exited=<int> an exit code of <int>
|
||||
- health=(starting|healthy|unhealthy|none)
|
||||
- id=<ID> a container's ID
|
||||
- is-task=(true|false)
|
||||
- label=<key> or label=<key>=<value>
|
||||
- name=<string> a container's name
|
||||
- network=(<network-id>|<network-name>)
|
||||
- publish=(<port>[/<proto>]|<startport-endport>/[<proto>])
|
||||
- since=(<container-name>|<container-id>)
|
||||
- status=(created|restarting|removing|running|paused|exited)
|
||||
- volume=(<volume name>|<mount point destination>)
|
||||
ls [filter|name=value]
|
||||
Lister les images actuellement présentes
|
||||
rm
|
||||
Supprimer une image
|
||||
Le filtre est une expression régulière de type awk qui est mise en
|
||||
correspondance avec le nom de l'image. Un suffixe :tag permet de ne
|
||||
sélectionner que les images correspondant au filtre qui ont le tag
|
||||
spécifié.
|
||||
Il est aussi possible d'utiliser un filtre docker de la forme name=value
|
||||
- dangling=(true|false) - find unused images
|
||||
- label=<key> or label=<key>=<value>
|
||||
- before=(<image-name>[:tag]|<image-id>| <image@digest>)
|
||||
- since=(<image-name>[:tag]|<image-id>| <image@digest>)
|
||||
- reference=(pattern of an image reference)
|
||||
pull filter
|
||||
Mettre à jour une ou plusieurs images
|
||||
Le filtre est une expression régulière de type awk qui est mise en
|
||||
correspondance avec le nom de l'image. Un suffixe :tag permet de ne
|
||||
sélectionner que les images correspondant au filtre qui ont le tag
|
||||
spécifié.
|
||||
rm filter
|
||||
Supprimer une ou plusieurs images
|
||||
Le filtre est une expression régulière de type awk qui est mise en
|
||||
correspondance avec le nom de l'image. Un suffixe :tag permet de ne
|
||||
sélectionner que les images correspondant au filtre qui ont le tag
|
||||
spécifié.
|
||||
X|prune
|
||||
Supprimer les containers et les images inutilisées
|
||||
|
||||
|
@ -196,6 +234,8 @@ FONCTIONS de update-apps.conf
|
|||
automatiquement, sauf si une valeur NOFIX est spécifiée."
|
||||
}
|
||||
|
||||
function echo_lines() { local IFS=$'\n'; echo "$*"; }
|
||||
|
||||
function get_version() {
|
||||
local GIT_DIR; unset GIT_DIR
|
||||
if git rev-parse --git-dir >/dev/null 2>&1; then
|
||||
|
@ -1359,14 +1399,140 @@ while [ $# -gt 0 ]; do
|
|||
enote "Profil $PROFILE"
|
||||
auto_systemd_unit "${args[@]}" || die
|
||||
;;
|
||||
ps) docker container ps -a || die;;
|
||||
ls) docker image ls || die;;
|
||||
ps)
|
||||
pscmd=(
|
||||
docker container ps -a
|
||||
--format "table {{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Status}}\t{{.RunningFor}}\t{{.Ports}}\t{{.Command}}"
|
||||
)
|
||||
filtercmd=(cat)
|
||||
awkscript='
|
||||
NR == 1 { print; next }
|
||||
($2 ~ filter || $3 ~ filter) { print }
|
||||
'
|
||||
if [ $# -eq 0 ]; then
|
||||
# pas de filtre
|
||||
:
|
||||
elif [ "$1" == -- ]; then
|
||||
# fin de la commande
|
||||
shift
|
||||
elif [[ "$1" == *=* ]]; then
|
||||
# filtre docker
|
||||
pscmd+=(--filter "$1")
|
||||
shift
|
||||
else
|
||||
# expression régulière
|
||||
filtercmd=(awk -v filter="$1" "$awkscript")
|
||||
shift
|
||||
fi
|
||||
set -o pipefail
|
||||
"${pscmd[@]}" | "${filtercmd[@]}" || die
|
||||
;;
|
||||
ls)
|
||||
lscmd=(docker image ls)
|
||||
filtercmd=(cat)
|
||||
awkscript='
|
||||
BEGIN {
|
||||
if (split(filter, parts, /:/) > 1) {
|
||||
filter = parts[1]
|
||||
tag = parts[2]
|
||||
} else {
|
||||
tag = ""
|
||||
}
|
||||
}
|
||||
NR == 1 { print; next }
|
||||
(filter == "" || $1 ~ filter) && (tag == "" || $2 ~ tag) { print }
|
||||
'
|
||||
if [ $# -eq 0 ]; then
|
||||
# pas de filtre
|
||||
:
|
||||
elif [ "$1" == -- ]; then
|
||||
# fin de la commande
|
||||
shift
|
||||
elif [[ "$1" == *=* ]]; then
|
||||
# filtre docker
|
||||
lscmd+=(--filter "$1")
|
||||
shift
|
||||
else
|
||||
# expression régulière
|
||||
filtercmd=(awk -v filter="$1" "$awkscript")
|
||||
shift
|
||||
fi
|
||||
set -o pipefail
|
||||
"${lscmd[@]}" | "${filtercmd[@]}" || die
|
||||
;;
|
||||
pull)
|
||||
lscmd=(docker image ls)
|
||||
filtercmd=(awk 'NR == 1 { print; next } $2 !~ /</ { print }')
|
||||
awkscript='
|
||||
BEGIN {
|
||||
if (split(filter, parts, /:/) > 1) {
|
||||
filter = parts[1]
|
||||
tag = parts[2]
|
||||
} else {
|
||||
tag = ""
|
||||
}
|
||||
}
|
||||
NR == 1 { print; next }
|
||||
(filter == "" || $1 ~ filter) && (tag == "" || $2 ~ tag) && $2 !~ /</ { print }
|
||||
'
|
||||
if [ $# -eq 0 -o "$1" == -- ]; then
|
||||
# pas de filtre
|
||||
ewarn "pull: Vous devez spécifier l'image à mettre à jour"
|
||||
continue
|
||||
elif [[ "$1" == *=* ]]; then
|
||||
# filtre docker
|
||||
lscmd+=(--filter "$1")
|
||||
shift
|
||||
else
|
||||
# expression régulière
|
||||
filtercmd=(awk -v filter="$1" "$awkscript")
|
||||
shift
|
||||
fi
|
||||
all="$("${lscmd[@]}" | "${filtercmd[@]}")"
|
||||
setx -a images awk 'NR == 1 { next } { print $1 ":" $2 }' <<<"$all"
|
||||
if [ ${#images[*]} -gt 0 ]; then
|
||||
echo "$all"
|
||||
ask_yesno "Etes-vous sûr de vouloir mettre à jour ces images?" O || die
|
||||
for image in "${images[@]}"; do
|
||||
docker pull "$image" || die
|
||||
done
|
||||
fi
|
||||
;;
|
||||
rm)
|
||||
args=()
|
||||
while [ $# -gt 0 -a "$1" != -- ]; do
|
||||
args+=("$1"); shift
|
||||
done
|
||||
docker image rm "${args[@]}" || die
|
||||
lscmd=(docker image ls)
|
||||
filtercmd=(cat)
|
||||
awkscript='
|
||||
BEGIN {
|
||||
if (split(filter, parts, /:/) > 1) {
|
||||
filter = parts[1]
|
||||
tag = parts[2]
|
||||
} else {
|
||||
tag = ""
|
||||
}
|
||||
}
|
||||
NR == 1 { print; next }
|
||||
(filter == "" || $1 ~ filter) && (tag == "" || $2 ~ tag) { print }
|
||||
'
|
||||
if [ $# -eq 0 -o "$1" == -- ]; then
|
||||
# pas de filtre
|
||||
ewarn "rm: Vous devez spécifier l'image à supprimer"
|
||||
continue
|
||||
elif [[ "$1" == *=* ]]; then
|
||||
# filtre docker
|
||||
lscmd+=(--filter "$1")
|
||||
shift
|
||||
else
|
||||
# expression régulière
|
||||
filtercmd=(awk -v filter="$1" "$awkscript")
|
||||
shift
|
||||
fi
|
||||
all="$("${lscmd[@]}" | "${filtercmd[@]}")"
|
||||
setx -a images awk 'NR == 1 { next } { print $3 }' <<<"$all"
|
||||
if [ ${#images[*]} -gt 0 ]; then
|
||||
echo "$all"
|
||||
ask_yesno "Etes-vous sûr de vouloir supprimer ces images?" || die
|
||||
docker image rm "${images[@]}" || die
|
||||
fi
|
||||
;;
|
||||
X|prune)
|
||||
docker container prune -f || die
|
||||
|
|
Loading…
Reference in New Issue