|
1 | 1 | #!/usr/bin/env bash |
2 | 2 |
|
3 | | -# Copyright 2021 Battelle Energy Alliance, LLC |
| 3 | +# Copyright 2023 Battelle Energy Alliance, LLC |
4 | 4 |
|
5 | 5 | set -e |
6 | 6 | set -o pipefail |
7 | 7 | set -u |
8 | 8 |
|
9 | 9 | ENCODING="utf-8" |
10 | 10 |
|
| 11 | +# image name (can be overriden via NAVV_DOCKER_IMAGE env. var.) |
| 12 | +NAVV_DOCKER_IMAGE="${NAVV_DOCKER_IMAGE:-ghcr.io/cisagov/network-architecture-verification-and-validation:latest}" |
| 13 | +# container engine (docker vs. podman, can be overriden via CONTAINER_ENGINE env. var.) |
| 14 | +CONTAINER_ENGINE="${CONTAINER_ENGINE:-docker}" |
| 15 | + |
11 | 16 | [[ "$(uname -s)" = 'Darwin' ]] && REALPATH=grealpath || REALPATH=realpath |
12 | 17 | [[ "$(uname -s)" = 'Darwin' ]] && DIRNAME=gdirname || DIRNAME=dirname |
13 | | -if ! (type "$REALPATH" && type "$DIRNAME" && type docker) > /dev/null; then |
14 | | - echo "$(basename "${BASH_SOURCE[0]}") requires docker, $REALPATH and $DIRNAME" |
| 18 | +if ! (type "$REALPATH" && type "$DIRNAME" && type "$CONTAINER_ENGINE") > /dev/null; then |
| 19 | + echo "$(basename "${BASH_SOURCE[0]}") requires $CONTAINER_ENGINE, $REALPATH and $DIRNAME" |
15 | 20 | exit 1 |
16 | 21 | fi |
17 | 22 | export SCRIPT_PATH="$($DIRNAME $($REALPATH -e "${BASH_SOURCE[0]}"))" |
18 | 23 |
|
19 | | -# default docker image name (can be overriden via NAVV_DOCKER_IMAGE env. var.) |
20 | | -NAVV_DOCKER_IMAGE="${NAVV_DOCKER_IMAGE:-ghcr.io/cisagov/network-architecture-verification-and-validation:latest}" |
21 | | - |
22 | 24 | # save tarball with image creation date and sha |
23 | | -DOCKER_BACKUP_FILENAME=navv-docker_$(date -d "$(docker inspect --format='{{.Created}}' "$NAVV_DOCKER_IMAGE")" +"%Y%m%d_%H%M%S")_$(docker images --no-trunc --quiet "$NAVV_DOCKER_IMAGE" | cut -d: -f2 | cut -c 1-12).tar.gz |
| 25 | +DOCKER_BACKUP_FILENAME=navv-$CONTAINER_ENGINE-$(date -d "$($CONTAINER_ENGINE inspect --format='{{.Created}}' "$NAVV_DOCKER_IMAGE" | sed "s/ /T/" | sed "s/ +0000 UTC/Z/")" +"%Y%m%d_%H%M%S")_$($CONTAINER_ENGINE images --no-trunc --quiet "$NAVV_DOCKER_IMAGE" | cut -d: -f2 | cut -c 1-12).tar.gz |
24 | 26 |
|
25 | | -# backup docker image and navv-docker.sh |
26 | | -docker save "$NAVV_DOCKER_IMAGE" | gzip > "$DOCKER_BACKUP_FILENAME" |
| 27 | +# backup image and navv-docker.sh |
| 28 | +if [[ "$CONTAINER_ENGINE" == "podman" ]]; then |
| 29 | + $CONTAINER_ENGINE save --format oci-archive "$NAVV_DOCKER_IMAGE" | gzip > "$DOCKER_BACKUP_FILENAME" |
| 30 | +else |
| 31 | + $CONTAINER_ENGINE save "$NAVV_DOCKER_IMAGE" | gzip > "$DOCKER_BACKUP_FILENAME" |
| 32 | +fi |
27 | 33 | [[ ! -r navv-docker.sh ]] && cp "$SCRIPT_PATH"/navv-docker.sh ./ |
28 | 34 |
|
29 | 35 | echo "Transfer $DOCKER_BACKUP_FILENAME and navv-docker.sh to destination host" | tee ./navv_export.txt |
30 | | -echo "Import $NAVV_DOCKER_IMAGE with docker load -i $DOCKER_BACKUP_FILENAME" | tee -a ./navv_export.txt |
| 36 | +echo "Import $NAVV_DOCKER_IMAGE with $CONTAINER_ENGINE load -i $DOCKER_BACKUP_FILENAME" | tee -a ./navv_export.txt |
31 | 37 | echo "Run with navv-docker.sh" | tee -a ./navv_export.txt |
0 commit comments