The following steps show how to transfer a docker image from a machine that is on the internet to a machine that is not on the internet, (i.e. "air-gapped").
- Set environment variables
- Pull docker image to local repository
- Package docker image
- Transfer tar file to air-gapped machine
- Unpackage docker image to local repository
- Push image to private registry
-
Using senzing/hello-world-on-hub-docker-com:latest as an example:
export DOCKER_ACCOUNT=senzing export DOCKER_IMAGE=hello-world-on-hub-docker-com export DOCKER_TAG=latest
-
On networked system:
docker pull ${DOCKER_ACCOUNT}/${DOCKER_IMAGE}:${DOCKER_TAG}
Reference: docker pull
-
Use
docker save
to package docker image. Example:docker save ${DOCKER_ACCOUNT}/${DOCKER_IMAGE}:${DOCKER_TAG} \ --output ~/${DOCKER_ACCOUNT}-${DOCKER_IMAGE}-${DOCKER_TAG}.tar
Reference: docker save
-
If
scp
orsftp
connectivity is available, a network file transfer is possible. Example:export TARGET_HOST=my.example.com scp ~/${DOCKER_ACCOUNT}-${DOCKER_IMAGE}-${DOCKER_TAG}.tar ${TARGET_HOST}:
-
If truly air-gapped, copy
tar
file to a portable storage medium to transfer to air-gapped machine.
-
On air-gapped machine, set environment variables. Using senzing/hello-world-on-hub-docker-com:latest as an example:
export DOCKER_ACCOUNT=senzing export DOCKER_IMAGE=hello-world-on-hub-docker-com export DOCKER_TAG=latest
-
Unpackage
tar
file. Assumingtar
file is in the ${HOME} directory, example:docker load \ --input ~/${DOCKER_ACCOUNT}-${DOCKER_IMAGE}-${DOCKER_TAG}.tar
Reference: docker load
-
Set environment variable. Example:
export DOCKER_REGISTRY_URL=my.docker-registry.com:5000
-
Tag docker image for private docker registry.
sudo docker tag \ ${DOCKER_ACCOUNT}/${DOCKER_IMAGE}:${DOCKER_TAG} \ ${DOCKER_REGISTRY_URL}/${DOCKER_ACCOUNT}/${DOCKER_IMAGE}:${DOCKER_TAG}
Reference: docker tag
-
Push tagged image to private docker registry.
sudo docker push ${DOCKER_REGISTRY_URL}/${DOCKER_ACCOUNT}/${DOCKER_IMAGE}:${DOCKER_TAG}
Reference: docker push
-
Remove tag from local repository docker image.
sudo docker rmi ${DOCKER_REGISTRY_URL}/${DOCKER_ACCOUNT}/${DOCKER_IMAGE}:${DOCKER_TAG}
Reference: docker rmi