<?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>virtual machine &#8211; Best DevOps</title>
	<atom:link href="https://www.bestdevops.com/tag/virtual-machine/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bestdevops.com</link>
	<description>Lets Learn, Do it &#38; Share! Thats a Best DevOps!!!</description>
	<lastBuildDate>Tue, 13 Oct 2026 20:41:12 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>
	<item>
		<title>The Hits And Misses Of AWS re:Invent 2019</title>
		<link>https://www.bestdevops.com/the-hits-and-misses-of-aws-reinvent-2019/</link>
					<comments>https://www.bestdevops.com/the-hits-and-misses-of-aws-reinvent-2019/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Fri, 13 Dec 2019 05:32:40 +0000</pubDate>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Cloud-computing]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[virtual machine]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=9560</guid>

					<description><![CDATA[Source:-forbes.com AWS re:Invent 2019 which concluded last week marked another milestone for Amazon and the cloud computing ecosystem. Some of [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Source:-forbes.com</p>
<p class="speakable-paragraph">AWS re:Invent 2019 which concluded last week marked another milestone for Amazon and the cloud computing ecosystem. Some of the new AWS services announced this year will become the foundation for upcoming products and services.</p>
<p>Though there have been many surprises, AWS didn’t mention or announce some of the services that were expected by the community. My own predictions for AWS re:Invent 2019 were partially accurate.</p>
<p>Based on the wishlist and what was expected, here is a list of hits and misses from this year’s mega cloud event:</p>
<p>Hits of AWS re:Invent 2019</p>
<p>1) Quantum Computing Delivered through Amazon Braket</p>
<p>Today In: Innovation<br>
After IBM, Microsoft, and Google, it was Amazon’s turn to jump the quantum computing bandwagon.</p>
<p>Amazon Braket is a managed service for quantum computing that provides a development environment to explore and design quantum algorithms, test them on simulated quantum computers, and run them on different quantum hardware technologies.</p>
<p>PROMOTED</p>
<p>Grads of Life BRANDVOICE<br>
| Paid Program<br>
5 Myths About High School Interns (And Why You Should Hire Them)<br>
Google Cloud BRANDVOICE<br>
| Paid Program<br>
5 Ways To Secure Your Business In A Multi-Cloud World<br>
UNICEF USA BRANDVOICE<br>
| Paid Program<br>
Fleeing Violence In Guatemala, A Young Family Yearns For Safety<br>
This new service from Amazon lets customers use both quantum and classical tasks on a hybrid infrastructure. It is tightly integrated with existing AWS services such as S3 and CloudWatch.</p>
<p>Amazon Braket has the potential to become one of the key pillars of AWS compute services.</p>
<p>2) Leveraging Project Nitro</p>
<p>Project Nitro is a collection of hardware accelerators that offload hypervisor, storage, and network to custom chips freeing up resources on EC2 to deliver the best performance.</p>
<p>Amazon has started to launch additional EC2 instance types based on custom chips powered by the Nitro System. The Inf1 family of EC2 delivers the best of the breed hardware and software combination to accelerate machine learning model inferencing.</p>
<p>Along with Nitro, Amazon is also investing in ARM-based compute resources. Amazon EC2 now offers general purpose (M6g), compute optimized (C6g), and memory optimized (R6g) Amazon instances powered by AWS Graviton2 processor that use 64-bit Arm Neoverse cores and custom silicon designed by AWS.</p>
<p>Going forward, Amazon will launch additional instance types based on Graviton2 processors that will become cheaper alternatives to Intel x64-based instance types.</p>
<p>3) Augmented AI with Human in the Loop</p>
<p>Remember Amazon Mechanical Turk (MTurk)? A crowdsourced service that delegates jobs to real humans. Based on the learnings from applying automation to retail, Amazon encourages keeping the human in the loop.</p>
<p>More recently, Amazon launched SageMaker Ground Truth &#8211; the data labeling service powered by humans. Customers can upload raw datasets and have humans draw bounding boxes around specific objects identified in the images. This increases accuracy while training machine learning models.</p>
<p>With Amazon Augmented AI (Amazon A2I), AWS now introduces human-driven validation of machine learning models. The low-confidence predictions from an augmented AI model are sent to real humans for validation. This increases the precision and accuracy of models while performing predictions from an ML model.</p>
<p>Amazon continues to bring humans into the technology-driven automation loop.</p>
<p>4) AI-driven Code Review and Profiling through Amazon CodeGuru</p>
<p>Amazon CodeGuru is a managed service that helps developers proactively improve code quality and application performance through AI-driven recommendations. The service comes with a reviewer and profiler that can detect and identify issues in code. Amazon CodeGuru can review and profile Java code targeting the Java Virtual Machine.</p>
<p>This service was expected to come from a platform and tools vendor. Given the heritage of developer tools, I was expecting this from Microsoft. But Amazon has taken a lead in infusing AI into code review and analysis.</p>
<p>CodeGuru is one of my favorite announcements from AWS re:Invent 2019.</p>
<p>5) Decentralized Cloud Infrastructure &#8211; Local Zones and AWS Wavelength</p>
<p>When the competition is caught up in expanding the footprint of data centers through traditional regions and zones, Amazon has taken an unconventional approach of setting up mini data centers in each metro.</p>
<p>The partnership with Verizon and other telecom providers is a great move from AWS.</p>
<p>Both, Local Zones and AWS Wavelength are game-changers from Amazon. They redefine edge computing by providing a continuum of compute services.</p>
<p>Bonus: AWS DeepComposer</p>
<p>Having launched DeepLens in 2017 and DeepRacer in 2018, I was curious to see how AWS mixes and matches its deep learning research with a hardware-based, educational device.</p>
<p>AWS DeepComposer brings the power of Generative Adversarial Networks (GAN) to music composition.</p>
<p>Misses of AWS re:Invent 2019</p>
<p>1) Open Source Strategy</p>
<p>Open source was conspicuously missing from the keynotes at re:Invent. With a veteran like Adrian Cockroft leading the open source efforts, I was expecting Amazon to make a significant announcement related to OSS.</p>
<p>Amazon has many internal projects which are good candidates for open source. From machine learning to compute infrastructure, AWS has many on-going research efforts. Open sourcing a tiny subset of these projects could immensely benefit the community.</p>
<p>The only open source project that was talked about was Firecracker which was announced last year. Even for that, Amazon didn’t mention handing it over to a governing body to drive broader contribution and participation of the community.</p>
<p>The industry expects Amazon to actively participate in open source initiatives.</p>
<p>2) Container Strategy</p>
<p>Containers are the building blocks of modern infrastructure. They are becoming the de facto standard to build modern, cloud native applications.</p>
<p>With Amazon claiming that 80% of all containerized and Kubernetes applications running in the cloud run on AWS, I expect a streamlined developer experience of deploying containerized workloads on AWS.</p>
<p>The current developer experience of dealing with AWS container services such as ECS, Fargate and EKS leaves a lot to be desired.</p>
<p>The only significant announcement from re:Invent 2019 related to containers was the general availability of the serveless container platform based on EKS for Fargate. Based on my personal experience, I found the service to be complex.</p>
<p>Both Microsoft and Google score high on the innovation of containerized platforms and enhancing the developer experience.</p>
<p>AWS has work to do in simplifying the developer workflow when dealing with containerized workloads.</p>
<p>3) VMware Partnership</p>
<p>Surprisingly, there was no discussion on the roadmap, growth and adoption of VMware Cloud on AWS. While the focus shifted to AWS Outposts, there has been no mention of the upcoming AWS managed services on VMware.</p>
<p>Though AWS Outposts are available on vSphere, the GA announcement had little to no mention of Outposts on VMware.</p>
<p>4) Simplified Developer Experience</p>
<p>AWS now has multiple compute services in the form of EC2 (IaaS), Beanstalk (PaaS), Lambda (FaaS) and Container Services offered through ECS, Fargate and EKS (CaaS).</p>
<p>Amazon recommends using a variety of tools to manage the lifecycle of the infrastructure and applications. Customers use CloudFormation, Kubernetes YAML, Cloud Developer Kit (CDK) and Serverless Application Model (SAM) to deal with each of the workloads running in different compute environments.</p>
<p>The current deployment model and programmability aspects of AWS are becoming increasingly complex. There is a need to simplify the developer and admin experience of AWS.</p>
<p>I was expecting a new programmability model from Amazon that would make it easier for developers to target AWS for running their workloads.</p>
<p>5) Custom AutoML Models for Offline Usage</p>
<p>Though AWS launched SageMaker Autopilot and Rekognition Custom Labels in the AutoML domain, it didn’t mention about enhancing AutoML-based language services for newer verticals and domains.</p>
<p>Custom models trained through Amazon’s AutoML services cannot be exported for offline usage in disconnected scenarios such as industrial automation. None of the services are integrated with AWS Greengrass deployments for offline inferencing.</p>
<p>Both Google and Microsoft offer exporting AutoML models optimized for the edge.</p>
<p>Amazon Comprehend service could be easily expanded to support newer verticals and domains such as legal and finance through AutoML.</p>
<p>Though the above announcements and services didn’t make it to this year’s re:Invent, I am sure they are in the roadmap.</p>


<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe  id="_ytid_28855"  width="675" height="379"  data-origwidth="675" data-origheight="379" src="https://www.youtube.com/embed/?enablejsapi=1&#038;list=PLTCuRW0ikUdMFARYSiWm733n1DcCem6bN&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=1&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;theme=dark&#038;color=red&#038;controls=1&#038;disablekb=0&#038;" class="__youtube_prefs__  epyt-is-override  no-lazyload" title="YouTube player"  allow="fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen data-no-lazy="1" data-skipgform_ajax_framebjll=""></iframe>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/the-hits-and-misses-of-aws-reinvent-2019/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>A Crash Course in Persistent Kubernetes Storage</title>
		<link>https://www.bestdevops.com/a-crash-course-in-persistent-kubernetes-storage/</link>
					<comments>https://www.bestdevops.com/a-crash-course-in-persistent-kubernetes-storage/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Tue, 03 Dec 2019 06:18:51 +0000</pubDate>
				<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[IT technology]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[virtual machine]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=9362</guid>

					<description><![CDATA[Learn how Kubernetes solves the persistent storage problem for containerized applications, covering PersistentVolumes, PersistentVolumeClaims, StorageClasses, and the Container Storage Interface.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Application containers are prized for their portability and scalability, but storage has historically been a pain point. Early container runtimes only suited stateless workloads — front-end web apps were fine, but databases and anything else requiring durable data were problematic. Kubernetes has largely solved this through a layered storage model built around a handful of well-defined objects.</p>



<h2 class="wp-block-heading">Why Containers Originally Struggled with Persistent Storage</h2>



<p class="wp-block-paragraph">Containers are ephemeral by design. When a container process ends, its writable layer is discarded. This made containers excellent for stateless services but unsuitable for workloads that need to survive restarts or be shared across multiple container instances. Kubernetes addresses this by externalising storage from the pod lifecycle entirely.</p>



<h2 class="wp-block-heading">The Two High-Level Tasks for Persistent Kubernetes Storage</h2>



<p class="wp-block-paragraph">To use persistent storage in Kubernetes you need to accomplish two things:</p>



<ol class="wp-block-list">
<li><strong>Attach a physical (or cloud) storage device to the Kubernetes cluster.</strong> This is done through a storage driver, ideally via the Container Storage Interface (CSI).</li>
<li><strong>Grant the application access to that storage.</strong> This is done through Kubernetes storage objects — PersistentVolumes, PersistentVolumeClaims, and StorageClasses.</li>
</ol>



<h2 class="wp-block-heading">The Container Storage Interface (CSI)</h2>



<p class="wp-block-paragraph">The Container Storage Interface (CSI) is the standard mechanism for connecting an external storage system to a Kubernetes cluster. Before CSI existed, storage drivers had to be compiled directly into the Kubernetes codebase, which made adding or updating drivers slow and risky. CSI decouples storage drivers from the core Kubernetes binary, allowing storage vendors to ship and update drivers independently. CSI drivers are deployed as pods inside the cluster and communicate with the Kubernetes control plane through a well-defined API. Beyond flexibility, CSI also provides a consistent security boundary between the storage backend and the orchestrator.</p>



<h2 class="wp-block-heading">PersistentVolumes (PVs)</h2>



<p class="wp-block-paragraph">A <strong>PersistentVolume (PV)</strong> is a cluster-level storage resource that exists independently of any pod. Think of it like a pre-provisioned virtual hard disk: it has a defined capacity, a filesystem, a name, and an access mode (e.g. <code>ReadWriteOnce</code>, <code>ReadOnlyMany</code>, or <code>ReadWriteMany</code>). Critically, its lifecycle is not tied to any pod. You can delete the pod that was using a PV and the PV — along with the data on it — remains intact until an administrator explicitly removes it.</p>



<p class="wp-block-paragraph">PVs can be created in two ways:</p>



<ul class="wp-block-list">
<li><strong>Static provisioning:</strong> An administrator manually creates PV objects in the cluster ahead of time.</li>
<li><strong>Dynamic provisioning:</strong> Kubernetes creates PVs on demand in response to a PersistentVolumeClaim, using a StorageClass to determine how to provision the backing storage.</li>
</ul>



<h2 class="wp-block-heading">PersistentVolumeClaims (PVCs)</h2>



<p class="wp-block-paragraph">A newly created PV is an isolated object — it is not attached to any pod or workload. The bridge between a pod and a PV is a <strong>PersistentVolumeClaim (PVC)</strong>.</p>



<p class="wp-block-paragraph">A PVC is a request for storage made by a namespace. It specifies the desired capacity, access mode, and optionally a StorageClass. Kubernetes matches the claim to a suitable PV (or dynamically provisions one) and binds them together. The pod then mounts the PVC as a volume, gaining access to the underlying storage.</p>


<pre class="wp-block-code"><span><code class="hljs">apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-app-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: standard</code></span></pre>


<p class="wp-block-paragraph">Once bound, the PVC is referenced inside a pod&#8217;s volume specification:</p>


<pre class="wp-block-code"><span><code class="hljs">volumes:
  - name: app-storage
    persistentVolumeClaim:
      claimName: my-app-pvc</code></span></pre>


<h2 class="wp-block-heading">StorageClasses</h2>



<p class="wp-block-paragraph">When you need many application instances, each requiring its own persistent storage, manually creating PVs and PVCs for every instance becomes unmanageable. A <strong>StorageClass</strong> solves this by defining a template for dynamic volume provisioning.</p>



<p class="wp-block-paragraph">A StorageClass tells Kubernetes <em>how</em> to provision storage: which CSI driver to use, what parameters to pass (disk type, replication factor, IOPS tier, etc.), and what reclaim policy to apply when a PVC is deleted. When a PVC references a StorageClass, Kubernetes automatically creates a matching PV using that class&#8217;s provisioner — no administrator intervention required.</p>



<p class="wp-block-paragraph">A StorageClass also serves as an organisational tool. You can define multiple classes — for example, <code>fast-ssd</code> for latency-sensitive databases and <code>standard-hdd</code> for bulk data — and let application teams choose the appropriate tier via their PVC definition.</p>



<h2 class="wp-block-heading">How the Pieces Fit Together</h2>



<p class="wp-block-paragraph">The flow for dynamic provisioning looks like this:</p>



<ol class="wp-block-list">
<li>An administrator defines one or more <strong>StorageClasses</strong>, each backed by a CSI driver.</li>
<li>A developer (or automated deployment tool) creates a <strong>PersistentVolumeClaim</strong> referencing the desired StorageClass and capacity.</li>
<li>Kubernetes dynamically provisions a <strong>PersistentVolume</strong> via the CSI driver and binds it to the PVC.</li>
<li>The <strong>pod</strong> mounts the PVC as a volume and the application reads/writes data normally.</li>
<li>When the pod is deleted, the PV and its data survive. The reclaim policy on the StorageClass determines what happens to the PV when the PVC itself is deleted (typically <code>Retain</code> or <code>Delete</code>).</li>
</ol>



<h2 class="wp-block-heading">Key Concepts at a Glance</h2>



<figure class="wp-block-table"><table><thead><tr><th>Concept</th><th>Role</th></tr></thead><tbody><tr><td>CSI Driver</td><td>Connects a storage backend (NFS, cloud block storage, SAN, etc.) to Kubernetes</td></tr><tr><td>PersistentVolume (PV)</td><td>A piece of storage provisioned in the cluster, independent of any pod</td></tr><tr><td>PersistentVolumeClaim (PVC)</td><td>A request for storage that binds to a PV and is mounted into a pod</td></tr><tr><td>StorageClass</td><td>A template for dynamic PV provisioning; defines the driver, parameters, and reclaim policy</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Further Reading</h2>



<p class="wp-block-paragraph">The official <a href="https://kubernetes.io/docs/concepts/storage/persistent-volumes/" rel="noopener">Kubernetes documentation on persistent volumes</a> covers access modes, reclaim policies, volume binding modes, and topology constraints in detail and is the authoritative reference for production use.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/a-crash-course-in-persistent-kubernetes-storage/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>LXC vs Docker: Key Differences Explained for DevOps Engineers</title>
		<link>https://www.bestdevops.com/lxc-vs-docker-what-is-the-difference-between-lxc-and-docker/</link>
					<comments>https://www.bestdevops.com/lxc-vs-docker-what-is-the-difference-between-lxc-and-docker/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Mon, 04 Nov 2019 06:19:34 +0000</pubDate>
				<category><![CDATA[Docker]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Linux developers]]></category>
		<category><![CDATA[LXC]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[virtual machine]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=9032</guid>

					<description><![CDATA[LXC and Docker both use Linux kernel features to isolate workloads, but they solve different problems. This guide explains how each technology works and when to choose one over the other.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">LXC (Linux Containers) and Docker are both container technologies built on Linux kernel primitives, yet they serve meaningfully different purposes. Understanding where they overlap—and where they diverge—helps you make the right architectural choice for your workloads.</p>



<h2 class="wp-block-heading">What Is LXC?</h2>



<p class="wp-block-paragraph">LXC, short for Linux Containers, is an OS-level virtualization mechanism that lets you run multiple isolated Linux environments on a single host kernel. Each container shares the host kernel but has its own filesystem, process tree, network stack, and user space. LXC achieves this isolation through two core Linux kernel features:</p>



<ul class="wp-block-list">
<li><strong>cgroups (control groups)</strong> — introduced in Linux kernel 2.6.24, cgroups allow fine-grained allocation and accounting of CPU, memory, block I/O, and network resources across process groups.</li>
<li><strong>namespaces</strong> — namespaces partition global kernel resources so that each container sees its own isolated view of the system (PID namespace, network namespace, mount namespace, etc.).</li>
</ul>



<p class="wp-block-paragraph">An LXC container behaves much like a lightweight virtual machine: it runs a full Linux user space, including an init process, and can host multiple services simultaneously. This makes LXC well-suited for scenarios where you want strong process isolation and a full OS environment without the overhead of hardware emulation.</p>



<h2 class="wp-block-heading">What Is Docker?</h2>



<p class="wp-block-paragraph">Docker began as an internal project at PaaS company dotCloud and was open-sourced in 2013. In its early versions, Docker&#8217;s runtime was built directly on top of LXC. Over time Docker replaced LXC with its own container runtime (<code>libcontainer</code>, now part of <code>runc</code> and the broader OCI ecosystem), but it continues to rely on the same underlying kernel features—cgroups and namespaces.</p>



<p class="wp-block-paragraph">Docker&#8217;s core daemon and CLI tools are written in Go. The key design philosophy that differentiates Docker from raw LXC is the <strong>single-process-per-container</strong> model: each container is expected to run one primary process (a web server, a database, a worker), making containers highly composable and easy to reason about.</p>



<h2 class="wp-block-heading">Containers vs. Virtual Machines: A Quick Baseline</h2>



<p class="wp-block-paragraph">Both LXC and Docker are container technologies, so it helps to first distinguish containers from full virtual machines (VMs):</p>



<figure class="wp-block-table"><table><thead><tr><th>Attribute</th><th>Virtual Machine</th><th>Linux Container (LXC / Docker)</th></tr></thead><tbody><tr><td>Kernel</td><td>Guest OS has its own kernel</td><td>Shares the host kernel</td></tr><tr><td>Boot time</td><td>Seconds to minutes</td><td>Milliseconds to seconds</td></tr><tr><td>Memory overhead</td><td>High (full OS image in RAM)</td><td>Low (only user-space differences)</td></tr><tr><td>Hardware emulation</td><td>Yes (virtual CPU, NIC, disk)</td><td>No</td></tr><tr><td>Isolation strength</td><td>Strong (hypervisor boundary)</td><td>Moderate (kernel namespace boundary)</td></tr><tr><td>Portability</td><td>Moderate (hypervisor-dependent)</td><td>High (OCI images run on any compliant runtime)</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Because containers skip hardware emulation entirely, they start faster and consume fewer resources than VMs. The trade-off is that all containers share the host kernel, so a kernel vulnerability or misconfiguration affects all tenants on that host.</p>



<h2 class="wp-block-heading">Core Differences Between LXC and Docker</h2>



<h3 class="wp-block-heading">1. Design Philosophy</h3>



<p class="wp-block-paragraph">LXC targets <strong>system containers</strong>: a container is meant to mimic a complete Linux OS instance. You can SSH into it, run multiple daemons (cron, syslog, your application), and manage it much like a traditional server. This makes LXC a close analogue to a lightweight VM.</p>



<p class="wp-block-paragraph">Docker targets <strong>application containers</strong>: a container packages exactly one application process and its dependencies. This constraint encourages microservice-style architectures where each container does one thing well and can be scaled, replaced, or updated independently.</p>



<h3 class="wp-block-heading">2. Image Layering and Portability</h3>



<p class="wp-block-paragraph">Docker introduced a layered, copy-on-write image format. Each instruction in a <code>Dockerfile</code> produces an immutable layer; layers are cached and reused across builds and deployments. This means:</p>



<ul class="wp-block-list">
<li>Images are content-addressed and reproducible.</li>
<li>Pushing or pulling an image only transfers changed layers, saving bandwidth.</li>
<li>Any host with a compliant OCI runtime can run the same image without reconfiguration.</li>
</ul>



<p class="wp-block-paragraph">LXC does not have a standardized image format in the same sense. Container templates exist, but moving a running LXC environment between hosts requires more manual effort.</p>



<h3 class="wp-block-heading">3. Versioning and Rollback</h3>



<p class="wp-block-paragraph">Because Docker images are immutable and layered, versioning is built in. You tag images, push them to a registry, and roll back to a previous tag if a release introduces a regression. LXC containers are more like live systems—they accumulate changes over time, which makes disciplined rollback harder without additional tooling.</p>



<h3 class="wp-block-heading">4. Ecosystem and Tooling</h3>



<p class="wp-block-paragraph">Docker benefits from a large ecosystem: Docker Hub provides hundreds of thousands of pre-built images; Docker Compose orchestrates multi-container applications locally; Kubernetes (and other orchestrators) natively speak the OCI image and container runtime standards that Docker helped define.</p>



<p class="wp-block-paragraph">LXC&#8217;s ecosystem is smaller and more Linux-distribution-centric. LXD (the daemon layer maintained by Canonical that sits on top of LXC) improves the management story considerably, adding REST APIs, clustering, and a richer image server, but LXC/LXD remains less widely adopted in CI/CD pipelines compared to Docker.</p>



<h3 class="wp-block-heading">5. Networking and Resource Management</h3>



<p class="wp-block-paragraph">Both LXC and Docker use kernel namespaces for network isolation and cgroups for resource limits. Docker&#8217;s higher-level networking model (bridge networks, overlay networks, user-defined networks) abstracts away much of the low-level configuration. LXC gives you more direct control, but that control comes with more configuration responsibility.</p>



<h3 class="wp-block-heading">6. Access via Libvirt</h3>



<p class="wp-block-paragraph">LXC can optionally be managed through <strong>libvirt</strong> using its LXC driver (connect string: <code>lxc:///</code>). This lets you manage LXC containers alongside QEMU/KVM VMs through a unified API. Libvirt-managed LXC and native LXC are not fully interchangeable, so choose your management path early and stay consistent.</p>



<h2 class="wp-block-heading">Side-by-Side Comparison</h2>



<figure class="wp-block-table"><table><thead><tr><th>Dimension</th><th>LXC</th><th>Docker</th></tr></thead><tbody><tr><td>Container model</td><td>System container (full OS)</td><td>Application container (single process)</td></tr><tr><td>Kernel dependency</td><td>Linux only</td><td>Linux (natively); Windows/macOS via VM shim</td></tr><tr><td>Image format</td><td>Templates / rootfs tarballs</td><td>OCI-compliant layered images</td></tr><tr><td>Registry / Hub</td><td>LXD image server (images.linuxcontainers.org)</td><td>Docker Hub, GHCR, ECR, and any OCI registry</td></tr><tr><td>Orchestration</td><td>LXD clustering</td><td>Kubernetes, Docker Swarm, Nomad, etc.</td></tr><tr><td>Learning curve</td><td>Moderate–steep for beginners</td><td>Gentle; large documentation base</td></tr><tr><td>Use case fit</td><td>Multi-service environments, dev VMs, legacy apps</td><td>Microservices, CI/CD pipelines, cloud-native apps</td></tr></tbody></table></figure>



<figure class="wp-block-image"><img decoding="async" src="https://www.how2shout.com/wp-content/uploads/2019/11/key-differences-between-LXC-and-Docker.jpg" alt="Key differences between LXC and Docker" /></figure>



<h2 class="wp-block-heading">When to Choose LXC</h2>



<ul class="wp-block-list">
<li>You need a full Linux OS environment inside a container (systemd, multiple services, SSH daemon).</li>
<li>You are migrating traditional server workloads to containers incrementally and want minimal application changes.</li>
<li>You need fine-grained control over container resources without an additional abstraction layer.</li>
<li>You are already using libvirt and want a unified management plane for VMs and containers.</li>
</ul>



<h2 class="wp-block-heading">When to Choose Docker</h2>



<ul class="wp-block-list">
<li>You are building or deploying microservices or twelve-factor applications.</li>
<li>You need reproducible, versioned, portable application packages that run identically in dev, staging, and production.</li>
<li>You want to integrate with a Kubernetes-based or CI/CD pipeline ecosystem.</li>
<li>You want access to the large library of pre-built images on public registries.</li>
</ul>



<h2 class="wp-block-heading">Summary</h2>



<p class="wp-block-paragraph">LXC and Docker are complementary rather than strictly competing technologies. LXC excels when you need a container that behaves like a lightweight, full-featured Linux system. Docker excels when you need fast, portable, versioned application packaging with broad ecosystem support. For most modern cloud-native and DevOps workflows, Docker (or the broader OCI runtime ecosystem it spawned) is the pragmatic default. For workloads that demand full OS-level isolation without the overhead of a hypervisor, LXC—especially when managed via LXD—remains a compelling option.</p>



<p class="wp-block-paragraph">Understanding both tools makes you a more versatile infrastructure engineer, since production environments frequently use VMs, LXC-style system containers, and Docker application containers in combination.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/lxc-vs-docker-what-is-the-difference-between-lxc-and-docker/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>4 Steps to Ensure Virtual Machine Security in Cloud Computing</title>
		<link>https://www.bestdevops.com/4-steps-to-ensure-virtual-machine-security-in-cloud-computing/</link>
					<comments>https://www.bestdevops.com/4-steps-to-ensure-virtual-machine-security-in-cloud-computing/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Fri, 29 Mar 2019 05:37:25 +0000</pubDate>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Cloud computing]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[virtual machine]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=4983</guid>

					<description><![CDATA[Virtual machine security in cloud environments combines the complexity of traditional network security with the unique challenges of virtualization. Follow these four practical steps to reduce your attack surface and protect hosted workloads.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Security is hard. Network security is harder. Virtual machine (VM) security in cloud computing is harder still, because it inherits every problem from traditional hosted application security and physical network security — then layers on the additional complexities of virtual resources, software-defined networking and multi-tenant infrastructure.</p>



<p class="wp-block-paragraph">The core challenge is <strong>virtual-to-resource mapping</strong>: the framework required to connect hosted software components to real underlying infrastructure. Security tools designed for physical devices were not built with virtual functions in mind, and that gap is where most cloud-VM security incidents originate.</p>



<p class="wp-block-paragraph">The good news is that meaningful risk reduction is achievable through an incremental, structured approach. The four steps below address the most critical attack surfaces in cloud-virtual environments.</p>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">Step 1: Protect Hosted Elements by Segregating Them</h2>



<p class="wp-block-paragraph">The first and most foundational step is <strong>network isolation</strong>. Any virtual function or hosted component that does not need to be directly reachable by end users should live inside a private subnetwork with no publicly routable addresses.</p>



<p class="wp-block-paragraph">Consider a simple example: three features hosted inside a virtual edge device can be deployed either directly on the service data plane (addresses visible to all network users) or inside a private subnetwork (invisible from outside). If you deploy them on the public data plane, any of those features can be probed, enumerated and attacked. Hosting and management processes also become visible and vulnerable. Isolating them behind a private subnetwork removes that exposure entirely.</p>



<p class="wp-block-paragraph">This is already standard practice in container-based deployments, both on-premises and in the cloud. Application components run inside private subnetworks, and only the specific API endpoints that users are intended to reach are exposed. The same discipline must be applied to Virtual Network Functions (VNFs): expose only the user-facing interfaces, and protect everything else with non-routable, access-controlled addresses.</p>



<h3 class="wp-block-heading">Practical actions</h3>



<ul class="wp-block-list">
  <li>Deploy all internal VNF components into private subnets or VPCs with no public IP assignment.</li>
  <li>Use security groups or firewall rules to allow inbound traffic only on explicitly required ports and from defined sources.</li>
  <li>Apply micro-segmentation so that compromising one hosted component does not grant lateral access to others.</li>
</ul>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">Step 2: Test and Review All Components Before Deployment</h2>



<p class="wp-block-paragraph">External attacks get most of the attention, but an <strong>insider threat or a deliberately introduced back-door vulnerability</strong> in a hosted feature is often more dangerous. Once a compromised component is deployed into service infrastructure, it becomes a trusted insider with open pathways to other infrastructure elements.</p>



<p class="wp-block-paragraph">Private subnetworks help here too. If a new component can only communicate with other components inside the same service instance, a piece of malware introduced through a back-door fault is less likely to pivot to other services or affect other tenants. The blast radius is contained.</p>



<p class="wp-block-paragraph">However, containment is not a substitute for proper security testing. Operators must <strong>enforce a rigorous lifecycle management and compliance process</strong> for every hosted feature and function. This means:</p>



<ul class="wp-block-list">
  <li>Requiring vendors and suppliers to demonstrate that all new code undergoes formal security testing before release.</li>
  <li>Establishing an auditable compliance workflow that operators can independently validate — not just a vendor&#8217;s self-attestation.</li>
  <li>Treating third-party VNF code with the same scrutiny applied to any external dependency entering a production environment.</li>
  <li>Performing static analysis, dynamic testing and, where possible, independent penetration testing of new virtual functions before they are admitted to the service plane.</li>
</ul>



<p class="wp-block-paragraph">A well-designed compliance pipeline reduces the probability of both accidental vulnerabilities and deliberately seeded back-door faults making it into production.</p>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">Step 3: Separate Management APIs from the Service Plane</h2>



<p class="wp-block-paragraph">Management and orchestration APIs are inherently high-value targets because they control features, functions and service behaviour at a fundamental level. Exposing infrastructure management APIs to the same network plane as service traffic — or failing to isolate them from VNF management paths — creates a direct route to catastrophic compromise.</p>



<p class="wp-block-paragraph">In NFV (Network Functions Virtualization) architectures, the <strong>Virtual Network Functions Manager (VNFM)</strong> — as defined by the ETSI NFV Industry Specification Group — is a particularly critical component. The VNFM is typically supplied by the VNF vendor and requires access to both infrastructure APIs and orchestration or deployment tooling. Poor design in this component can inadvertently open a gateway between user-accessible service paths and privileged infrastructure management APIs.</p>



<p class="wp-block-paragraph">Securing this layer requires the following:</p>



<ul class="wp-block-list">
  <li>Require VNF providers to submit their VNFM architecture — particularly the connections it makes to infrastructure and deployment/management APIs — for formal review before deployment.</li>
  <li>Enforce the principle that <em>no service user, VNF, or VNFM associated with one service can access the infrastructure management API of another</em>.</li>
  <li>Place management and orchestration APIs on a dedicated, isolated management network that is completely unreachable from the service data plane.</li>
  <li>Log all access to infrastructure management and orchestration APIs. Implement alerting for any unexpected access patterns or configuration changes, and review logs regularly to detect management access leaks early.</li>
</ul>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">Step 4: Keep Virtual Network Connections Secure and Tenant-Isolated</h2>



<p class="wp-block-paragraph">Virtual networking provides agile, software-defined connectivity that can be reconfigured rapidly as features scale or redeploy. That flexibility is also a security liability: every time a virtual network change is made, there is a risk of creating an <strong>inadvertent cross-tenant or cross-service connection</strong>.</p>



<p class="wp-block-paragraph">These misconfigurations can cause three categories of harm:</p>



<ul class="wp-block-list">
  <li><strong>Data plane leaks</strong> — traffic from one tenant&#8217;s user network becomes visible to another.</li>
  <li><strong>Control plane leaks</strong> — one tenant&#8217;s management traffic bleeds into another service&#8217;s control path.</li>
  <li><strong>Influence attacks</strong> — one user gains the ability to affect the service behaviour experienced by another user.</li>
</ul>



<p class="wp-block-paragraph">Strict policies and change-control processes around virtual connectivity significantly reduce the probability of these errors, but they cannot eliminate it entirely. The indirect relationship between a virtual network (which connects software features) and the underlying physical network (which carries actual user traffic) makes it easy for a misconfiguration to go undetected.</p>



<p class="wp-block-paragraph">A practical mitigation is to integrate a <strong>network scanner or inventory verification tool</strong> as the final step of every virtual network change procedure. The tool should:</p>



<ul class="wp-block-list">
  <li>Enumerate all devices and virtual devices currently visible on the virtual network.</li>
  <li>Compare that inventory against the expected service topology.</li>
  <li>Fail the change and trigger an alert if any unexpected connections or devices are detected.</li>
</ul>



<p class="wp-block-paragraph">Automated topology validation closes the gap between the logical configuration an operator intends and the actual network state that exists.</p>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">Summary: Four Steps for Cloud VM Security</h2>



<figure class="wp-block-table"><table><thead><tr><th>Step</th><th>Action</th><th>Primary Risk Addressed</th></tr></thead><tbody><tr><td>1</td><td>Isolate hosted elements in private subnetworks</td><td>External enumeration and direct attack</td></tr><tr><td>2</td><td>Certify all components before deployment</td><td>Back-door faults and insider threats</td></tr><tr><td>3</td><td>Separate management APIs from the service plane</td><td>Infrastructure takeover via VNFM exposure</td></tr><tr><td>4</td><td>Validate virtual network topology after every change</td><td>Cross-tenant data and control plane leaks</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Cloud-virtual networking is not simply traditional networking with a new label. It introduces an entirely different threat model — one that cannot be addressed by tools and practices designed for the era of purely physical network devices. Operators who treat these environments with the same security discipline they apply to physical infrastructure, while adding controls specific to the virtual layer, are best positioned to contain risk as cloud-native and NFV-based architectures continue to mature.</p>



<p class="wp-block-paragraph"><em>This article is based on a technical overview originally published by <a href="https://searchsecurity.techtarget.com/tip/4-steps-to-ensure-virtual-machine-security-in-cloud-computing" target="_blank" rel="noopener">TechTarget SearchSecurity</a>.</em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/4-steps-to-ensure-virtual-machine-security-in-cloud-computing/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
