Table of Contents
j# Backup docker container using shell script
Backup
Using following shell script to backup docker container with date tag
#!/bin/bash
# backup-docker.sh <container_name> <registry_path>
container=$1 # <container_name>
repo_prefix=$2 # <registry>/<prefix>
registry=${repo_prefix//\/*/}
repo_name=$repo_prefix/`hostname`/$container
repo_path=$repo_name:`date +%Y%m%d`
docker commit $container $repo_path
docker login $registry
docker push $repo_path
Note: If following certification error occurred, follow the page below to install ceritficate.
Configure trust self generated ca certificate of docker registry
List repo
Using following shell command to list repo list in docker registry
curl https://bianxi:$PASSWORD@${registry}/v2/_catalog
Sample output
{"repositories":["bianxi/dnsmasq","bianxi/heart/dnsmasq"]}
List tags
Using follwing shell command to list tags for one repo in docker registry
echo curl https://bianxi:$PASSWORD@${registry}/v2/${repo}/tags/list
Sample output
{"name":"bianxi/heart/dnsmasq","tags":["20210620","20210621","20210622","20210623","20210624","20210625","20210626","20210627"]}
Get digest for tag
Get digest by pull image
docker pull registry.bx.net/bianxi/heart/dnsmasq:20210624
Sample output
20210624: Pulling from bianxi/heart/dnsmasq
...
22b5d63ad977: Already exists
8e2e66517d7e: Pull complete
Digest: sha256:7535af1f65524f9200b901fc31b9c779819e45c0502ef99605666842a319908f
Verify digest
curl https://bianxi:$PASSWORD@registry.bx.net/v2/bianxi/heart/dnsmasq/manifests/sha256:xxxxxxxxxxxxxxxx
curl -v --silent -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X GET https://bianxi:$PASSWORD@registry.bx.net/v2/bianxi/heart/dnsmasq/manifests/20210624 2>&1 | grep Docker-Content-Digest | awk '{print ($3)}'
Delete local repo
docker rmi registry.bx.net/bianxi/heart/dnsmasq:<tag>
Delete tag
curl -X DELETE https://bianxi:$PASSWORD@registry.bx.net/v2/bianxi/heart/dnsmasq/manifests/sha256:xxxxxxxxxxxxxxxx
Run garbage-collect
docker exec registry bin/registry garbage-collect --delete-untagged /etc/docker/registry/config.yml
Restart registry if necessary
docker restart registry