- Lab
-
Libraries: If you want this lab, consider one of these libraries.
- Cloud

Using Watchtower to Keep Containers Up to Date
Tired of having to manually update several containers, you’ve decided to look for an automated solution. After doing some research, you have discovered Watchtower. Watchtower is a container that updates all running containers when changes are made to the image that it is running. 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).

Lab Info
Table of Contents
-
Challenge
Create the Dockerfile
Create a Dockerfile:
[cloud_user@host]$ vi Dockerfile
The Dockerfile should contain the following:
FROM node RUN mkdir -p /var/node ADD src/ /var/node/ WORKDIR /var/node RUN npm install EXPOSE 3000 CMD ./bin/www
-
Challenge
Build the Docker Image
Build the Docker image:
[cloud_user@host]$ docker image build -t USERNAME/lab-watchtower -f Dockerfile .
-
Challenge
Push the Image to Docker Hub
Login to Docker Hub:
docker login
Push the image to Docker Hub:
docker image push USERNAME/lab-watchtower
-
Challenge
Create a Demo Container
Create the container that Watchtower will monitor:
[cloud_user@host]$ docker container run -d --name demo-app -p 80:3000 --restart always USERNAME/lab-watchtower
-
Challenge
Create the Watchtower Container
Create the Watchtower container that will monitor the
demo-app
container:[cloud_user@host]$ docker run -d --name watchtower --restart always -v /var/run/docker.sock:/var/run/docker.sock v2tec/watchtower -i 30
-
Challenge
Update the Docker Image
After creating /var/node, add an instruction to create /var/test.
Update the Docker image:
[cloud_user@host]$ vi Dockerfile
Add change to Dockerfile:
RUN mkdir -p /var/test
Rebuild the image:
[cloud_user@host]$ docker build -t USERNAME/lab-watchtower -f Dockerfile .
Push the new image:
[cloud_user@host]$ docker image push USERNAME/lab-watchtower
About the author
Real skill practice before real-world application
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.
Learn by doing
Engage hands-on with the tools and technologies you’re learning. You pick the skill, we provide the credentials and environment.
Follow your guide
All labs have detailed instructions and objectives, guiding you through the learning process and ensuring you understand every step.
Turn time into mastery
On average, you retain 75% more of your learning if you take time to practice. Hands-on labs set you up for success to make those skills stick.