Version control is a system that tracks changes in files and allows developers to collaborate. Git helps maintain different versions of code, rollback changes, create branches, and merge work efficiently.
CI/CD automates the process of integrating code, running tests, and deploying applications. It reduces manual effort and ensures faster, reliable releases.
Docker allows packaging applications with all their dependencies into isolated containers. This ensures consistency across development, testing, and production environments.
Cron jobs are scheduled tasks in Linux. They allow scripts or commands to run at a specific time automatically—for example, backups, cleanup scripts, scheduled builds, etc.
IaC allows managing servers and infrastructure using code instead of manual configuration. Tools like Terraform and Ansible make infrastructure reproducible, testable, and scalable.
Since the requirement was to show basic Linux operations, I created this simple Dockerfile:
FROM ubuntu:latest
CMD ["bash","-c","ls -l && pwd && whoami"]This runs three basic Linux commands when the container starts:
ls -l→ List files with detailspwd→ Print the current working directorywhoami→ Show the current user
docker build -t docker-assignment .docker run docker-assignment:latestThe output printed:
- All files inside the container
- Current directory (
/) - User (
root)
git init
git add .
git commit -m "Added Dockerfile with basic Linux commands"
git branch -M main
git remote add origin git@github.com:dhruvinjs/DockerLinuxAssignment.git
git push -u origin mainThis assignment helped me understand:
I practiced basic Linux commands (ls, pwd, whoami) and understood how the container filesystem looks from inside.
- Writing a Dockerfile
- Building an image
- Running a container
- Understanding the role of
CMD - How Ubuntu behaves inside Docker
I learned how to initialize a repository, add files, commit changes, and push code to GitHub.
By combining Git, Docker, and Linux together, I experienced how DevOps brings different technologies into one workflow. It helped me understand packaging, versioning, automation, and reproducibility—important for building real-world systems.