<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>nginx - Hamradio.my</title>
	<atom:link href="https://hamradio.my/tag/nginx/feed/" rel="self" type="application/rss+xml" />
	<link>https://hamradio.my/tag/nginx/</link>
	<description>Amateur Radio, Tech Insights and Product Reviews</description>
	<lastBuildDate>Tue, 08 Jul 2025 07:26:27 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://hamradio.my/wp-content/uploads/2026/02/cropped-cropped-image-removebg-preview-3-32x32.png</url>
	<title>nginx - Hamradio.my</title>
	<link>https://hamradio.my/tag/nginx/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>How Anubis Works: Fighting Bots with Proof-of-Work</title>
		<link>https://hamradio.my/2025/07/how-anubis-works-fighting-bots-with-proof-of-work/</link>
					<comments>https://hamradio.my/2025/07/how-anubis-works-fighting-bots-with-proof-of-work/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Tue, 08 Jul 2025 07:26:23 +0000</pubDate>
				<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[free open source software]]></category>
		<category><![CDATA[web application firewall]]></category>
		<category><![CDATA[airesistance]]></category>
		<category><![CDATA[antibot]]></category>
		<category><![CDATA[antibotsolution]]></category>
		<category><![CDATA[anubis]]></category>
		<category><![CDATA[botprotection]]></category>
		<category><![CDATA[cloudflarealternative]]></category>
		<category><![CDATA[containers]]></category>
		<category><![CDATA[cybersecurity]]></category>
		<category><![CDATA[ddosprotection]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[edgeprotection]]></category>
		<category><![CDATA[infosec]]></category>
		<category><![CDATA[jschallenge]]></category>
		<category><![CDATA[linuxsecurity]]></category>
		<category><![CDATA[networksecurity]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[opensourcefirewall]]></category>
		<category><![CDATA[proofofwork]]></category>
		<category><![CDATA[reverseproxy]]></category>
		<category><![CDATA[selfhosted]]></category>
		<category><![CDATA[techaro]]></category>
		<category><![CDATA[webfirewall]]></category>
		<category><![CDATA[websecurity]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=8299</guid>

					<description><![CDATA[<p>The internet today is crawling with bots—some helpful, most not. Whether it’s AI scrapers harvesting public data or malicious bots launching DDoS attacks, websites are under constant pressure to defend their content. Enter Anubis: a clever, open-source web firewall that uses Proof-of-Work (PoW) to filter out bots while letting real users through with minimal friction. [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/07/how-anubis-works-fighting-bots-with-proof-of-work/">How Anubis Works: Fighting Bots with Proof-of-Work</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"></h2>



<p class="wp-block-paragraph">The internet today is crawling with bots—some helpful, most not. Whether it’s AI scrapers harvesting public data or malicious bots launching DDoS attacks, websites are under constant pressure to defend their content. Enter <strong>Anubis</strong>: a clever, open-source web firewall that uses <strong>Proof-of-Work (PoW)</strong> to filter out bots while letting real users through with minimal friction.</p>



<p class="wp-block-paragraph">Let’s unpack how it works—and how to deploy it with Docker and Nginx.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">What Is Anubis?</h3>



<p class="wp-block-paragraph">At its core, <strong>Anubis is a PoW gateway</strong>. It sits in front of your website and challenges each visitor with a lightweight computational puzzle before letting them through.</p>



<p class="wp-block-paragraph">The concept is simple but effective: bots that don’t execute JavaScript (like most scrapers or AI crawlers) can’t pass the challenge. Even those that do will find it expensive to scale.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">How It Works (Step by Step)</h3>



<p class="wp-block-paragraph">Here’s what happens when someone visits a site protected by Anubis:</p>



<ol class="wp-block-list">
<li><strong>User requests a page</strong>.</li>



<li><strong>Anubis intercepts the request</strong> as a reverse proxy.</li>



<li><strong>It serves a small HTML page with embedded JavaScript</strong> containing a Proof-of-Work challenge.</li>



<li><strong>Browser solves the challenge in a second or two</strong>, generating a token.</li>



<li><strong>The browser resubmits the request with the token</strong>, and Anubis lets them through.</li>
</ol>



<p class="wp-block-paragraph">This slows down bots significantly while being nearly invisible to human users.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Why It Works</h3>



<p class="wp-block-paragraph">Bots and crawlers typically skip JavaScript. That means:</p>



<ul class="wp-block-list">
<li>They can’t pass the PoW challenge.</li>



<li>Even if they try, solving the challenge repeatedly becomes <strong>computationally expensive</strong>.</li>
</ul>



<p class="wp-block-paragraph">For humans: it’s just a couple of seconds. For bots: it’s a serious headache.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Real-World Adoption</h3>



<p class="wp-block-paragraph">Anubis is already being used by high-traffic, open-source projects like:</p>



<ul class="wp-block-list">
<li><a>Arch Wiki</a></li>



<li><a>GNOME</a></li>



<li><a>WineHQ</a></li>



<li><a>FFmpeg</a></li>



<li><a>UNESCO</a></li>
</ul>



<p class="wp-block-paragraph">These communities needed something robust, lightweight, and self-hosted. Anubis delivered.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Quick Start with Docker</h2>



<p class="wp-block-paragraph">Anubis is available as a Docker image at:</p>



<pre class="wp-block-code"><code>ghcr.io/techarohq/anubis
</code></pre>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f516.png" alt="🔖" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Available Tags</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Tag</th><th>Description</th></tr></thead><tbody><tr><td><code>latest</code></td><td>The latest stable release (recommended for most users)</td></tr><tr><td><code>vX.Y.Z</code></td><td>Specific version (e.g., <code>v1.4.2</code>)</td></tr><tr><td><code>main</code></td><td>Edge build from the <code>main</code> branch — use only if you need it</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2699.png" alt="⚙" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Docker Compose Example</h3>



<p class="wp-block-paragraph">Here’s a quick way to run Anubis using Docker Compose:</p>



<pre class="wp-block-code"><code>services:
  anubis:
    image: ghcr.io/techarohq/anubis:latest
    container_name: anubis
    restart: unless-stopped
    ports:
      - "8080:8080" # Anubis listens on port 8080 by default
    volumes:
      - ./config:/etc/anubis
    environment:
      - ANUBIS_CONFIG=/etc/anubis/anubis.toml
    user: "1000:1000"
</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f510.png" alt="🔐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Important</strong>: Make sure the mounted <code>./config</code> directory is <strong>owned by UID/GID 1000</strong>, or is writable by that user.</p>
</blockquote>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> System Requirements</h3>



<p class="wp-block-paragraph">Anubis is very efficient:</p>



<ul class="wp-block-list">
<li>~128MiB RAM is enough for many use cases.</li>



<li>Ideal for HTTP traffic.</li>



<li>May not be suited for long-lived connections like <strong>WebSockets</strong> (TBD in real-world use).</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f310.png" alt="🌐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Nginx Reverse Proxy Config</h2>



<p class="wp-block-paragraph">Once Anubis is running, you’ll want to route traffic through it. Here’s a basic Nginx config to pass requests through Anubis and then upstream to your real site:</p>



<pre class="wp-block-code"><code>server {
    listen 80;
    server_name yoursite.com;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">You can also put Anubis in front of another reverse proxy (like Nginx ➜ Anubis ➜ App), depending on your network layout.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f0.png" alt="🧰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Why Choose Anubis?</h2>



<ul class="wp-block-list">
<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Open-source and fully self-hostable</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> No CAPTCHAs, no third-party cloud services</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Blocks scrapers and AI bots reliably</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Works great with Docker, Nginx, and minimal hardware</li>



<li><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Community-tested and battle-hardened</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Final Thoughts</h2>



<p class="wp-block-paragraph">In an age of aggressive AI scraping and relentless bots, <strong>Anubis offers a refreshingly simple and effective shield</strong>. By making abuse computationally expensive and annoying for bots—but nearly invisible to humans—Anubis flips the script and puts the burden back where it belongs.</p>



<p class="wp-block-paragraph">You can try a live demo at <a href="https://anubis.techaro.lol/">anubis.techaro.lol</a> or start deploying right away using <a href="https://github.com/TecharoHQ/anubis">the official GitHub repo</a>.</p>
<p>The post <a href="https://hamradio.my/2025/07/how-anubis-works-fighting-bots-with-proof-of-work/">How Anubis Works: Fighting Bots with Proof-of-Work</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/07/how-anubis-works-fighting-bots-with-proof-of-work/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>code-server: Unlocking the Power of VS Code in Your Browser</title>
		<link>https://hamradio.my/2025/07/code-server-unlocking-the-power-of-vs-code-in-your-browser/</link>
					<comments>https://hamradio.my/2025/07/code-server-unlocking-the-power-of-vs-code-in-your-browser/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Wed, 02 Jul 2025 17:13:08 +0000</pubDate>
				<category><![CDATA[containerization]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Caddy]]></category>
		<category><![CDATA[cloudcomputing]]></category>
		<category><![CDATA[clouddevelopment]]></category>
		<category><![CDATA[cloudserver]]></category>
		<category><![CDATA[code-server]]></category>
		<category><![CDATA[coders]]></category>
		<category><![CDATA[coderslife]]></category>
		<category><![CDATA[developerproductivity]]></category>
		<category><![CDATA[developerworkflow]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[dockercontainer]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[LetsEncrypt]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[macos]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[remoteaccess]]></category>
		<category><![CDATA[remoteIDE]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[selfhosted]]></category>
		<category><![CDATA[softwaredevelopment]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[techsavvy]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[vscode]]></category>
		<category><![CDATA[webdevelopment]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7579</guid>

					<description><![CDATA[<p>In the modern development landscape, flexibility and accessibility are paramount. code-server offers a solution that brings the renowned Visual Studio Code (VS Code) experience directly to your browser, enabling developers to code from anywhere, on any device, without compromising on functionality. 🚀 What Is code-server? code-server is an open-source project developed by Coder that allows [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/07/code-server-unlocking-the-power-of-vs-code-in-your-browser/">code-server: Unlocking the Power of VS Code in Your Browser</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In the modern development landscape, flexibility and accessibility are paramount. <strong>code-server</strong> offers a solution that brings the renowned Visual Studio Code (VS Code) experience directly to your browser, enabling developers to code from anywhere, on any device, without compromising on functionality.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What Is code-server?</h2>



<p class="wp-block-paragraph"><strong>code-server</strong> is an open-source project developed by Coder that allows you to run VS Code on a remote server and access it through a web browser. This setup provides a consistent development environment that can be accessed from any device, be it a laptop, tablet, or even a smartphone. By leveraging the power of cloud servers, code-server enables faster tests, compilations, and downloads, all while preserving your local device&#8217;s resources.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f527.png" alt="🔧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Key Features of code-server</h2>



<ul class="wp-block-list">
<li><strong>VS Code in the Browser</strong>: Experience the full functionality of VS Code, including IntelliSense, debugging, and Git integration, all within your browser.</li>



<li><strong>Remote Development</strong>: Develop on powerful cloud servers, reducing the load on your local machine and enabling resource-intensive tasks.</li>



<li><strong>Consistent Environment</strong>: Maintain a uniform development setup across different devices, ensuring consistency and reducing the &#8220;it works on my machine&#8221; problem.</li>



<li><strong>Extension Support</strong>: Install and use most VS Code extensions, enhancing your development workflow.</li>



<li><strong>Secure Access</strong>: Access your development environment securely from anywhere, with options for HTTPS and authentication.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e0.png" alt="🛠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Installation Guide</h2>



<p class="wp-block-paragraph">Setting up code-server is straightforward. The easiest way to install code-server is to use the official install script, which automates most of the process. This script attempts to use the system package manager if possible.</p>



<h3 class="wp-block-heading">For Linux, macOS, and FreeBSD:</h3>



<p class="wp-block-paragraph">Run the following command in your terminal:</p>



<pre class="wp-block-code"><code>curl -fsSL https://code-server.dev/install.sh | sh
</code></pre>



<p class="wp-block-paragraph">After installation, you can start code-server by running:</p>



<pre class="wp-block-code"><code>code-server
</code></pre>



<p class="wp-block-paragraph">By default, code-server will be accessible at <code>http://127.0.0.1:8080</code>, and your password will be stored in <code>~/.config/code-server/config.yaml</code>.</p>



<h3 class="wp-block-heading">For Docker Users:</h3>



<p class="wp-block-paragraph">You can also run code-server in a Docker container:</p>



<pre class="wp-block-code"><code>docker run -it --name code-server -p 127.0.0.1:8080:8080 \
  -v "$HOME/.local:/home/coder/.local" \
  -v "$HOME/.config:/home/coder/.config" \
  -v "$PWD:/home/coder/project" \
  -u "$(id -u):$(id -g)" \
  -e "DOCKER_USER=$USER" \
  codercom/code-server:latest
</code></pre>



<p class="wp-block-paragraph">This command mounts your current directory into the container and forwards your UID/GID so that all file system operations occur as your user outside the container.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f510.png" alt="🔐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Securing Your code-server Instance</h2>



<p class="wp-block-paragraph">To expose code-server securely to the internet, consider the following methods:</p>



<ul class="wp-block-list">
<li><strong>Port Forwarding via SSH</strong>: If you have an SSH server on your remote machine, you can forward local ports to access code-server securely.</li>



<li><strong>Using Let&#8217;s Encrypt with Caddy or NGINX</strong>: For a more robust solution, you can set up HTTPS using Let&#8217;s Encrypt with web servers like Caddy or NGINX.</li>



<li><strong>Self-Signed Certificates</strong>: For internal use or testing, you can generate and use self-signed certificates to enable HTTPS.</li>
</ul>



<p class="wp-block-paragraph">These methods ensure that your code-server instance is accessible securely from anywhere.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f504.png" alt="🔄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Keeping code-server Up-to-Date</h2>



<p class="wp-block-paragraph">To ensure you have the latest features and security patches, it&#8217;s important to keep code-server updated. You can check for the latest releases on the <a href="https://github.com/coder/code-server/releases">GitHub Releases Page</a>. To update, simply run the install script again:</p>



<pre class="wp-block-code"><code>curl -fsSL https://code-server.dev/install.sh | sh
</code></pre>



<p class="wp-block-paragraph">This will download and install the latest version of code-server.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Final Thoughts</h2>



<p class="wp-block-paragraph">code-server empowers developers by providing a powerful, browser-based development environment that can be accessed from anywhere. Whether you&#8217;re working from a laptop, tablet, or smartphone, code-server ensures that you have a consistent and secure development setup at your fingertips.</p>



<p class="wp-block-paragraph">By leveraging cloud servers, code-server enables faster development cycles and reduces the load on local machines, making it an ideal solution for modern development workflows.</p>
<p>The post <a href="https://hamradio.my/2025/07/code-server-unlocking-the-power-of-vs-code-in-your-browser/">code-server: Unlocking the Power of VS Code in Your Browser</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/07/code-server-unlocking-the-power-of-vs-code-in-your-browser/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Docker: The Container Revolution That Changed Software Development Forever</title>
		<link>https://hamradio.my/2025/06/docker-the-container-revolution-that-changed-software-development-forever/</link>
					<comments>https://hamradio.my/2025/06/docker-the-container-revolution-that-changed-software-development-forever/#respond</comments>
		
		<dc:creator><![CDATA[9M2PJU]]></dc:creator>
		<pubDate>Sat, 07 Jun 2025 22:02:07 +0000</pubDate>
				<category><![CDATA[containerization]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[free open source software]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[#CloudComputing]]></category>
		<category><![CDATA[#DevOps]]></category>
		<category><![CDATA[#Microservices]]></category>
		<category><![CDATA[#OpenSource]]></category>
		<category><![CDATA[#SoftwareDevelopment]]></category>
		<category><![CDATA[ci_cd]]></category>
		<category><![CDATA[containerdeployment]]></category>
		<category><![CDATA[Containerization]]></category>
		<category><![CDATA[containersecurity]]></category>
		<category><![CDATA[continuousintegration]]></category>
		<category><![CDATA[developertools]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[dockercompose]]></category>
		<category><![CDATA[dockerhub]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[kubernetes]]></category>
		<category><![CDATA[linuxcontainers]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[techinnovation]]></category>
		<guid isPermaLink="false">https://hamradio.my/?p=7473</guid>

					<description><![CDATA[<p>In the landscape of modern software development and IT operations, Docker has emerged as a game-changer. Whether you’re a developer, system administrator, or a DevOps engineer, Docker empowers you to build, ship, and run applications seamlessly — across your laptop, on-premise servers, or the cloud. This blog post will dive deep into Docker’s origin, its [&#8230;]</p>
<p>The post <a href="https://hamradio.my/2025/06/docker-the-container-revolution-that-changed-software-development-forever/">Docker: The Container Revolution That Changed Software Development Forever</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">In the landscape of modern software development and IT operations, <strong>Docker</strong> has emerged as a game-changer. Whether you’re a developer, system administrator, or a DevOps engineer, Docker empowers you to build, ship, and run applications seamlessly — across your laptop, on-premise servers, or the cloud. This blog post will dive deep into Docker’s origin, its practical uses, key commands you need to know, advantages, and provide a hands-on example to get you started.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-the-origin-and-history-of-docker">The Origin and History of Docker</h2>



<p class="wp-block-paragraph">Docker’s roots trace back to 2010 when a company named dotCloud, a platform-as-a-service (PaaS) provider, started experimenting with Linux container technology to better isolate and manage applications.</p>



<ul class="wp-block-list">
<li><strong>March 2013</strong>: Docker was launched as an open-source project by Solomon Hykes, the CTO of dotCloud.</li>



<li><strong>Why it stood out</strong>: Docker made Linux containers accessible to developers through simple commands, standard image formats, and tooling that abstracted away complex underlying tech like LXC, cgroups, and namespaces.</li>



<li><strong>Growth</strong>: Docker quickly captured the attention of the tech community and companies worldwide. It transformed from an internal tool to the foundation of a whole ecosystem involving container registries (Docker Hub), orchestration tools (Docker Swarm, Kubernetes), and developer workflows.</li>
</ul>



<p class="wp-block-paragraph">Today, Docker Inc. continues to innovate with products designed for enterprise container management, security, and cloud-native development.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-what-is-docker-and-why-should-you-care">What Is Docker and Why Should You Care?</h2>



<p class="wp-block-paragraph">At its core, Docker is a <strong>containerization platform</strong> that packages your application and all its dependencies — libraries, system tools, and settings — into a single container. This container can run consistently across any environment that supports Docker, eliminating the infamous “it works on my machine” problem.</p>



<h3 class="wp-block-heading" id="h-why-containers">Why containers?</h3>



<p class="wp-block-paragraph">Before containers, virtualization was the go-to method to isolate applications — think Virtual Machines (VMs). But VMs require a full guest OS, which consumes more disk space, memory, and CPU.</p>



<p class="wp-block-paragraph">Containers are lightweight:</p>



<ul class="wp-block-list">
<li>Share the host OS kernel.</li>



<li>Start almost instantly.</li>



<li>Require less storage.</li>
</ul>



<h3 class="wp-block-heading" id="h-use-cases-for-docker-include">Use cases for Docker include:</h3>



<ul class="wp-block-list">
<li><strong>Development environment standardization:</strong> Developers can replicate production environments on local machines.</li>



<li><strong>Microservices deployment:</strong> Each service runs in its own container, independently scalable and maintainable.</li>



<li><strong>CI/CD pipelines:</strong> Automate builds and tests in isolated containers.</li>



<li><strong>Legacy app modernization:</strong> Containerize old apps to run on modern infrastructure.</li>



<li><strong>Cloud migration:</strong> Easily move workloads across public clouds or hybrid setups.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-essential-docker-commands-you-must-know">Essential Docker Commands You Must Know</h2>



<p class="wp-block-paragraph">Here’s a handy list of Docker commands that cover basic to intermediate tasks:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Command</th><th>Description</th></tr></thead><tbody><tr><td><code>docker version</code></td><td>Show Docker client and server version</td></tr><tr><td><code>docker info</code></td><td>Display system-wide info about Docker</td></tr><tr><td><code>docker pull &lt;image&gt;</code></td><td>Download an image from Docker Hub or registry</td></tr><tr><td><code>docker images</code></td><td>List downloaded Docker images</td></tr><tr><td><code>docker run &lt;image&gt;</code></td><td>Run a container from an image</td></tr><tr><td><code>docker ps</code></td><td>List currently running containers</td></tr><tr><td><code>docker ps -a</code></td><td>List all containers, including stopped ones</td></tr><tr><td><code>docker stop &lt;container_id&gt;</code></td><td>Stop a running container</td></tr><tr><td><code>docker start &lt;container_id&gt;</code></td><td>Start a stopped container</td></tr><tr><td><code>docker rm &lt;container_id&gt;</code></td><td>Remove a container</td></tr><tr><td><code>docker rmi &lt;image&gt;</code></td><td>Remove a Docker image</td></tr><tr><td><code>docker logs &lt;container_id&gt;</code></td><td>View logs from a container</td></tr><tr><td><code>docker exec -it &lt;container_id&gt; /bin/bash</code></td><td>Access the shell inside a running container</td></tr><tr><td><code>docker build -t &lt;tag&gt; .</code></td><td>Build an image from a Dockerfile</td></tr><tr><td><code>docker-compose up</code></td><td>Start multi-container apps defined in a docker-compose.yml</td></tr><tr><td><code>docker-compose down</code></td><td>Stop and remove containers defined by docker-compose</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-advantages-of-using-docker">Advantages of Using Docker</h2>



<h3 class="wp-block-heading" id="h-1-portability-and-consistency">1. <strong>Portability and Consistency</strong></h3>



<p class="wp-block-paragraph">Docker containers encapsulate everything needed to run your app, ensuring consistent behavior across development, staging, and production — regardless of where the container runs.</p>



<h3 class="wp-block-heading" id="h-2-lightweight">2. <strong>Lightweight</strong></h3>



<p class="wp-block-paragraph">Containers share the OS kernel and don’t require running a full guest OS, saving CPU, memory, and storage compared to VMs.</p>



<h3 class="wp-block-heading" id="h-3-faster-deployment">3. <strong>Faster Deployment</strong></h3>



<p class="wp-block-paragraph">Containers start almost instantly (in seconds), accelerating development cycles and scaling capabilities.</p>



<h3 class="wp-block-heading" id="h-4-isolation-and-security">4. <strong>Isolation and Security</strong></h3>



<p class="wp-block-paragraph">Containers provide process-level isolation, which helps prevent conflicts between apps running on the same host.</p>



<h3 class="wp-block-heading" id="h-5-simplified-dependency-management">5. <strong>Simplified Dependency Management</strong></h3>



<p class="wp-block-paragraph">No need to install or configure software dependencies on your host; they’re baked into the container image.</p>



<h3 class="wp-block-heading" id="h-6-vibrant-ecosystem">6. <strong>Vibrant Ecosystem</strong></h3>



<p class="wp-block-paragraph">With Docker Hub, users have access to thousands of ready-to-use container images. The active community continually develops tools and resources.</p>



<h3 class="wp-block-heading" id="h-7-improved-resource-utilization">7. <strong>Improved Resource Utilization</strong></h3>



<p class="wp-block-paragraph">Multiple containers can run efficiently on a single host, making better use of hardware resources.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-a-simple-docker-example-running-a-hello-world-web-server">A Simple Docker Example: Running a Hello World Web Server</h2>



<p class="wp-block-paragraph">Let’s walk through a practical example so you can experience Docker firsthand.</p>



<h3 class="wp-block-heading" id="h-step-1-install-docker">Step 1: Install Docker</h3>



<p class="wp-block-paragraph">Make sure Docker is installed on your system. You can find official installation guides on <a href="https://docs.docker.com/get-docker/">docker.com</a>.</p>



<h3 class="wp-block-heading" id="h-step-2-run-a-prebuilt-web-server-container">Step 2: Run a prebuilt web server container</h3>



<p class="wp-block-paragraph">Open your terminal and run:</p>



<pre class="wp-block-code"><code>docker run -d -p 8080:80 --name hello-web nginx
</code></pre>



<p class="wp-block-paragraph">What this does:</p>



<ul class="wp-block-list">
<li><code>docker run</code> — Run a container.</li>



<li><code>-d</code> — Detached mode (runs container in the background).</li>



<li><code>-p 8080:80</code> — Map port 8080 on your host to port 80 in the container.</li>



<li><code>--name hello-web</code> — Assign a name to the container.</li>



<li><code>nginx</code> — Use the official nginx web server image from Docker Hub.</li>
</ul>



<h3 class="wp-block-heading" id="h-step-3-access-your-web-server">Step 3: Access your web server</h3>



<p class="wp-block-paragraph">Open your browser and navigate to <code>http://localhost:8080</code>. You should see the default <strong>Nginx</strong> welcome page, meaning your container is up and running.</p>



<h3 class="wp-block-heading" id="h-step-4-inspect-the-container">Step 4: Inspect the container</h3>



<p class="wp-block-paragraph">Check running containers:</p>



<pre class="wp-block-code"><code>docker ps
</code></pre>



<p class="wp-block-paragraph">View container logs:</p>



<pre class="wp-block-code"><code>docker logs hello-web
</code></pre>



<p class="wp-block-paragraph">Access the container shell:</p>



<pre class="wp-block-code"><code>docker exec -it hello-web /bin/bash
</code></pre>



<p class="wp-block-paragraph">Inside, you can browse files, for example:</p>



<pre class="wp-block-code"><code>cat /usr/share/nginx/html/index.html
</code></pre>



<h3 class="wp-block-heading" id="h-step-5-stop-and-remove-the-container">Step 5: Stop and remove the container</h3>



<p class="wp-block-paragraph">To stop:</p>



<pre class="wp-block-code"><code>docker stop hello-web
</code></pre>



<p class="wp-block-paragraph">To remove:</p>



<pre class="wp-block-code"><code>docker rm hello-web
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-conclusion">Conclusion</h2>



<p class="wp-block-paragraph">Docker has revolutionized software development and IT operations by making container technology accessible, portable, and scalable. It simplifies dependency management, accelerates deployment, and ensures your applications behave the same everywhere — a crucial advantage in today’s fast-moving development world.</p>



<p class="wp-block-paragraph">This example only scratches the surface of Docker’s power. From building your own container images to orchestrating complex multi-container applications with Docker Compose or Kubernetes, Docker opens up a world of possibilities.</p>



<p class="wp-block-paragraph">If you want to master modern software workflows, learning Docker is a must.</p>
<p>The post <a href="https://hamradio.my/2025/06/docker-the-container-revolution-that-changed-software-development-forever/">Docker: The Container Revolution That Changed Software Development Forever</a> appeared on <a href="https://hamradio.my">Hamradio.my - Amateur Radio, Tech Insights and Product Reviews</a> by <a href="https://hamradio.my/author/9m2pju/">9M2PJU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://hamradio.my/2025/06/docker-the-container-revolution-that-changed-software-development-forever/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
