1. Preliminary steps to compile and run a SpringBoot application: sudo apt install maven sudo apt install openjdk-11-jdk 2. Download gs-spring-boot.zip from the course web site, unzip it, and cd into the folder gs-spring-boot/. Then run: ./mvnw package -Dmaven.test.skip=true The first time you run the command above it will download a lot of libraries. Now, cd to the "target" subdirectory, and run "java -jar ". It should display the SPRING logo on the terminal. Visit http://localhost:8080 from the browser, it should show the response from the web application. 3. Preliminary steps to get docker working on linux: sudo apt install docker.io sudo groupadd docker sudo usermod -aG docker Then, restart your computer. From now on, the docker daemon (dockerd) will run all the time. In case it is not running, issue "sudo systemctl start docker". Now you are ready to start using docker. 4. cd into the folder gs-spring-boot/ and run "docker build -t /gs-spring-boot ." from this folder (it contains a Dockerfile). Now check that the image has been built by running "docker image ls". Run the image using "docker run &". Get the container's IP address using "docker inspect ". Visit port 8080 of this IP address within your browser. Or, run the image as "docker run -p localhost:80:8080 " to expose port 8080 of the container as port 80 of the localhost, or run image as "docker run -p 8080:8080 " to expose 8080 port of container as port 8080 of localhost itself. 5. The application code in gs-spring-boot-withrw.zip stores the counter value to display in a persistent file within the container's file system. So, if you stop the running container using "docker container stop " and re-start it using "docker container start ", it uses the persisted counter value. This demonstrates that a container's write-layer is maintained even when the container is stopped, and becomes available to the container whenever it is re-started. If you remove the stopped container altogether using "docker container rm " and run a fresh container from the same image using "docker run ", this fresh container will get a fresh write layer, with the count starting from zero. 6. The Dockerfile in gs-spring-boot-noentrypoint.zip replaces the direct run of the Spring program with a shell command in the ENTRYPOINT line. Therefore, when you run this container, it will give you a shell prompt. From the shell prompt you can type "java -jar app.jar" to start the Spring program. This shell prompt also lets you explore the file system of the container interactively, for understanding purposes. Note, to use a container interactively like this, use the command "docker run -it " to start the container for the first time. To re-restart a stopped interactive container, use "docker start -i ".