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).
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Create the Dockerfile
Create a Dockerfile:
[[email protected]]$ 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
- Build the Docker Image
Build the Docker image:
[[email protected]]$ docker image build -t USERNAME/lab-watchtower -f Dockerfile .
- Push the Image to Docker Hub
Login to Docker Hub:
docker login
Push the image to Docker Hub:
docker image push USERNAME/lab-watchtower
- Create a Demo Container
Create the container that Watchtower will monitor:
[[email protected]]$ docker container run -d --name demo-app -p 80:3000 --restart always USERNAME/lab-watchtower
- Create the Watchtower Container
Create the Watchtower container that will monitor the
demo-app
container:[[email protected]]$ docker run -d --name watchtower --restart always -v /var/run/docker.sock:/var/run/docker.sock v2tec/watchtower -i 30
- Update the Docker Image
After creating /var/node, add an instruction to create /var/test.
Update the Docker image:
[[email protected]]$ vi Dockerfile
Add change to Dockerfile:
RUN mkdir -p /var/test
Rebuild the image:
[cloud_use[email protected]]$ docker build -t USERNAME/lab-watchtower -f Dockerfile .
Push the new image:
[[email protected]]$ docker image push USERNAME/lab-watchtower