All Blog Posts

How to K8s: Pull, Edit, and Push a Docker Image

Pull, edit and push Docker image

In order to access a Docker container of your own design in Kubernetes, you’ll likely first have to push the container’s image to Docker Hub, because by default, Kubernetes wants to pull any images defined in its YAML file from Docker Hub. Today, we’ll run through the basics to get you started.

It is worth noting that creating a Dockerfile will allow you to easily document, build, and manage your images, but we’ll start off with a look at a quick method for testing purposes.

First, you’ll need to install Docker locally. Once you have Docker installed, you’ll be able to pull any image you like from the massive number of resources available in Docker Hub. Once you’ve found the base image you’d like to build upon, you can simply run:

docker pull <image_name>

For the sake of a working example, let’s go ahead and pull the latest Ubuntu image:

docker pull ubuntu:latest

This will pull the image from Docker Hub down to your local machine. To spin up the Docker container and gain access to a pseudo-terminal running therein, simply run:

docker run -it ubuntu

This will give you root access to the running container. From there, you will be able to make changes to the Docker container. These changes can be anything you like – configuration of resources already in the container, installation of new resources, or even newly written code. Just for the fun of it, let’s install Python in our newly spun up container.

apt-get update
apt-get install python3

Then, after exiting the running container, you will need to create an account on Docker Hub, and then log in from the command line with your newly minted credentials, like so:

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: jdvincent
Password:

Login Succeeded

Once you’ve entered your credentials, you will need to create a repository within your Docker Hub account. To do this, you’ll need to use the Docker Hub UI.

Docker hub repository overview

Next, we’ll need to get the ID of the container in which we updated the base Ubuntu image, like so:

docker ps -a
CONTAINER ID        IMAGE                        COMMAND             CREATED
1459bfefa0de        ubuntu                       "/bin/bash"         42 minutes ago

STATUS              PORTS                    NAMES
 Up 42 minutes       0.0.0.0:8888->8888/tcp   blissful_lamarr

With the container’s ID in hand, we can now commit our changes locally:

docker commit 1459bfefa0de jdvincent/ubuntu-python3.8

And finally, you can push the image to Docker Hub with the following:

docker push jdvincent/ubuntu-python3.8

And voila! The updated image (jdvincent/ubuntu-python3.8) can now be passed in any Kubernetes YAML file, and it will be available to Kubernetes!

TL;DR

By default, Kubernetes looks for Docker images in Docker Hub. In order to make changes to the Docker image you’d like to use in Kubernetes, you’ll most likely need to commit an image locally, and then push that image up to Docker Hub.  

You May Also Like

Was this article helpful?

Vote Submitted
Oops! Something went wrong while submitting the form.
Vote Submitted
Oops! Something went wrong while submitting the form.
Return to Blog Home