- Lab
- A Cloud Guru
Updating Containers with Watchtower
For the last six months, the Acme Anvil Corporation has been migrating some of their bare metal infrastructure to Docker containers. After the initial implementation, the team has decided that they need a way to manage container updates. After doing some research, the team has discovered Watchtower. Watchtower is a container that updates all running containers when changes are made to the image that it is running. You have been tasked with creating a proof of concept for the team. You will need to create a Dockerfile that will be used to create a Docker image. The image will be pushed to Docker Hub. Next, you will create a container using this image. Once the image is created, you will deploy the Watchtower container. After Watchtower is deployed, you will update the Dockerfile, rebuild the image, and push the changes to Docker Hub. Watchtower checks for changes every 30 seconds. Once it detects the changes, Watchtower will update the running container. For more information on Watchtower you can go [here](https://github.com/v2tec/watchtower).
Path Info
Table of Contents
-
Challenge
Create the Dockerfile
Create a Dockerfile:
vi Dockerfile
The Dockerfile should contain the following:
FROM node RUN mkdir -p /var/node ADD content-express-demo-app/ /var/node/ WORKDIR /var/node RUN npm install CMD ./bin/www
-
Challenge
Build the Docker Image
Build the Docker image:
docker build -t USERNAME/express -f Dockerfile .
-
Challenge
Push the Image to Docker Hub
Login to Docker Hub:
docker login
Push the image to Docker Hub:
docker push USERNAME/express
-
Challenge
Create a Demo Container
Create the container that Watchtower will monitor:
docker run -d --name demo-app -p 80:3000 --restart always USERNAME/express
-
Challenge
Create the Watchtower Container
Create the Watchtower container that will monitor the
demo-app
container:docker run -d --name watchtower --restart always -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower -i 30
-
Challenge
Update the Docker Image
Update the Docker image:
docker build -t USERNAME/express -f Dockerfile .
Repush the image to Docker Hub:
docker push USERNAME/express:latest
What's a lab?
Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.
Provided environment for hands-on practice
We will provide the credentials and environment necessary for you to practice right within your browser.
Guided walkthrough
Follow along with the author’s guided walkthrough and build something new in your provided environment!
Did you know?
On average, you retain 75% more of your learning if you get time for practice.