How to Copy Local Docker Image to Another Host Without Repository and Load

March 23, 2022

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-api

If your image is with some tag like latest

docker save -o my_food_api.tar my-food-api:latest

You 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.tar

Now, 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

Similar Posts

Latest Posts