How to copy Docker images from one host to another without using a repository
How do I transfer a Docker image from one machine to another one without using a repository, no matter private or public?
I create my own image in VirtualBox, and when it is finished I try to deploy to other machines to have real usage.
Since it is based on my own based image (like Red Hat Linux), it cannot be recreated from a Dockerfile. My dockerfile isn't easily portable.
Are there simple commands I can use? Or another solution?
Answers
If you want to transfer a Docker image from one machine to another without using a repository, you can export the image as a tarball and then import it on the target machine. Here's how you can do it:
Export the Docker Image:
- First, you need to find the ID or tag of the Docker image you want to export. You can use the
docker images
command to list all the images on your machine.
docker images
- Once you have the ID or tag of the image, you can export it as a tarball using the
docker save
command.
docker save -o image.tar imagename:tag
Replace imagename:tag
with the name and tag of the image you want to export.
Transfer the Docker Image:
Now, you need to transfer the image.tar
file to the target machine. You can use any method you prefer for transferring files, such as SCP, FTP, or even a USB drive.
Import the Docker Image:
Once the image.tar
file is on the target machine, you can import it using the docker load
command.
docker load -i image.tar
This command will import the Docker image from the tarball file.
Using Docker Image on the Target Machine:
Now that the image is imported, you can use it to run containers on the target machine as you would with any other Docker image.
docker run imagename:tag
Note:
- Keep in mind that this method only transfers the image itself, not any associated containers or volumes.
- Ensure that both machines have compatible architectures and Docker versions.
- If you're transferring between machines with different architectures (e.g., x86 and ARM), you'll need to use a tool like
docker manifest
to create a multi-platform image and export/import accordingly.
This process provides a straightforward way to transfer Docker images between machines without relying on a repository.