In our previous post, we explained some of the ways we could work with containers like running commands on containers during startup and also while they were running. We also explained how to start and connect to stop containers and also how to remove stopped containers. Also, we briefly talked about images and explained how to remove an image. In this post, we will explain step by step how to push an image we created to our docker hub repository.
Step 1: Login to docker hub account
In order to push an image to the Docker hub, we must first log in to our docker hub account on the system where the image is located and the docker container engine is running.
[sahil@linuxnix ~]$ docker login Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one. Username: sahilsuri008 Password: WARNING! Your password will be stored unencrypted in /home/sahil/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded [sahil@linuxnix ~]$
As you can see our login succeeded.
Step 2: Tag the image to upload
Let’s see the images that we have available on our system with the docker image ls command.
[sahil@linuxnix ~]$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> e1c1d07a11b5 8 hours ago 182MB ubuntu 16.04 13c9f1285025 2 weeks ago 119MB [sahil@linuxnix ~]$
We will tag the image that we had earlier created from the Ubuntu 16.04 image. I’ll tag our image as v1 under the repository linuxnix-docker.
[sahil@linuxnix ~]$ docker tag e1c1d07a11b5 sahilsuri008/linuxnix-docker:v1
Now if we run the docker image ls command again we will see that our image tag has been updated.
[sahil@linuxnix ~]$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE sahilsuri008/linuxnix-docker v1 e1c1d07a11b5 8 hours ago 182MB ubuntu 16.04 13c9f1285025 2 weeks ago 119MB [sahil@linuxnix ~]$
Step 3: Push the image to docker hub
To push the image to our docker hub account we will use the docker push command.
[sahil@linuxnix ~]$ docker push sahilsuri008/linuxnix-docker:v1 The push refers to repository [docker.io/sahilsuri008/linuxnix-docker] 54e9d4f04a1f: Pushed 7377153e4ada: Pushed 92d3f22d44f3: Mounted from library/ubuntu 10e46f329a25: Mounted from library/ubuntu 24ab7de5faec: Mounted from library/ubuntu 1ea5a27b0484: Mounted from library/ubuntu v1: digest: sha256:b7f1085ee77aff13550f5881dda8d961d47b5e142a1ade8dde8452017137bb86 size: 1574 [sahil@linuxnix ~]$ [sahil@linuxnix ~]$ cat linuxnix-docker/dockerfile FROM ubuntu:16.04 RUN apt-get update RUN apt-get install -y python3 [sahil@linuxnix ~]$
In the output of the above command, the two layers that get pushed are the ones that we added for the apt-get update and the python3 install respectively. The other four layers that show up as mounted are the ones that made up the Ubuntu 16.04 image that we used as a base for our own image.
Step 4: Verify that you can pull this image to your system
Since we’ve successfully pushed the image to our docker hub account we’ll now verify that we are able to pull this image back to our system. For this, we will first remove the image and then download it from the docker hub.
[sahil@linuxnix ~]$ docker image rm e1c1d07a11b5 Untagged: sahilsuri008/linuxnix-docker:v1 Untagged: sahilsuri008/linuxnix-docker@sha256:b7f1085ee77aff13550f5881dda8d961d47b5e142a1ade8dde8452017137bb86 Deleted: sha256:e1c1d07a11b5f9d2c73dba4a860315f984e7e4a8347acc1b6993a9e5a487012b Deleted: sha256:83a13d31d711d2b9efe23e7e474a369f2a46c6d69fc7e23b3d3cc7ddc0a8a896 Deleted: sha256:fac336606358210f37a469c1da6599f934f1fc77aebf695ea793eac4cc152029 Deleted: sha256:2f629305b9750d556ba601bba251fc08c087d0187f5f470a7d8cf4409ff2cf0a [sahil@linuxnix ~]$ [sahil@linuxnix ~]$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 16.04 13c9f1285025 2 weeks ago 119MB [sahil@linuxnix ~]$ [sahil@linuxnix ~]$ docker pull sahilsuri008/linuxnix-docker:v1 v1: Pulling from sahilsuri008/linuxnix-docker 35b42117c431: Already exists ad9c569a8d98: Already exists 293b44f45162: Already exists 0c175077525d: Already exists ce77da78a2c2: Pull complete b0929421459c: Pull complete Digest: sha256:b7f1085ee77aff13550f5881dda8d961d47b5e142a1ade8dde8452017137bb86 Status: Downloaded newer image for sahilsuri008/linuxnix-docker:v1 [sahil@linuxnix ~]$ [sahil@linuxnix ~]$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE sahilsuri008/linuxnix-docker v1 e1c1d07a11b5 8 hours ago 182MB ubuntu 16.04 13c9f1285025 2 weeks ago 119MB [sahil@linuxnix ~]$
With this, we’ve confirmed that we are indeed able to pull down images from our own docker hub account.
This concludes our post on understanding how to push container images to docker hub. We hope that you’ve found this post to be useful and look forward towards your feedback and suggestion.
Latest posts by Sahil Suri (see all)
- Setting up chrooted ssh jails in Linux - October 8, 2019
- How To exclude copying of specific directories in Linux using cp/scp/rsync - October 7, 2019
- Docker container ports explained - September 27, 2019
- Docker Volumes explained - September 25, 2019
- Docker networking commands explained - September 24, 2019