Image: o_m/Shutterstock

If you're simply starting your journey with containers and Docker, you're probably doing some of your work inside your on-prem data centre, which is one of the many places to venture into this new containerized world. At some point, however, you're going to venture out of that data eye and into the expanded globe of cloud-hosted containers.

Before then, you're going to desire to know how to build your own Docker image and push it to Docker Hub. Why? Considering you lot might want to make that image available to your teammates or even the rest of the world.

Only how do you do that?

I'm going to prove y'all.

It's quite uncomplicated, you just have to know how to build a Dockerfile.

Meet: Kubernetes: A cheat sheet (gratuitous PDF) (TechRepublic)

What y'all'll need

To brand this work you lot're going to need the following:

  • A Docker Hub business relationship.
  • A running case of the Docker engine.
  • A user that belongs to the docker grouping (so you tin can event the docker command without using sudo).

That's it. Let's get to piece of work.

How to build your image

The paradigm we're going to build is based on python:three.eight-buster and will include the post-obit libraries:

  • numpy i.14.3
  • matplotlib two.2.2
  • seaborn 0.8.1

Information technology's very bones, simply information technology'll illustrate the task just fine. First, let'south create a directory to work in with the command:

mkdir ~/DOCKER

Change into that directory with:

cd ~/DOCKER

Now, nosotros'll create our Dockerfile with the command:

nano Dockerfile

In that file, paste the following:

FROM python:iii.viii-buster
RUN pip install --upgrade pip
Copy requirements.txt .
RUN pip install -r requirements.txt
Re-create src/ .
CMD [ "python", "trtest.py"]

Save and close the file.

The higher up command will pull downwards the python:iii.8-buster paradigm, use pip to upgrade information technology, and and then read the contents of a new file (requirements.txt) and install everything listed in that file. To create the requirements.txt file, result the command:

nano requirements.txt

In that file, paste the following:

numpy==i.14.3
matplotlib==two.ii.2
seaborn==0.viii.1

Save and shut the file.

Create a new sub-directory with:

mkdir src

How to log into your Docker Hub account

We have to log into our Docker Hub business relationship to push button the new image. To successfully log into Docker Hub from the control line, you lot must first create an access token. Log in to Docker Hub and click your profile epitome. From the popup menu, select Account Settings. On the resulting page, click Security in the left navigation and then click New Access Token (Figure A).

Figure A

Creating a new access token in Docker Hub.

Once you've generated the admission token, copy it to your clipboard. Go back to the last window and event the command:

docker login -u Proper noun

Where NAME is your Docker Hub username. You will exist prompted for your Docker Hub password, where you'll use the admission token you simply generated.

How to build your prototype

Information technology'southward fourth dimension to build our image. We're going to proper noun the prototype trtest. To do this, issue the command:

docker build -t trtest .

When the build completes, you'll have a new image, named trtest.

How to tag and push the image

Finally, nosotros're going to tag our new epitome and then push it to Docker Hub. First tag the image with :latest using the command:

docker epitome tag trtest USER/trtest:latest

Where USER is your Docker Hub username.

Now that the image is tagged, we tin push button it to Docker Hub with:

docker paradigm button USER/trtest:latest

Where USER is your Docker Hub username.

When the push completes, you should find the trtest:latest image in your Docker Hub repository.

And that'due south all there is to building a Docker image and pushing it to your Docker Hub repository.

Subscribe to TechRepublic's How To Make Tech Work on YouTube for all the latest tech advice for concern pros from Jack Wallen.