Author: Kartikey (@Json604) · Enrollment No: 10121
Completed assignments for the DevOps sessions in
Nency-Ravaliya/devops-heros.
Every command in every write-up was actually executed, and the output is copied in verbatim — nothing is
illustrative or reconstructed. Raw transcripts and the scripts that produced them are in each assignment's
evidence/ folder.
| # | Assignment | Session | Covers |
|---|---|---|---|
| 1 | Linux Basics | session2-linux |
Soft vs hard links, adduser vs useradd, journalctl, command cheat sheet |
| 2 | System Information Script | session3-shell-scripting |
sysinfo.sh — variables, read -p, mkdir, touch, > redirection |
| 3 | Networking | session4-networking |
IP addressing & subnetting, plus ~30 networking commands with output |
| 4 | Git | session5-git-github |
commit -a -m vs commit -m, and cherry-pick |
| 5 | Docker Hello World ×6 | session6-7-docker |
Node.js, Python, Java, Apache, React and Nginx apps |
| 6 | Multi-Stage Dockerfile | session6-7-docker |
Multi-stage build on port 8080 + 3-application deployment |
| 7 | Docker Networking & Volumes | session8-docker-networking-volume |
3 networks, host network, bind mounts, overlay networks |
| Assignment | Environment | Verification |
|---|---|---|
| 1, 2, 3 | Ubuntu 24.04 (aarch64) with systemd as PID 1 in Docker | journalctl/adduser/useradd need real Linux; the container boots systemd properly so the journal is genuine |
| 4 | Local Git 2.50.1 | Throwaway repos; cherry-pick verified with matching git patch-id and differing commit hashes |
| 5, 6 | Docker Desktop 29.3.1 | HTTP 200 from every app plus browser screenshots — React renders client-side, so curl alone cannot verify it |
| 7 | Docker Desktop 29.3.1 | Network isolation proven both by DNS (NXDOMAIN) and by raw IP (100% packet loss); no-restart proven by unchanged StartedAt/PID/RestartCount |
A few findings that came out of doing the work rather than describing it:
git commit -a -msilently skips new files. Assignment 4 demonstrates a commit that reports "1 file changed" while the untracked file the user meant to add is left behind.- Multi-stage builds only pay off when the runtime base differs. The session's own multi-stage Dockerfile
saves 6 MB (249 → 243 MB) because both stages use
node:24-alpine. The React app in Assignment 5 drops 248 MB → 76 MB, because Nginx replaces Node entirely. Measured and explained in Assignment 6. tracerouteshowing* * *is not a broken path.pingto the same host succeeds; the hops simply do not return ICMP. Usingtraceroute -T -p 443gets a real answer. See Assignment 3.- A failing database client is not always a network problem. In
Assignment 7, Alpine's
mysql-client(really MariaDB) failed on TLS and then oncaching_sha2_password— whilencproved port 3306 was open the whole time. - The repo's
python-app/Dockerfiledoes not build.apt install pip3is not a valid package and therequirements.txtit copies does not exist in that folder;app.pyalso only prints to stdout rather than serving a page. Assignment 5 contains a working replacement.
macOS (Darwin 25.5.0, arm64)
Docker Desktop 29.3.1 / Engine 29.2.0
Git 2.50.1
Ubuntu 24.04 container with systemd for the Linux exercises