[{"data":1,"prerenderedAt":848},["ShallowReactive",2],{"navigation":3,"\u002Fen\u002Fblog\u002Fwhy-deploy-with-containers":497,"surround:\u002Fen\u002Fblog\u002Fwhy-deploy-with-containers":843},[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,295,307,423,451,490],{"title":5,"path":6,"stem":7},"Build and Deploy a Modern Website in 5 Minutes","\u002Fen\u002Fblog\u002Fbuild-with-loveable","en\u002F3.blog\u002F1.build-with-loveable",{"title":9,"path":10,"stem":11},"The Vercel Alternative for the German Mittelstand: Sovereign Hosting on Hetzner with lowcloud","\u002Fen\u002Fblog\u002Fdigital-sovereignty-lowcloud-vs-vercel-b2b","en\u002F3.blog\u002F10.digital-sovereignty-lowcloud-vs-vercel-b2b",{"title":13,"path":14,"stem":15},"Cloud Sovereignty Framework: How the EU Is Finally Making Cloud Sovereignty Measurable","\u002Fen\u002Fblog\u002Fcloud-sovereignty-framework","en\u002F3.blog\u002F12.cloud-sovereignty-framework",{"title":17,"path":18,"stem":19},"Avoiding Cloud Vendor Lock-in: What Real Sovereignty Means Technically","\u002Fen\u002Fblog\u002Fcloud-vendor-lock-in","en\u002F3.blog\u002F13.cloud-vendor-lock-in",{"title":21,"path":22,"stem":23},"Digital Sovereignty with Kubernetes: When Is Open Source Truly Sovereign?","\u002Fen\u002Fblog\u002Fkubernetes-digital-sovereignty","en\u002F3.blog\u002F14.kubernetes-digital-sovereignty",{"title":25,"path":26,"stem":27},"What Is DevOps as a Service and When Does It Actually Make Sense?","\u002Fen\u002Fblog\u002Fdevops-as-a-service","en\u002F3.blog\u002F15.devops-as-a-service",{"title":29,"path":30,"stem":31},"Cloud Sovereignty Governance: Why This Topic Belongs in the Boardroom, Not the Server Room","\u002Fen\u002Fblog\u002Fcloud-sovereignty-governance","en\u002F3.blog\u002F16.cloud-sovereignty-governance",{"title":33,"path":34,"stem":35},"PaaS vs. DaaS: What","\u002Fen\u002Fblog\u002Fpaas-vs-daas","en\u002F3.blog\u002F17.paas-vs-daas",{"title":37,"path":38,"stem":39},"Sovereign Cloud: Can SaaS Really Maintain Control Over Your Data?","\u002Fen\u002Fblog\u002Fsovereign-cloud-saas-data-control","en\u002F3.blog\u002F18.sovereign-cloud-saas-data-control",{"title":41,"path":42,"stem":43},"DevOps vs. DevOps as a Service – Which One Fits Your Team?","\u002Fen\u002Fblog\u002Fdevops-vs-devops-as-a-service","en\u002F3.blog\u002F19.devops-vs-devops-as-a-service",{"title":45,"path":46,"stem":47},"Docker Fundamentals -  Understanding Container Virtualization","\u002Fen\u002Fblog\u002Fhow-docker-works","en\u002F3.blog\u002F2.how-docker-works",{"title":49,"path":50,"stem":51},"The 7 Biggest DevOps Problems in SMBs – And How to Fix Them","\u002Fen\u002Fblog\u002Fdevops-problems-smb","en\u002F3.blog\u002F20.devops-problems-smb",{"title":53,"path":54,"stem":55},"PostgreSQL Helm Chart: How to Deploy Postgres on Kubernetes","\u002Fen\u002Fblog\u002Fpostgresql-helm-chart-kubernetes","en\u002F3.blog\u002F21.postgresql-helm-chart-kubernetes",{"title":57,"path":58,"stem":59},"Platform Engineering vs. DevOps – What","\u002Fen\u002Fblog\u002Fplatform-engineering-vs-devops","en\u002F3.blog\u002F22.platform-engineering-vs-devops",{"title":61,"path":62,"stem":63},"Cloud Act vs. GDPR: The Risk for EU Businesses","\u002Fen\u002Fblog\u002Fcloud-act-vs-gdpr","en\u002F3.blog\u002F23.cloud-act-vs-gdpr",{"title":65,"path":66,"stem":67},"Cut IT Costs with Automation: The Biggest Lever","\u002Fen\u002Fblog\u002Freduce-it-costs-automation","en\u002F3.blog\u002F24.reduce-it-costs-automation",{"title":69,"path":70,"stem":71},"NIS2 Compliance for DevOps Teams: What You Need to Do","\u002Fen\u002Fblog\u002Fnis2-compliance-devops","en\u002F3.blog\u002F25.nis2-compliance-devops",{"title":73,"path":74,"stem":75},"Self-Hosted EU Alternatives: Host LibreOffice & More","\u002Fen\u002Fblog\u002Fself-hosted-eu-alternatives","en\u002F3.blog\u002F26.self-hosted-eu-alternatives",{"title":77,"path":78,"stem":79},"DORA Compliance for DevOps: What the EU Resilience Act Means","\u002Fen\u002Fblog\u002Fdora-compliance-devops","en\u002F3.blog\u002F27.dora-compliance-devops",{"title":81,"path":82,"stem":83},"Cloud TCO: Hidden Costs AWS, Azure & GCP Don't Show You","\u002Fen\u002Fblog\u002Fcloud-tco-hidden-costs","en\u002F3.blog\u002F28.cloud-tco-hidden-costs",{"title":85,"path":86,"stem":87},"Data Residency vs. Data Sovereignty: What Really Matters","\u002Fen\u002Fblog\u002Fdata-residency-vs-data-sovereignty","en\u002F3.blog\u002F29.data-residency-vs-data-sovereignty",{"title":89,"path":90,"stem":91},"Self-Host n8n on Hetzner: Complete Docker Setup Guide","\u002Fen\u002Fblog\u002Fself-hosted-n8n-on-hetzner","en\u002F3.blog\u002F3.self-hosted-n8n-on-hetzner",{"title":93,"path":94,"stem":95},"Manual Deployments: An Underestimated Risk for SMBs","\u002Fen\u002Fblog\u002Fmanual-deployment-risks","en\u002F3.blog\u002F30.manual-deployment-risks",{"title":97,"path":98,"stem":99},"DevOps Tool Sprawl: How It Happens and How to Stop It","\u002Fen\u002Fblog\u002Fdevops-tool-sprawl","en\u002F3.blog\u002F31.devops-tool-sprawl",{"title":101,"path":102,"stem":103},"Kubernetes Monitoring: Using Logs and Metrics Effectively","\u002Fen\u002Fblog\u002Fkubernetes-monitoring-logs-metrics","en\u002F3.blog\u002F32.kubernetes-monitoring-logs-metrics",{"title":105,"path":106,"stem":107},"OB7 Case Study: Website Deployment Without Infrastructure Overhead","\u002Fen\u002Fblog\u002Fob7-case-study-lowcloud-deployment","en\u002F3.blog\u002F33.ob7-case-study-lowcloud-deployment",{"title":109,"path":110,"stem":111},"DevOps in SMBs: Why Missing Roles Become a Real Risk","\u002Fen\u002Fblog\u002Fmissing-devops-roles-smb","en\u002F3.blog\u002F34.missing-devops-roles-smb",{"title":113,"path":114,"stem":115},"Simplify Kubernetes Configuration: The Path to Human-Readable Cloud","\u002Fen\u002Fblog\u002Fsimplify-kubernetes-configuration","en\u002F3.blog\u002F35.simplify-kubernetes-configuration",{"title":117,"path":118,"stem":119},"Collaborative DevOps: How Modern Teams Build Cloud Apps Together","\u002Fen\u002Fblog\u002Fcollaborative-devops-teams","en\u002F3.blog\u002F36.collaborative-devops-teams",{"title":121,"path":122,"stem":123},"Knowledge Documentation in DevOps Teams: How to Actually Reduce Your Bus Factor","\u002Fen\u002Fblog\u002Fdevops-knowledge-documentation-bus-factor","en\u002F3.blog\u002F37.devops-knowledge-documentation-bus-factor",{"title":125,"path":126,"stem":127},"What Is PaaS? Platform as a Service Explained","\u002Fen\u002Fblog\u002Fwhat-is-paas","en\u002F3.blog\u002F38.what-is-paas",{"title":129,"path":130,"stem":131},"EU AI Act Hosting: What Changes for AI Workload Operators","\u002Fen\u002Fblog\u002Feu-ai-act-hosting","en\u002F3.blog\u002F39.eu-ai-act-hosting",{"title":133,"path":134,"stem":135},"Docker Compose Tutorial: Managing Multi-Container Apps Made Easy","\u002Fen\u002Fblog\u002Fdocker-compose-for-beginners","en\u002F3.blog\u002F4.docker-compose-for-beginners",{"title":137,"path":138,"stem":139},"Full-Stack Developer Reality: What the Title Actually Means","\u002Fen\u002Fblog\u002Ffull-stack-developer-reality","en\u002F3.blog\u002F40.full-stack-developer-reality",{"title":141,"path":142,"stem":143},"Cloud Egress Fees Compared: AWS vs. Azure vs. GCP Pricing","\u002Fen\u002Fblog\u002Fcloud-egress-fees","en\u002F3.blog\u002F41.cloud-egress-fees",{"title":145,"path":146,"stem":147},"Bring Your Own Cloud: What the Model Means and Why It","\u002Fen\u002Fblog\u002Fbring-your-own-cloud","en\u002F3.blog\u002F42.bring-your-own-cloud",{"title":149,"path":150,"stem":151},"Zero-Config Kubernetes: Why Simplicity Wins","\u002Fen\u002Fblog\u002Fzero-config-kubernetes","en\u002F3.blog\u002F43.zero-config-kubernetes",{"title":153,"path":154,"stem":155},"Minimalist Cloud Architecture: Why Less Complexity Means More Stability","\u002Fen\u002Fblog\u002Fminimalist-cloud-architecture","en\u002F3.blog\u002F44.minimalist-cloud-architecture",{"title":157,"path":158,"stem":159},"Software Deployment for SMBs: How Small Teams Ship Faster","\u002Fen\u002Fblog\u002Fsmb-software-deployment","en\u002F3.blog\u002F45.smb-software-deployment",{"title":161,"path":162,"stem":163},"EU Data Act: What Businesses and DevOps Teams Need to Know","\u002Fen\u002Fblog\u002Feu-data-act-business-devops","en\u002F3.blog\u002F46.eu-data-act-business-devops",{"title":165,"path":166,"stem":167},"Data Governance Act: What SMBs and DevOps Teams Need to Know","\u002Fen\u002Fblog\u002Fdata-governance-act-devops-guide","en\u002F3.blog\u002F47.data-governance-act-devops-guide",{"title":169,"path":170,"stem":171},"Cloud Agnostic Architecture: Meaning and Trade-offs","\u002Fen\u002Fblog\u002Fcloud-agnostic-architecture","en\u002F3.blog\u002F48.cloud-agnostic-architecture",{"title":173,"path":174,"stem":175},"Kubernetes Migration: What You Need to Know Before You Start","\u002Fen\u002Fblog\u002Fkubernetes-migration-guide","en\u002F3.blog\u002F49.kubernetes-migration-guide",{"title":177,"path":178,"stem":179},"Self-Host Docmost with Docker Compose and Traefik: Complete Guide","\u002Fen\u002Fblog\u002Fself-host-docmost-with-docker-and-traefik","en\u002F3.blog\u002F5.self-host-docmost-with-docker-and-traefik",{"title":181,"path":182,"stem":183},"AI Agent Infrastructure: What You Really Need for Production","\u002Fen\u002Fblog\u002Fai-agent-infrastructure","en\u002F3.blog\u002F50.ai-agent-infrastructure",{"title":185,"path":186,"stem":187},"Managed Services ROI: Why Self-Hosting Costs More Than You Think","\u002Fen\u002Fblog\u002Fmanaged-services-roi","en\u002F3.blog\u002F51.managed-services-roi",{"title":189,"path":190,"stem":191},"lowcloud vs. DevOps as a Service Providers Compared","\u002Fen\u002Fblog\u002Flowcloud-vs-devops-service-providers","en\u002F3.blog\u002F52.lowcloud-vs-devops-service-providers",{"title":193,"path":194,"stem":195},"Kubernetes vs. Docker Swarm: Key Differences and Why K8s Won","\u002Fen\u002Fblog\u002Fkubernetes-vs-docker-swarm","en\u002F3.blog\u002F53.kubernetes-vs-docker-swarm",{"title":197,"path":198,"stem":199},"Hetzner Kubernetes Hosting with lowcloud","\u002Fen\u002Fblog\u002Fhetzner-kubernetes-hosting","en\u002F3.blog\u002F54.hetzner-kubernetes-hosting",{"title":201,"path":202,"stem":203},"MinIO Alternatives Compared: RustFS, SeaweedFS, and Garage","\u002Fen\u002Fblog\u002Fminio-alternatives","en\u002F3.blog\u002F55.minio-alternatives",{"title":205,"path":206,"stem":207},"What is Docker Swarm? Container Orchestration Built In","\u002Fen\u002Fblog\u002Fwhat-is-docker-swarm","en\u002F3.blog\u002F56.what-is-docker-swarm",{"title":209,"path":210,"stem":211},"What Is a Helm Chart? The Package Manager for Kubernetes","\u002Fen\u002Fblog\u002Fwhat-is-a-helm-chart","en\u002F3.blog\u002F57.what-is-a-helm-chart",{"title":213,"path":214,"stem":215},"Docker vs Kubernetes: Compose, Swarm, and K8s Compared","\u002Fen\u002Fblog\u002Fdocker-vs-kubernetes","en\u002F3.blog\u002F58.docker-vs-kubernetes",{"title":217,"path":218,"stem":219},"What Is Kustomize? Managing Kubernetes Configs Cleanly","\u002Fen\u002Fblog\u002Fwhat-is-kustomize","en\u002F3.blog\u002F59.what-is-kustomize",{"title":221,"path":222,"stem":223},"What Is Kubernetes? A Practical Guide to Container Orchestration","\u002Fen\u002Fblog\u002Fwhat-is-kubernetes","en\u002F3.blog\u002F6.what-is-kubernetes",{"title":225,"path":226,"stem":227},"The Best Heroku Alternatives in 2026","\u002Fen\u002Fblog\u002Fheroku-alternatives","en\u002F3.blog\u002F60.heroku-alternatives",{"title":229,"path":230,"stem":231},"Build and Deploy a Website Using Claude Code (From Zero to Live)","\u002Fen\u002Fblog\u002Fbuild-and-deploy-website-claude-code","en\u002F3.blog\u002F61.build-and-deploy-website-claude-code",{"title":233,"path":234,"stem":235},"lowcloud vs. Coolify: Self-hosted PaaS or managed?","\u002Fen\u002Fblog\u002Flowcloud-vs-coolify","en\u002F3.blog\u002F62.lowcloud-vs-coolify",{"title":237,"path":238,"stem":239},"lowcloud vs. Dokploy: Multi-node self-host or managed?","\u002Fen\u002Fblog\u002Flowcloud-vs-dokploy","en\u002F3.blog\u002F63.lowcloud-vs-dokploy",{"title":241,"path":242,"stem":243},"Your First Website with Claude: A Beginner Guide with Prompts","\u002Fen\u002Fblog\u002Ffirst-website-with-claude","en\u002F3.blog\u002F64.first-website-with-claude",{"title":245,"path":246,"stem":247},"Setting Up Claude Code: A Beginner's Configuration Guide","\u002Fen\u002Fblog\u002Fclaude-code-setup-beginners","en\u002F3.blog\u002F65.claude-code-setup-beginners",{"title":249,"path":250,"stem":251},"Vibe Coding: The Typical Deployment Problems","\u002Fen\u002Fblog\u002Fvibe-coding-deployment-problems","en\u002F3.blog\u002F66.vibe-coding-deployment-problems",{"title":253,"path":254,"stem":255},"Dokploy vs Coolify: Which Tool Fits When?","\u002Fen\u002Fblog\u002Fdokploy-vs-coolify","en\u002F3.blog\u002F67.dokploy-vs-coolify",{"title":257,"path":258,"stem":259},"Vercel vs Netlify: The Difference – and When lowcloud Fits","\u002Fen\u002Fblog\u002Fvercel-vs-netlify","en\u002F3.blog\u002F68.vercel-vs-netlify",{"title":261,"path":262,"stem":263},"Why Use Containers and Deploy With Them","\u002Fen\u002Fblog\u002Fwhy-deploy-with-containers","en\u002F3.blog\u002F69.why-deploy-with-containers",{"title":265,"path":266,"stem":267},"The Cloud Illusion: Why a Server Location in Germany Doesn’t Guarantee Digital Sovereignty","\u002Fen\u002Fblog\u002Fcloud-illusion-digital-sovereignty","en\u002F3.blog\u002F7.cloud-illusion-digital-sovereignty",{"title":269,"path":270,"stem":271},"Best S3-Compatible Object Storage Providers (2026 Comparison)","\u002Fen\u002Fblog\u002Fs3-compatible-object-storage","en\u002F3.blog\u002F8.s3-compatible-object-storage",{"title":273,"path":274,"stem":275},"Deployment as a Bottleneck: When AI Codes Faster Than You Can Deploy","\u002Fen\u002Fblog\u002Fdeployment-bottleneck","en\u002F3.blog\u002F9.deployment-bottleneck",{"title":277,"path":278,"stem":279,"children":280,"icon":294},"Getting Started","\u002Fen\u002Fdocs\u002Fgetting-started","en\u002F1.docs\u002F1.getting-started\u002F1.index",[281,284,289],{"title":282,"path":278,"stem":279,"icon":283},"Introduction","i-lucide-house",{"title":285,"path":286,"stem":287,"icon":288},"Get Started","\u002Fen\u002Fdocs\u002Fgetting-started\u002Fget-started","en\u002F1.docs\u002F1.getting-started\u002F2.get-started","i-lucide-rocket",{"title":290,"path":291,"stem":292,"icon":293},"How It Works","\u002Fen\u002Fdocs\u002Fgetting-started\u002Fhow-it-works","en\u002F1.docs\u002F1.getting-started\u002F3.how-it-works","i-lucide-lightbulb",false,{"title":296,"path":297,"stem":298,"children":299,"icon":294},"Guides","\u002Fen\u002Fdocs\u002Fguides","en\u002F1.docs\u002F2.guides\u002F1.index",[300,302],{"title":296,"path":297,"stem":298,"icon":301},"i-lucide-book-open",{"title":303,"path":304,"stem":305,"icon":306},"Connect a Container Registry","\u002Fen\u002Fdocs\u002Fguides\u002Fcontainer-registries","en\u002F1.docs\u002F2.guides\u002F2.container-registries","i-lucide-container",{"title":308,"icon":294,"path":309,"stem":310,"children":311,"page":294},"Platform","\u002Fen\u002Fdocs\u002Fplatform","en\u002F1.docs\u002F2.platform",[312,332,384],{"title":282,"path":313,"stem":314,"children":315,"icon":294},"\u002Fen\u002Fdocs\u002Fplatform\u002Fintroduction","en\u002F1.docs\u002F2.platform\u002F1.introduction\u002F1.index",[316,319,324,329],{"title":317,"path":313,"stem":314,"icon":318},"Overview","i-lucide-cloud",{"title":320,"path":321,"stem":322,"icon":323},"Use Cases","\u002Fen\u002Fdocs\u002Fplatform\u002Fintroduction\u002Fwhen-to-use","en\u002F1.docs\u002F2.platform\u002F1.introduction\u002F2.when-to-use","i-lucide-compass",{"title":325,"path":326,"stem":327,"icon":328},"Features","\u002Fen\u002Fdocs\u002Fplatform\u002Fintroduction\u002Fwhat-you-get","en\u002F1.docs\u002F2.platform\u002F1.introduction\u002F3.what-you-get","i-lucide-package-check",{"title":285,"path":330,"stem":331,"icon":288},"\u002Fen\u002Fdocs\u002Fplatform\u002Fintroduction\u002Fget-started","en\u002F1.docs\u002F2.platform\u002F1.introduction\u002F4.get-started",{"title":333,"path":334,"stem":335,"children":336,"icon":294},"Web Services","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F01.index",[337,340,345,350,354,359,364,369,374,379],{"title":338,"path":334,"stem":335,"icon":339},"Source Options","i-lucide-app-window",{"title":341,"path":342,"stem":343,"icon":344},"Build Strategies","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fbuild-strategies","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F02.build-strategies","i-lucide-hammer",{"title":346,"path":347,"stem":348,"icon":349},"Configuration","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fconfiguration","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F03.configuration","i-lucide-settings",{"title":351,"path":352,"stem":353,"icon":288},"Deploying","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fdeploying","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F04.deploying",{"title":355,"path":356,"stem":357,"icon":358},"Domains","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fdomains","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F05.domains","i-lucide-globe",{"title":360,"path":361,"stem":362,"icon":363},"Service Networking","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fconnecting-services","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F06.connecting-services","i-lucide-network",{"title":365,"path":366,"stem":367,"icon":368},"Env Variables","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fenvironment-variables","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F07.environment-variables","i-lucide-key-round",{"title":370,"path":371,"stem":372,"icon":373},"Storage","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fpersistent-storage","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F08.persistent-storage","i-lucide-hard-drive",{"title":375,"path":376,"stem":377,"icon":378},"Defaults","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Flimits","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F09.limits","i-lucide-gauge",{"title":380,"path":381,"stem":382,"icon":383},"Billing","\u002Fen\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fbilling","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F10.billing","i-lucide-credit-card",{"title":385,"path":386,"stem":387,"children":388,"icon":294},"Databases","\u002Fen\u002Fdocs\u002Fplatform\u002Fdatabases","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F1.index",[389,392,397,402,407,410,415,420],{"title":390,"path":386,"stem":387,"icon":391},"Templates","i-lucide-database",{"title":393,"path":394,"stem":395,"icon":396},"Create","\u002Fen\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fcreate","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F2.create","i-lucide-plus",{"title":398,"path":399,"stem":400,"icon":401},"Connect","\u002Fen\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fconnect","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F3.connect","i-lucide-plug",{"title":403,"path":404,"stem":405,"icon":406},"Public Access","\u002Fen\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fpublic-access","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F4.public-access","i-lucide-radio-tower",{"title":370,"path":408,"stem":409,"icon":373},"\u002Fen\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fstorage","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F5.storage",{"title":411,"path":412,"stem":413,"icon":414},"Management","\u002Fen\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fmanagement","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F6.management","i-lucide-sliders-horizontal",{"title":416,"path":417,"stem":418,"icon":419},"Operations","\u002Fen\u002Fdocs\u002Fplatform\u002Fdatabases\u002Foperational-notes","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F7.operational-notes","i-lucide-clipboard-list",{"title":380,"path":421,"stem":422,"icon":383},"\u002Fen\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fbilling","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F8.billing",{"title":424,"path":425,"stem":426,"children":427,"icon":294},"App Services","\u002Fen\u002Fdocs\u002Fapp-services","en\u002F1.docs\u002F3.app-services\u002F1.index",[428,429,433,437,441,446],{"title":424,"path":425,"stem":426,"icon":288},{"title":430,"path":431,"stem":432,"icon":349},"Build Settings","\u002Fen\u002Fdocs\u002Fapp-services\u002Fbuild-settings","en\u002F1.docs\u002F3.app-services\u002F2.build-settings",{"title":365,"path":434,"stem":435,"icon":436},"\u002Fen\u002Fdocs\u002Fapp-services\u002Fenvironment-variables","en\u002F1.docs\u002F3.app-services\u002F3.environment-variables","i-lucide-key",{"title":438,"path":439,"stem":440,"icon":358},"Custom Domains","\u002Fen\u002Fdocs\u002Fapp-services\u002Fcustom-domains","en\u002F1.docs\u002F3.app-services\u002F4.custom-domains",{"title":442,"path":443,"stem":444,"icon":445},"Health Checks","\u002Fen\u002Fdocs\u002Fapp-services\u002Fhealth-checks","en\u002F1.docs\u002F3.app-services\u002F5.health-checks","i-lucide-heart-pulse",{"title":447,"path":448,"stem":449,"icon":450},"Autoscaling","\u002Fen\u002Fdocs\u002Fapp-services\u002Fautoscaling","en\u002F1.docs\u002F3.app-services\u002F6.autoscaling","i-lucide-scaling",{"title":452,"path":453,"stem":454,"children":455,"icon":294},"Helm Releases","\u002Fen\u002Fdocs\u002Fhelm-releases","en\u002F1.docs\u002F4.helm-releases\u002F1.index",[456,458,462,467,471,476,480,485],{"title":452,"path":453,"stem":454,"icon":457},"i-lucide-package",{"title":459,"path":460,"stem":461,"icon":391},"Deploy PostgreSQL","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-postgresql","en\u002F1.docs\u002F4.helm-releases\u002F2.deploy-postgresql",{"title":463,"path":464,"stem":465,"icon":466},"Deploy Redis","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-redis","en\u002F1.docs\u002F4.helm-releases\u002F3.deploy-redis","i-lucide-zap",{"title":468,"path":469,"stem":470,"icon":466},"Deploy Valkey","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-valkey","en\u002F1.docs\u002F4.helm-releases\u002F3.deploy-valkey",{"title":472,"path":473,"stem":474,"icon":475},"Deploy n8n","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-n8n","en\u002F1.docs\u002F4.helm-releases\u002F4.deploy-n8n","i-lucide-workflow",{"title":477,"path":478,"stem":479,"icon":373},"Deploy RustFS","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-rustfs","en\u002F1.docs\u002F4.helm-releases\u002F5.deploy-rustfs",{"title":481,"path":482,"stem":483,"icon":484},"Deploy OpenSearch","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-opensearch","en\u002F1.docs\u002F4.helm-releases\u002F6.deploy-opensearch","i-lucide-search",{"title":486,"path":487,"stem":488,"icon":489},"Deploy Keycloak","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-keycloak","en\u002F1.docs\u002F4.helm-releases\u002F7.deploy-keycloak","i-lucide-shield-check",{"title":491,"path":492,"stem":493,"children":494,"icon":294},"Glossary","\u002Fen\u002Fdocs\u002Fglossary","en\u002F1.docs\u002F5.glossary\u002F1.index",[495],{"title":491,"path":492,"stem":493,"icon":496},"i-lucide-book-a",{"id":498,"title":261,"authors":499,"badge":505,"body":506,"date":834,"description":835,"extension":836,"image":837,"lastUpdated":505,"meta":839,"navigation":840,"path":262,"published":840,"seo":841,"stem":263,"tags":505,"__hash__":842},"posts\u002Fen\u002F3.blog\u002F69.why-deploy-with-containers.md",[500],{"name":501,"to":502,"avatar":503},"Thomas Ens","\u002Fabout\u002Fthomasens",{"src":504},"\u002Fimages\u002Fblog\u002Fauthors\u002Fthomas.jpeg",null,{"type":507,"value":508,"toc":817},"minimark",[509,513,516,560,565,568,577,584,588,591,600,607,611,614,622,632,636,639,642,731,734,738,745,754,761,765,770,777,781,784,788,795,799,802,806,809],[510,511,512],"p",{},"Your application runs fine on the developer's laptop, then falls apart on the production server. A different library version, a missing system package, one environment variable too few. This problem costs teams hours every week.",[510,514,515],{},"Containers fix exactly that. They pack the application, its dependencies, and the configuration into a single artifact that runs identically on any system. In this post you will learn what a container actually is, how a deployment with containers works in practice, why the switch pays off, and where teams still trip up.",[517,518,519,525],"blockquote",{},[510,520,521],{},[522,523,524],"strong",{},"The key points",[526,527,528,532,543,551],"ul",{},[529,530,531],"li",{},"Containers bundle code and all dependencies into a portable image that runs identically in development, test, and production, removing the \"works on my machine\" problem.",[529,533,534,535,542],{},"82 percent of all container users now run Kubernetes in production, up from 66 percent in 2023 (",[536,537,541],"a",{"href":538,"rel":539},"https:\u002F\u002Fwww.cncf.io\u002Fannouncements\u002F2026\u002F01\u002F20\u002Fkubernetes-established-as-the-de-facto-operating-system-for-ai-as-production-use-hits-82-in-2025-cncf-annual-cloud-native-survey\u002F",[540],"nofollow","CNCF Annual Survey",", 2026).",[529,544,545,546,542],{},"Docker reached 92 percent adoption among IT professionals in 2025, the largest single-year jump of any tracked technology (",[536,547,550],{"href":548,"rel":549},"https:\u002F\u002Fwww.programming-helper.com\u002Ftech\u002Fdocker-2026-container-adoption-enterprise-kubernetes-python",[540],"Programming Helper",[529,552,553,554,559],{},"The biggest risk is not the containers themselves but unscanned images: 75 to 87 percent of production images carry critical vulnerabilities (",[536,555,558],{"href":556,"rel":557},"https:\u002F\u002Fwww.oligo.security\u002Facademy\u002Fcontainer-security-in-2025-top-threats-and-8-defensive-measures",[540],"Oligo Security",", 2025).",[561,562,564],"h2",{"id":563},"what-is-a-container-exactly","What is a container, exactly?",[510,566,567],{},"A container is an isolated runtime environment that packs an application along with all its dependencies into a single image. Unlike a virtual machine, it brings no operating system of its own and instead shares the host's kernel. That makes it small and fast.",[510,569,570,571,576],{},"The difference from a VM is tangible. A VM image often weighs 10 to 50 gigabytes because a full guest operating system runs alongside it. A container image often gets by with a few hundred megabytes and starts in seconds instead of minutes (",[536,572,575],{"href":573,"rel":574},"https:\u002F\u002Fwww.datacamp.com\u002Fblog\u002Fcontainers-vs-virtual-machines",[540],"DataCamp",", 2025). On the same hardware you can therefore run far more containers than VMs.",[510,578,579,580,583],{},"The terms matter here. An image is the immutable template, the container is the running instance of it. You build an image once, store it in a registry, and start any number of identical containers from it. If you want to go deeper, the mechanics are covered in ",[536,581,582],{"href":46},"how Docker works",". This immutability is the core of portability: the artifact you test is exactly what runs in production.",[561,585,587],{"id":586},"why-does-container-deployment-solve-the-works-on-my-machine-problem","Why does container deployment solve the \"works on my machine\" problem?",[510,589,590],{},"Because the container image freezes the entire runtime environment, not just the code. Libraries, system packages, environment variables, and the application code all sit together in the image. There is no longer a gap between \"runs on the developer's machine\" and \"runs on the server,\" because both execute the same artifact.",[510,592,593,594,599],{},"This is the most cited benefit in practice. Containerization packs an application with all its dependencies into a portable unit that runs consistently in every environment and eliminates environment-specific errors (",[536,595,598],{"href":596,"rel":597},"https:\u002F\u002Fcircleci.com\u002Fblog\u002Fbenefits-of-containerization\u002F",[540],"CircleCI",", 2025). An image built on the developer's laptop moves into test and production without change.",[510,601,602,603,606],{},"At lowcloud we see this effect with every migration. Teams that previously ran ",[536,604,605],{"href":94},"manual deployments"," on VMs lose the entire class of errors that comes from environment differences once they switch to containers. What remains are real bugs in the code, and those can be fixed deliberately instead of chasing configuration drift for nights on end.",[561,608,610],{"id":609},"how-does-a-deployment-with-containers-actually-work","How does a deployment with containers actually work?",[510,612,613],{},"In four steps: build the image, push it to a registry, pull it in the target environment, start it as a container. This flow is always the same, whether you deploy locally, in a data center, or in the cloud. That repeatability is what makes containers so strong in CI\u002FCD pipelines.",[510,615,616,617,559],{},"The image is built from a Dockerfile, a text file that describes step by step how the environment is assembled. A CI\u002FCD pipeline builds a new image on every commit, checks it, and stores it versioned in the registry. Because containers start in seconds, updates and rollbacks can be rolled out with almost no delay (",[536,618,621],{"href":619,"rel":620},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fwhitepapers\u002Flatest\u002Fcontainers-on-aws\u002Fcontainer-benefits.html",[540],"AWS",[510,623,624,625,628,629,542],{},"As soon as several containers need to run across several servers, orchestration comes into play. ",[536,626,627],{"href":222},"Kubernetes"," handles scheduling, scaling, rollouts, and self-healing. The usual path is Docker or another OCI runtime for building and Kubernetes for operating in production. Today 82 percent of container users run Kubernetes in production (",[536,630,541],{"href":538,"rel":631},[540],[561,633,635],{"id":634},"container-or-vm-when-does-each-make-sense","Container or VM: when does each make sense?",[510,637,638],{},"Containers win when speed, density, and portability matter. VMs keep their edge with hard isolation and when you need different operating systems on one machine. For modern web applications and microservices, containers are the standard today.",[510,640,641],{},"The table below compares the main criteria:",[643,644,645,661],"table",{},[646,647,648],"thead",{},[649,650,651,655,658],"tr",{},[652,653,654],"th",{},"Criterion",[652,656,657],{},"Container",[652,659,660],{},"Virtual machine",[662,663,664,676,687,698,709,720],"tbody",{},[649,665,666,670,673],{},[667,668,669],"td",{},"Image size",[667,671,672],{},"megabytes to a few hundred MB",[667,674,675],{},"10 to 50 GB",[649,677,678,681,684],{},[667,679,680],{},"Start time",[667,682,683],{},"seconds",[667,685,686],{},"minutes",[649,688,689,692,695],{},[667,690,691],{},"Overhead",[667,693,694],{},"low, shares host kernel",[667,696,697],{},"high, own guest OS",[649,699,700,703,706],{},[667,701,702],{},"Density per host",[667,704,705],{},"very high",[667,707,708],{},"limited",[649,710,711,714,717],{},[667,712,713],{},"Isolation",[667,715,716],{},"shared kernel, weaker",[667,718,719],{},"full, stronger",[649,721,722,725,728],{},[667,723,724],{},"Portability",[667,726,727],{},"very high, one artifact everywhere",[667,729,730],{},"low, hypervisor-bound",[510,732,733],{},"The verdict is clear: for most software delivery use cases, the container advantages in efficiency and speed outweigh the rest. VMs stay relevant where regulatory requirements demand full isolation or legacy systems need their own OS. Both worlds can be combined, for example containers inside VMs for an extra isolation layer.",[561,735,737],{"id":736},"where-container-deployments-fail-in-practice","Where container deployments fail in practice",[510,739,740,741,744],{},"The most common mistake is security bolted on too late. Containers themselves are not insecure, but their images are once nobody scans them. Between 75 and 87 percent of production images carry critical or high-risk vulnerabilities (",[536,742,558],{"href":556,"rel":743},[540],", 2025). Run CVE scanning only after deployment and you pay for it.",[510,746,747,748,753],{},"Scanning images early in the CI\u002FCD pipeline cuts remediation costs by three to five times compared to fixing issues after deployment (",[536,749,752],{"href":750,"rel":751},"https:\u002F\u002Fwww.armosec.io\u002Fglossary\u002Fcontainer-image-scanning\u002F",[540],"ARMO",", 2025). On top of that come configuration mistakes: containers run with 4.8 misconfigurations on average, such as running as root or leaving ports needlessly open. Both are avoidable when scanning and least-privilege rules are part of the pipeline.",[510,755,756,757,760],{},"The second pitfall is organizational, not technical. The biggest barrier to cloud native adoption in 2025 is, for the first time, cultural change within the team, named by 47 percent of respondents, ahead of lack of training and security concerns (",[536,758,541],{"href":538,"rel":759},[540],", 2026). The technology is mature. What slows teams down is reworking familiar habits.",[561,762,764],{"id":763},"frequently-asked-questions","Frequently asked questions",[766,767,769],"h3",{"id":768},"do-i-need-kubernetes-to-deploy-with-containers","Do I need Kubernetes to deploy with containers?",[510,771,772,773,776],{},"No. For a single application or a handful of containers, Docker or a comparable runtime is plenty. Kubernetes pays off once you want to scale many containers across several servers, roll them out automatically, and run them self-healing. 82 percent of container users run it in production (",[536,774,541],{"href":538,"rel":775},[540],", 2026), but you do not need it to get started.",[766,778,780],{"id":779},"are-containers-more-secure-than-virtual-machines","Are containers more secure than virtual machines?",[510,782,783],{},"Not automatically. VMs offer stronger isolation through their own guest operating system because they do not share a kernel. Containers, in turn, are faster to patch and redeploy. Containers become secure through scanned images, minimal base images, least-privilege configuration, and regular updates, not through the technology alone.",[766,785,787],{"id":786},"what-is-the-difference-between-docker-and-kubernetes","What is the difference between Docker and Kubernetes?",[510,789,790,791,794],{},"Docker builds and runs individual containers, Kubernetes orchestrates many of them. The typical path is Docker for building images and Kubernetes for scheduling, scaling, and operating in production. They do not compete, they complement each other. More on this in the comparison ",[536,792,793],{"href":214},"Docker vs. Kubernetes",".",[766,796,798],{"id":797},"is-containerization-worth-it-for-small-teams-too","Is containerization worth it for small teams too?",[510,800,801],{},"Yes. Small teams benefit in particular, because reproducible deployments lower maintenance effort and new members become productive faster. The image is the documentation of the environment. You do not need a large platform for that, a single server with a container runtime is enough to start.",[561,803,805],{"id":804},"conclusion","Conclusion",[510,807,808],{},"Containers are the standard for shipping software in 2026. They remove environment bugs, cut deployments to seconds, and use hardware more efficiently than VMs. The adoption numbers back this up: 92 percent Docker reach and 82 percent Kubernetes in production speak for themselves. The real hurdles lie elsewhere, with unscanned images and with cultural change inside the team. Bring security into the pipeline from the start and you get the benefits without the pitfalls.",[510,810,811,812,816],{},"Want to use containers without running your own Kubernetes platform? See how ",[536,813,815],{"href":814},"\u002Fen\u002Fproduct\u002Fcontainer-hosting","container hosting at lowcloud"," works.",{"title":818,"searchDepth":819,"depth":819,"links":820},"",2,[821,822,823,824,825,826,833],{"id":563,"depth":819,"text":564},{"id":586,"depth":819,"text":587},{"id":609,"depth":819,"text":610},{"id":634,"depth":819,"text":635},{"id":736,"depth":819,"text":737},{"id":763,"depth":819,"text":764,"children":827},[828,830,831,832],{"id":768,"depth":829,"text":769},3,{"id":779,"depth":829,"text":780},{"id":786,"depth":829,"text":787},{"id":797,"depth":829,"text":798},{"id":804,"depth":819,"text":805},"2026-05-24","Containers kill environment bugs, cut deployments to seconds, and use hardware more efficiently than VMs. How they work and where teams trip up.","md",{"src":838},"\u002Fimages\u002Fblog\u002Fwhy-deploy-with-containers.jpg",{},true,{"title":261,"description":835},"zTvyXryfe7ITPoOja4IaFaxK3HO2JWl7m6asDxIKqQw",[844,846],{"title":257,"path":258,"stem":259,"description":845,"children":-1},"Vercel and Netlify compared: runtime models, costs, full-stack reality, and lock-in. Plus when a container-based approach like lowcloud is the better fit.",{"title":265,"path":266,"stem":267,"description":847,"children":-1},"A German data center alone isn’t enough: How the US Cloud Act, Schrems II, and vendor lock-in undermine real data sovereignty – and how lowcloud closes the developer experience gap.",1780334513652]