Skip to main content
Version: 1.0.0

Docker Host on Aruba Cloud

Provision a CloudServer VM with Docker CE and Docker Compose ready to use. This is the foundation for running any containerised workload on Aruba Cloud when a higher-level example doesn't fit your needs.

Provider version: arubacloud/arubacloud ~> 1.0 | Terraform: ≥ 1.9


Introduction​

This example creates a clean Ubuntu 22.04 VM with Docker Engine installed from the official Docker APT repository. You can immediately pull images, run containers, and use Docker Compose — all via SSH or a remote Docker context.

Use this as the starting point for:

  • Running Docker Compose stacks not covered by other examples
  • Testing container images in an isolated Aruba Cloud environment
  • Setting up a private Docker build agent

Architecture Overview​


Infrastructure Created​

ResourceName patternDescription
arubacloud_projectdocker-prodProject container
arubacloud_vpcdocker-prod-vpcVPC
arubacloud_subnetdocker-prod-subnetSubnet
arubacloud_securitygroupdocker-prod-vm-sgSecurity group (SSH only)
arubacloud_elasticipdocker-prod-vm-eipPublic IP
arubacloud_blockstoragedocker-prod-boot50 GB boot disk
arubacloud_keypairdocker-prod-keypairSSH key
arubacloud_cloudserverdocker-prod-vmVM

VM Sizing​

Use casevCPURAMDiskFlavor
Light containers / CI24 GB50 GBCSO2A4 (default)
Medium workloads48 GB80 GBCSO4A8
Heavy builds816 GB100 GBCSO8A16

Estimated Monthly Cost​

ResourceSpecEst. cost/mo
CloudServer VMCSO2A4 — 2 vCPU / 4 GB~€20
Boot disk50 GB~€7
Elastic IP—~€5
Total~€32/mo

Variables​

Required​

VariableDescription
arubacloud_client_idOAuth2 client ID
arubacloud_client_secretOAuth2 client secret
ssh_public_keySSH public key content

Optional​

VariableDefaultDescription
app_name"docker"Resource name prefix
environment"prod"Environment label
location"ITBG-Bergamo"Region
zone"ITBG-1"Availability zone
vm_flavor"CSO2A4"VM flavor
vm_disk_size_gb50Disk size in GB
ssh_cidr"0.0.0.0/0"SSH source CIDR — restrict to your IP
docker_users[]Additional users to add to the docker group
billing_period"Hour"Billing period

Deployment​

cd terraform-arubacloud-examples/docker-host
cp terraform.tfvars.example terraform.tfvars
# Edit terraform.tfvars
terraform init && terraform apply

After deployment:

# SSH into the host
ssh ubuntu@$(terraform output -raw public_ip)

# Or use a remote Docker context (no SSH session needed)
eval "$(terraform output -raw docker_context_command)"
docker context use aruba-docker
docker ps

Destroy​

terraform destroy

Security Recommendations​

  1. Never expose the Docker socket publicly. The example only opens SSH. Use SSH tunnelling (-L /tmp/docker.sock:/var/run/docker.sock) or a Docker context over SSH for remote access.
  2. Restrict SSH to your IP. Set ssh_cidr = "your.ip/32".
  3. Use rootless Docker for extra isolation: dockerd-rootless-setuptool.sh install.

Troubleshooting​

docker: permission denied​

Log out and log back in — group membership changes require a new session:

exit
ssh ubuntu@$(terraform output -raw public_ip)

Docker daemon not started​

sudo systemctl status docker
sudo journalctl -u docker -n 50

References​