- Lab
- A Cloud Guru
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).
Path 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
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.