<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[My Journey]]></title><description><![CDATA[My Journey]]></description><link>https://dhruvbhartia.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 18:11:46 GMT</lastBuildDate><atom:link href="https://dhruvbhartia.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Unlocking Docker: A Personal Journey from Confusion to Confidence]]></title><description><![CDATA[You know how you can follow every step in a tutorial, the app works, but you still don’t really get what’s going on?
That was me with Docker.I could make things run in containers, but something felt off — I didn’t understand why things were working… ...]]></description><link>https://dhruvbhartia.hashnode.dev/unlocking-docker-a-personal-journey-from-confusion-to-confidence</link><guid isPermaLink="true">https://dhruvbhartia.hashnode.dev/unlocking-docker-a-personal-journey-from-confusion-to-confidence</guid><category><![CDATA[Docker]]></category><category><![CDATA[Devops]]></category><category><![CDATA[learning]]></category><category><![CDATA[journey]]></category><category><![CDATA[containerization]]></category><category><![CDATA[beginner]]></category><dc:creator><![CDATA[Dhruv Bhartia]]></dc:creator><pubDate>Thu, 24 Apr 2025 17:01:08 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1745513660943/a13bec15-d093-4dd8-871b-d3779136d548.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You know how you can follow every step in a tutorial, the app works, but you still don’t really <em>get</em> what’s going on?</p>
<p>That was me with Docker.<br />I could make things run in containers, but something felt off — I didn’t understand <em>why</em> things were working… or worse, why they sometimes didn’t.</p>
<hr />
<h2 id="heading-my-first-real-experience-with-docker">📦 My First Real Experience with Docker</h2>
<p>The first time I tried Docker was for a work-related app. To experiment safely, I made a dummy app — I think it was Spring Boot at the time (though honestly, I don’t remember much now — it’s been years!).</p>
<p>Tutorials made it seem simple:</p>
<ul>
<li><p>Create a Dockerfile</p>
</li>
<li><p>Add some <code>RUN</code>, <code>COPY</code>, and <code>CMD</code> lines</p>
</li>
<li><p>Build and run</p>
</li>
</ul>
<p>And yes, it <em>worked</em>.<br />But when I tried the same approach for a different app… it didn’t.<br />Same base image. Similar commands. Still, it failed.</p>
<p>That inconsistency frustrated me — and I realized I was just copying stuff without truly knowing what was going on.</p>
<hr />
<h2 id="heading-my-not-so-glorious-debugging-phase">🛠️ My (Not-So-Glorious) Debugging Phase</h2>
<p>That’s when I took a detour.</p>
<p>Instead of editing Dockerfile over and over and rebuilding blindly, I thought:</p>
<blockquote>
<p><em>“Let me just start a container, go inside it, and try running the steps manually.”</em></p>
</blockquote>
<p>So I did:</p>
<ul>
<li><p>Started an <code>ubuntu</code> container in interactive mode</p>
</li>
<li><p>Installed dependencies manually</p>
</li>
<li><p>Copied files using <code>docker cp</code></p>
</li>
<li><p>Ran my app, debugged, tried things live</p>
</li>
</ul>
<p><strong>And suddenly, I could see what was missing.</strong><br />Turns out, my host machine had things pre-installed (like Java or other dependencies), but the container didn’t — so the Dockerfile was incomplete.</p>
<p>I didn’t even know about official base images like <code>openjdk</code> or <code>node</code> at that time.<br />I was starting from plain Ubuntu and building everything from scratch. 😅</p>
<hr />
<h2 id="heading-the-aha-moment">🤯 The Aha! Moment</h2>
<p>Doing everything manually felt slow… but it helped me <em>internalize</em> what a Dockerfile is really doing.</p>
<p>Now, when I wrote:</p>
<pre><code class="lang-Dockerfile"><span class="hljs-keyword">FROM</span> openjdk:<span class="hljs-number">17</span>
<span class="hljs-keyword">COPY</span><span class="bash"> . /app</span>
<span class="hljs-keyword">WORKDIR</span><span class="bash"> /app</span>
<span class="hljs-keyword">RUN</span><span class="bash"> ./gradlew build</span>
<span class="hljs-keyword">CMD</span><span class="bash"> [<span class="hljs-string">"java"</span>, <span class="hljs-string">"-jar"</span>, <span class="hljs-string">"build/libs/app.jar"</span>]</span>
</code></pre>
<p>… it wasn’t just syntax. I could mentally <em>walk through</em> what’s happening at each step — because I’d done it myself and know which steps can be optimized more.</p>
<p>That was the turning point for me.</p>
<hr />
<h2 id="heading-the-power-of-docker-that-took-me-time-to-appreciate">🚀 The Power of Docker (That Took Me Time to Appreciate)</h2>
<p>Today, we hear a lot about Docker’s power: how it lets us spin up Postgres, MongoDB, Redis — all in isolated containers — without installing anything directly on our machine.</p>
<p>But honestly?<br />That magic didn’t feel magical at first. In fact, it was kind of confusing.</p>
<p>What helped me was not just reading Dockerfiles… but living through the steps they represented.</p>
<hr />
<h2 id="heading-final-thoughts">🎯 Final Thoughts</h2>
<p>Looking back, I’m glad I took that detour.<br />It slowed me down at first — but helped me build intuition and confidence that I still carry today.</p>
<p>I didn’t cover all the gritty details here, but if you're curious about the real-world challenges I faced while containerizing actual projects, let me know — happy to write a follow-up.</p>
<hr />
<p>✍️ Thanks for reading. If you’ve ever felt Docker didn’t “click,” you’re definitely not alone.</p>
]]></content:encoded></item></channel></rss>