Introduction
Consider a scenario where you are building a docker image on your local machine and want to run it on another environment or another host. How would you take your docker image there when you don’t have a repository.
Steps to Save and Transfer Docker Image
Following are the steps:
- Save the Docker image on your machine, in an archive format
- Do copy that archive file to another host via scp or whatever
- Load the docker image on that host
- Run it
Saving Docker Image
Docker provides a way to save your images in an archive bundle.
Lets assume your docker image name is: my-food-api
Command to save
docker save -o my_food_api.tar my-food-apiIf your image is with some tag like latest
docker save -o my_food_api.tar my-food-api:latestYou will have a tar file with name: my_food_api.tar
Copy/Transfer Archive File
I transfer this file to another linux host using scp.
scp my_food_api.tar root@my_host:/target_folder/Load the Docker Image from Archive File
Now, I have the tar file on that host. I need to load it as docker image.
Run following command:
docker load -i /target_folder/my_food_api.tarNow, you have that docker image loaded, you can run it the way you want using docker run
Summary in Scripts
To summarize, I have made two scripts, just to make my life easy.
After I build the docker image,
saveAndScp.sh
# Save docker image and scp
rm my_food_api.tar
docker save -o my_food_api.tar my_food_api:latest
scp my_food_api.tar root@your_host:/target_folder/refresh_image.sh
# just to be sure that no old image exist before
docker image rm my_food_api:latest
docker load -i /target_folder/my_food_api.tar run.sh
WHatever is your run command,
docker run -it -d -p 8080:13001 -v /root/config:/apps/conf --env-file /root/application.properties my_food_api:latest












