Skip to content
Docker CE with Portainer product logo
  • AWSAvailable on Amazon Web Services
  • AzureAvailable on Microsoft Azure
  • GCP· nextGoogle Cloud is next on the roadmap
Available

Docker CE with Portainer

Docker Engine 29.8 with Compose v5, Buildx and containerd, Portainer CE as a web console, nginx and Webmin - a container host usable from the command line and the browser the moment it boots. Container logs are rotated, Docker's network pool is kept clear of the default-VPC CIDR, and two Compose examples ship ready to run.

Version
v29.8.0
Operating system
Ubuntu 24.04 LTS
Architecture
x86_64
Support
Email support

What's installed

Every package and version on the image, identical on every cloud it ships on. Nothing else is installed.

  • Docker Engine 29.8.0
  • Docker Compose v5.5.1
  • Buildx v0.37.1
  • containerd v2.3.5
  • Portainer CE 2.45.0
  • nginx 1.24.0
  • Webmin 2.660

LicensingDocker Engine (Apache-2.0), Portainer CE (Zlib), no licence key required

Deploy anywhere

Docker CE with Portainer on AWS and Azure.

Google Cloud is next on the roadmap. One clean-room build, one first-boot credential model, one patch cadence — identical on every cloud you run. Every identifier below is the real one; copy it and launch.

  1. AWS
    Available

    Amazon Web Services

    AMI · v29.8.0

    AWS AMI ID

    Shown for your region on the AWS Marketplace launch page once you subscribe.

    Released
    Root volume
    gp3 · 20 GiB
    Instance types
    • t3a.medium
    • t3.medium
    • t3a.large
    • m6a.large
    Regions34 regions· show all
    • us-east-1
    • af-south-1
    • ap-east-1
    • ap-east-2
    • ap-northeast-1
    • ap-northeast-2
    • ap-northeast-3
    • ap-south-1
    • ap-south-2
    • ap-southeast-1
    • ap-southeast-2
    • ap-southeast-3
    • ap-southeast-4
    • ap-southeast-5
    • ap-southeast-6
    • ap-southeast-7
    • ca-central-1
    • ca-west-1
    • eu-central-1
    • eu-central-2
    • eu-north-1
    • eu-south-1
    • eu-south-2
    • eu-west-1
    • eu-west-2
    • eu-west-3
    • il-central-1
    • me-central-1
    • me-south-1
    • mx-central-1
    • sa-east-1
    • us-east-2
    • us-west-1
    • us-west-2

    5-day free trial, then from $0.04/hr software charge (larger instance sizes cost more) plus your own EC2 costs, billed by AWS.

    Subscriptions are open to AWS India (AISPL) accounts. Outside India? Ask us for a private build.

  2. Azure
    Available

    Microsoft Azure

    Compute Gallery image · v29.8.1

    Azure Compute Gallery image ID

    Selected for you when you create the VM from the Azure Marketplace listing.

    Released
    OS disk
    Premium_LRS · 30 GiB
    VM sizes
    • Standard_D2as_v7
    • Standard_D2as_v5
    • Standard_B2ms
    • Standard_D4as_v7
    Regions50 regions· show all
    • eastus
    • australiacentral
    • australiaeast
    • australiasoutheast
    • austriaeast
    • belgiumcentral
    • brazilsouth
    • canadacentral
    • canadaeast
    • centralindia
    • centralus
    • chilecentral
    • denmarkeast
    • eastasia
    • eastus2
    • francecentral
    • germanywestcentral
    • indiasouthcentral
    • indonesiacentral
    • israelcentral
    • italynorth
    • japaneast
    • japanwest
    • jioindiawest
    • koreacentral
    • koreasouth
    • malaysiawest
    • mexicocentral
    • newzealandnorth
    • northcentralus
    • northeurope
    • norwayeast
    • polandcentral
    • qatarcentral
    • southafricanorth
    • southcentralus
    • southeastasia
    • southindia
    • spaincentral
    • swedencentral
    • switzerlandnorth
    • uaenorth
    • uksouth
    • ukwest
    • westcentralus
    • westeurope
    • westindia
    • westus
    • westus2
    • westus3
AWS

Getting started on Amazon Web Services

From launch to signed in, step by step.

  1. Subscribe on AWS Marketplace and launch in your region with TCP 22, 80, 8000 and 9000 open; wait five to ten minutes.

  2. Open http://<instance-public-ip>/ for links to both consoles. Portainer: port 9000. Webmin: port 8000. Both use username admin and your EC2 Instance ID as the password (for example i-0123456789abcdef0).

  3. SSH as ubuntu with your key pair. Docker works without sudo: docker run -d --name web -p 8080:80 nginx:alpine. Publish the port in your security group too.

  4. Compose examples: cd ~/examples/nginx-hello && docker compose up -d. The wordpress-mysql/ example carries a placeholder database password to change first.

  5. Change passwords with sudo bash /home/ubuntu/iscripts/pass_portainer.sh (12+ characters, Portainer's own rule) or pass_webmin.sh. Log rotation and the address pool are in /etc/docker/daemon.json.

Security posture

What this AWS image does and does not ship with, one fact per line.

  • Clean-room build on Canonical's official Ubuntu 24.04 LTS image: every component comes from its own official repository or release, nothing is copied from any third-party image, and the finished image was scanned for third-party vendor strings before capture.

  • No usable credential ships in the image; passwords are set on your instance at first boot from EC2 instance metadata (IMDSv2) and the scripts that set them delete themselves afterwards.

  • SSH is key-only, root login over SSH is refused, and build-time SSH keys, shell history and logs were removed before imaging.

  • Portainer keeps its users and its JWT signing secret in the same database, so first boot destroys and recreates the Portainer container and volume rather than merely changing the password - otherwise every instance from this image would share a signing secret.

  • The image it recreates from is already on disk, so first boot needs no network access. pass_portainer.sh requires 12 characters, matching Portainer's own API policy, and preserves stacks, registries and settings; lost-password recovery steps are in the script header.

  • Only ports 22, 80, 8000 and 9000 are served; anything you publish yourself must also be allowed in the security group.

  • The example WordPress stack carries a placeholder database password to change before real use.

  • The bundled password tools enforce at least 10 characters with upper- and lower-case letters, a number and a symbol, and verify the new credential with a real sign-in before reporting success.

  • The image is HTTP-only by design so it works at a bare IP with no certificate warnings: terminate TLS at a load balancer or add a certificate before exposing it publicly, and restrict port 22 and any admin ports to trusted IP ranges in your security group.

Azure

Getting started on Microsoft Azure

From launch to signed in, step by step.

  1. Create the VM from the Azure Marketplace listing with TCP 22, 80, 8000 and 9000 open in your network security group, plus any port your own containers publish. Choose ubuntu as the administrator username so SSH and the script paths match. Wait about two minutes for first boot.

  2. Open http://<vm-public-ip>/ for the landing page. Portainer: port 9000 (username admin). Webmin: port 8000 (username admin).

  3. The password for both is your VM ID: in the Azure portal open the virtual machine, choose Properties and copy VM ID - a 36-character value such as 02aab8a4-74ef-476e-8182-f6d2ba4166a6, typed exactly as shown in lower case.

  4. SSH as ubuntu with your key; docker needs no sudo. Two Compose examples are in ~/examples/ - a static nginx site on 8080 and WordPress with MySQL on 8081. Start one with cd ~/examples/nginx-hello && docker compose up -d; the nginx image is already pulled, so it starts with no download.

  5. Change passwords with sudo bash ~/iscripts/pass_portainer.sh or pass_webmin.sh. These need a stronger password than the VM ID, which has no uppercase letter.

Security posture

What this Azure image does and does not ship with, one fact per line.

  • Clean-room build on Canonical's official Ubuntu 24.04 LTS image from the Azure Marketplace: every component comes from its own official source and no third-party image was launched or copied.

  • Portainer ships with no database at all - it keeps its users and its session-signing secret in one file, so shipping that volume would let anyone holding the image mint a token any customer's Portainer would accept.

  • The cleanup destroys it and first boot creates the admin account with a fresh signing secret from the VM's own vmId read from Azure IMDS, then registers the local Docker environment.

  • Webmin's accounts are randomised before capture and the build's own VM ID is proven unable to open a session. /etc/machine-id and the Docker engine-id are both cleared so every deployment gets its own identity - verified on a deployed VM, where both differed from the build's and the build's VM ID was refused.

  • Docker's default address pool is pinned to 172.20.0.0/14 so container networks cannot collide with the virtual network.

  • The ubuntu account ships password-locked with an empty authorized_keys.

  • Verified against Microsoft's documented Linux certification test cases - 13 passed, 0 failures - with VM extension provisioning confirmed, a reboot smoke test, and every helper script executed rather than only reviewed.

  • The consoles are HTTP-only by design so they work at a bare IP: put them behind TLS and restrict ports 22, 8000 and 9000 to trusted IP ranges before exposing them.