Moving to Containers: A Docker and Portainer Starter for SMEs

Summary: Adopting Docker container technology in an SME environment, managing it with Portainer, typical use cases, and how it compares to VMs.
Summary: Container technology (Docker) is a far lighter, faster, and more portable way to run software in an SME environment than spinning up a full VM. A Docker container is 100 MB - 1 GB and starts in seconds; a VM doing the same job is 5-15 GB and 1-2 minutes. Portainer is the tool that manages Docker through a visual UI instead of the command line — especially valuable at SME scale. Typical SME uses: GitLab/Gitea, Nextcloud, self-hosted Bitwarden, monitoring stacks (Grafana+Prometheus), web apps, and dev environments. VMs and containers are not alternatives but complements: critical applications on VMs, lightweight services in containers.
When SMEs hear "virtualization," VMware or Hyper-V comes to mind; container technology (Docker, Kubernetes) is still seen as "enterprise stuff" or "developer stuff." In practice, Docker is far more practical than a VM for the small tools SMEs need to run: installs in seconds, low resource footprint, and excellent portability. With tools like Portainer, you can even manage it without touching the command line.
In this article we cover moving to containers at SME scale, installing Docker and Portainer, comparing VMs to containers, and walking through typical use cases. The audience is IT managers, sysadmins, and decision-makers modernizing SME infrastructure.
What Is a Container, and How Does It Differ from a VM?
Both containers and VMs provide isolation, but they operate at different layers.
VM (Virtual Machine)
- Runs a complete operating system (OS)
- Sits on top of a hypervisor (Hyper-V, ESXi)
- 5-50 GB disk, 1-32 GB RAM
- Boot time: 1-2 minutes
- Full isolation (kernel level)
Container
- Packages only the application + its dependencies
- Shares the host OS kernel
- 100 MB - 5 GB disk, 50 MB - 2 GB RAM
- Boot time: 1-10 seconds
- Process-level isolation (namespaces, cgroups)
Comparison Table
| Property | VM | Container |
|---|---|---|
| Size | GBs | MBs |
| Boot time | 1-2 min | Seconds |
| Resource use | High | Low |
| Isolation level | Full (kernel) | Process |
| OS licensing | Per VM | None |
| Portability | Medium | Excellent |
| Maturity | Mature (15+ years) | Modern (10+ years) |
| Security scope | Kernel-level isolation | Looser (shares host) |
Which Scenario, Which Tool?
| Scenario | Choice |
|---|---|
| Windows workload, critical app (ERP, etc.) | VM |
| Old legacy system | VM |
| Sensitive data, kernel-level isolation required | VM |
| Developer environment | Container |
| Microservices, web apps, APIs | Container |
| Open-source self-hosting (Bitwarden, Nextcloud) | Container |
| Monitoring stack (Grafana+Prometheus) | Container |
| Temporary test environment | Container |
| CI/CD pipeline | Container |
Docker Fundamentals
Docker is the open-source platform that standardized container technology.
Core Concepts
- Image: The container's "template" — an application plus its dependencies
- Container: A running instance of an image
- Dockerfile: A recipe file used to build images
- Volume: Persistent data storage (survives even if the container is removed)
- Network: Container-to-container communication
- Registry: Image storage (Docker Hub, your own registry)
Typical Flow
- Pull an official image from Docker Hub (
docker pull nginx) - Start a container from the image (
docker run -d -p 80:80 nginx) - The container is up — your web server is ready
- Store data using a volume
- When you no longer need it, stop or remove it
Installing Docker — An SME Scenario
A typical SME install:
Linux (Ubuntu 22.04+) — Recommended
# Official script
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Add your user to the docker group
sudo usermod -aG docker $USER
# Verify
docker --version
docker run hello-world
Windows Server
Docker EE or Mirantis Container Runtime on Windows Server 2019/2022/2025. For production, a Linux host is recommended; Windows Docker is mostly for development.
Docker Desktop (Developer Machines)
For Windows/macOS developer machines. SME commercial use may require a license (organizations with 250+ employees or USD 10M+ revenue).
Portainer — The Visual UI
For teams who do not live on the command line, Portainer adds a visual UI to Docker.
Installing Portainer
docker volume create portainer_data
docker run -d -p 9000:9000 \
--name portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Open http://server:9000 in a browser.
Portainer Capabilities
- Container list, start/stop/remove
- Image management
- Network visualization
- Volume management
- Live container log streaming
- Multi-host Docker management (separate servers)
- Stack management (Docker Compose)
- RBAC (who can do what)
- Container health status
At SME scale, it minimizes command-line use.
Docker Compose — Managing Multiple Containers
Run multiple containers (e.g., web + DB + cache) from a single recipe file.
Example: Nextcloud + MariaDB
docker-compose.yml:
version: '3.8'
services:
db:
image: mariadb:10.6
restart: always
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: nextcloud
volumes:
- db_data:/var/lib/mysql
app:
image: nextcloud:latest
restart: always
ports:
- "8080:80"
environment:
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
volumes:
- app_data:/var/www/html
depends_on:
- db
volumes:
db_data:
app_data:
Bring the whole stack up with one command:
docker compose up -d
Typical SME Use Cases
Where Docker shines in an SME environment:
1. Self-Hosted Software
- Bitwarden Vault: Password manager
- Nextcloud: Dropbox alternative
- Vaultwarden (a lightweight Bitwarden-compatible server)
- GitLab CE or Gitea: Git hosting
- Wiki.js, BookStack: Documentation
- Outline: Modern wiki
- Mattermost / Rocket.Chat: Slack alternatives
2. Monitoring and Logging
- Grafana + Prometheus
- ELK Stack (Elasticsearch + Logstash + Kibana)
- Uptime Kuma (simple uptime monitoring)
- Wazuh (SIEM)
3. Developer Tools
- Jenkins or GitLab Runner: CI/CD
- SonarQube: Code-quality analysis
- Sentry: Error tracking
4. Automation
- n8n: No-code workflow
- Home Assistant: IoT (if the SME office has IoT devices)
- Node-RED: No-code flow automation
5. Web Applications
- WordPress + MariaDB
- Drupal
- Custom Django/Laravel/Express apps
6. Reverse Proxy + SSL
- Caddy (automatic HTTPS)
- Traefik (modern reverse proxy)
- Nginx Proxy Manager (UI-driven)
Production Best Practices
To run Docker reliably in an SME:
1. Prefer Official Images
Use images on Docker Hub marked Official or from well-known vendors. Unknown images can ship malicious code.
2. Pin Tags
Use a specific version like nginx:1.25.3 instead of nginx:latest. "latest" leads to surprise upgrades.
3. Persist Data with Volumes
If data disappears when a container is removed, the volume setup is missing. DBs and file data always go in a volume.
4. Backups
Include Docker volumes in your backup plan. docker run --rm -v db_data:/data -v $(pwd):/backup ubuntu tar czf /backup/db.tar.gz /data
5. Resource Limits
Cap container resources with docker run --memory=2g --cpus=2. One container should not be able to topple the whole server.
6. Logging
The default JSON file driver can fill the disk. Set --log-driver=json-file --log-opt max-size=10m --log-opt max-file=3 or send logs to a central log service.
7. Security Scanning
Scan images for vulnerabilities with docker scan or Trivy. Snyk has a Docker integration.
8. Regular Updates
Images are updated regularly and containers restarted. Watchtower can automate this.
Container Security — Important Notes
Compared with VMs, containers have a different security profile:
Risk Areas
- Shared host: The container shares the kernel with the host; a privileged container effectively means root on the host
- Image trust: Unknown images may contain malicious code
- Network isolation: By default, containers can see each other
- Secrets management: Passwords should not stay in plain text inside Docker Compose files
Mitigations
- Avoid privileged containers (do not use
--privilegedunless absolutely required) - Pull images from scanned sources
- Network segmentation (Docker networks)
- Use Docker secrets or HashiCorp Vault
- Read-only root filesystem (
--read-only) - Update images regularly
- Keep the host kernel patched (container security depends on the host kernel)
Do You Need Kubernetes?
If Docker is enough, do not reach for Kubernetes — that is the SME rule.
When Kubernetes?
- 50+ containers
- Multi-host load balancing
- Automatic failover, rolling deployments
- A mature microservices ecosystem
A Lean SME Approach
- Single host: Docker + Compose + Portainer
- 2-3 hosts: Docker Swarm (Kubernetes's simpler sibling)
- 10+ hosts or enterprise requirements: Kubernetes (k3s, k0s are lighter)
Kubernetes is usually over-engineering for SMEs. Docker Compose and Portainer are enough.
What Yamanlar Bilişim Offers
Our SME-scale container support areas:
- VM vs container decision consulting
- Docker host installation (Linux)
- Portainer installation and RBAC
- Application architecture with Docker Compose
- Reverse-proxy + SSL automation (Caddy, Traefik)
- Backup strategy (volume-based)
- Monitoring integration
- Security hardening
Frequently Asked Questions
Conclusion
Container technology is not an "enterprise luxury" for SMEs — quite the opposite, it is a more practical infrastructure method than VMs for small teams. The Docker + Portainer + Docker Compose trio lets even non-CLI teams stand up dozens of powerful open-source tools like self-hosted Bitwarden, Nextcloud, and GitLab in minutes. It does not replace VMs, but it adds a very valuable toolbox alongside them.
At Yamanlar Bilişim, we design container strategies sized to your environment and support everything from Docker host installation to production-day operations — helping you grow your SME infrastructure with light, fast containers instead of heavy, slow VMs.
Frequently Asked Questions
Does Docker make VMs obsolete?
No, the two complement each other. A typical SME architecture: a Hyper-V/VMware host runs a Linux VM, and that VM is the Docker host. Critical Windows applications (ERP, AD) live on VMs; lightweight services live in containers. Containers do not replace VMs — they add an additional way to run things, often inside a VM.
Which Linux distribution should I run Docker on?
For production, Ubuntu 22.04 LTS or Debian 12 are common and well documented. CentOS Stream, RHEL, and Fedora are also compatible and officially supported by Docker. Alpine and other lightweight distributions can serve as minimal Docker hosts as well.
Is Docker Desktop paid for SMEs?
Docker Desktop requires a paid subscription for organizations with more than 250 employees OR more than USD 10M annual revenue (around USD 5/user/month for the Pro plan). Docker Engine on a server is free; Desktop is only the developer UI. SMEs under those thresholds can use it for free.
Will I lose data if a container disappears?
If a container is removed, its in-container data is lost — unless a volume was configured. That is why sensitive/persistent data is always written to a volume; the volume is independent of the container. Even if a DB container is removed, the volume keeps the data, and a new container can attach to the same volume and pick up where the previous one left off.
Is Portainer Community Edition enough for an SME?
For a single host and a small team, yes. If you need multi-host management, RBAC, audit logging, or OpenLDAP/AD integration, Portainer Business Edition is required (free up to 5 hosts, subscription beyond that). At SME scale the Community Edition usually covers the need.
Is Docker Compose for production, or only for development?
It is also suitable for production but is limited to a single host. If you need high availability (multi-host), move to Docker Swarm or Kubernetes. In SMEs, single-host Compose stacks stay in production for years — as long as the setup is simple, sustainable, and backed up, there is no problem.
Author
Serdar
Yamanlar Bilişim Expert
Writes content on IT infrastructure, cybersecurity, and digital transformation at Yamanlar Bilişim. Get in touch for any questions.
Professional Support
Get help on this topic
Let's design the Server Room and Infrastructure solution you need together. Our experts get back to you within 1 business day.
support@yamanlarbilisim.com.tr · Response time: 1 business day
Keep Reading
Related Articles

Linux Server Hardening: 15 Steps for an SME Environment
A 15-step Linux hardening checklist for SMEs — SSH security, firewall, user management, logging, and regular updates.

Cloud Cost Optimisation: Cutting Your Azure / AWS Bill
Strategies to bring an SME cloud bill down — cost control in Azure and AWS, cleaning up idle resources, and reserved-capacity decisions.

Active Directory Health Check: An Annual Maintenance Checklist
An annual Active Directory health check — replication, FSMO roles, GPO, user/group audit, schema health, and an SME maintenance checklist.