Building Custom Docker Images
Practice building custom Docker images from your Dockerfiles and pushing them to a registry.
Building Custom Docker Images is a free Docker & Kubernetes for Developers lesson on CoddyKit — lesson 2 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Docker & Kubernetes for Developers learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Build & Push Docker Images
Welcome back! In the previous lesson, you learned to write Dockerfiles. Now, let's turn those Dockerfiles into real Docker images and share them!
We'll cover how to:
- Use the
docker buildcommand - Tag your images for versioning
- Log in to a Docker registry
- Push your custom images for others to use
The `docker build` Command
The docker build command is your tool for creating Docker images from a Dockerfile and a "build context."
- It reads the instructions in your Dockerfile.
- It executes each instruction, creating a new layer in the image.
- Finally, it produces a new Docker image.
The basic syntax is docker build [OPTIONS] PATH | URL.
Understanding the Build Context
When you run docker build ., the . (dot) specifies the build context. This is the set of files at the specified PATH or URL that the Docker daemon can access during the build process.
- All files and folders in the build context are sent to the Docker daemon.
- This allows instructions like
COPY . /appto work. - Keep your build context clean to avoid sending unnecessary files!
Your First Image Build
Let's build a very simple image. Create a file named Dockerfile in an empty directory with the content below.
Then, open your terminal in that directory and try building the image:
FROM alpine:latest
CMD ["echo", "Hello from CoddyKit!"]Running the Build Command
To build the image from the Dockerfile you just created, run this command in your terminal:
docker build .
The . tells Docker to look for the Dockerfile in the current directory and use that directory as the build context.
After it completes, you'll see a new image ID!
Tagging Your Docker Images
Image tags are like labels for your images. They help you identify different versions or variants of an image.
- Tags are usually in the format
name:tag(e.g.,my-app:v1.0). - The
latesttag is often used for the most recent stable version. - You can add a tag using the
-tflag during the build process.
Build with a Custom Tag
Let's rebuild our image, but this time, we'll give it a meaningful tag. Replace yourusername with your Docker Hub username.
After building, use docker images to see your newly tagged image!
FROM alpine:latest
CMD ["echo", "Hello from CoddyKit!"]Pushing Images to a Registry
A Docker Registry is a storage and distribution system for Docker images. Docker Hub is the most popular public registry.
To share your images or store them centrally, you'll push them to a registry:
- First, log in to the registry (e.g., Docker Hub).
- Then, use the
docker pushcommand.
Log In to Docker Hub
Before pushing, you need to authenticate with Docker Hub (or another registry). This links your local Docker client to your account.
Run the following command in your terminal. You'll be prompted for your Docker Hub username and password:
docker loginPush Your Custom Image
Once logged in, you can push your image. Remember, the image tag must include your Docker Hub username (e.g., yourusername/my-app:v1.0).
Replace yourusername with your actual Docker Hub username:
docker push yourusername/coddykit-app:v1.0Check Your Knowledge
You've learned to build and push images. Which command is used to assign a name and tag to an image during the build process?
Recap: Build, Tag, Push!
Great job! You've mastered the core steps of turning a Dockerfile into a usable, shareable image:
docker build .: Creates an image from your Dockerfile.docker build -t myuser/myimage:tag .: Builds and tags your image, preparing it for a registry.docker login: Authenticates you with a Docker registry like Docker Hub.docker push myuser/myimage:tag: Uploads your tagged image to the registry.
Now your custom applications can be packaged and distributed efficiently!
Frequently asked questions
Is the “Building Custom Docker Images” lesson free?
Yes — the full text of “Building Custom Docker Images” is free to read here on the web, and the Docker & Kubernetes for Developers course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Docker & Kubernetes for Developers course, upgrade to CoddyKit PRO.
What will I learn in “Building Custom Docker Images”?
Practice building custom Docker images from your Dockerfiles and pushing them to a registry. You practise Docker & Kubernetes for Developers with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start Docker & Kubernetes for Developers?
No prior experience is required. Docker & Kubernetes for Developers on CoddyKit is structured for beginners through advanced learners; this is — lesson 2 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “Building Custom Docker Images” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this Docker & Kubernetes for Developers lesson?
Yes. Every Docker & Kubernetes for Developers lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- Crafting Dockerfiles for Images
- Building Custom Docker Images
- Multi-Container Apps with Compose
- Persisting Data with Docker Volumes