Skip to main content

ISPmanager + Docker: managing containers

ISPmanager 6 · 10.03.2025 · 5 min read
Illustration for “ISPmanager + Docker: managing containers”

ISPmanager 6 lets you manage Docker containers alongside regular sites on the same server: the panel deploys the module, and after that containers are created and maintained either through the web interface or directly via docker over SSH. This section covers installation, creating a container, common errors, and the point past which container management is better handled outside the panel.

Installing the Docker module for ISPmanager

# Installation via CLI
ispmanager plugin.install docker

# Or via the interface:
# ISPmanager → App Store → Docker

The module installs Docker Engine itself if it is not already on the system, and adds a container management section to the panel. This is a separate package, not part of the base installation — if the section does not appear in the menu after installing, check the license: the Docker module is not available in every ISPmanager edition. Installation takes a couple of minutes and requires a panel restart before the interface picks up the new menu item.

Creating a container via ISPmanager

After installing the module: Tools → Docker → Containers → Create

  • Image: nginx:alpine
  • Ports: 8080:80
  • Volumes: /var/www/myapp:/usr/share/nginx/html:ro
  • Restart: always

Container creation fields

FieldWhat it means
ImageImage name and tag from Docker Hub or a private registry
PortsMapping host_port:container_port
VolumesMapping host_dir:container_dir, the :ro suffix means read-only
RestartRestart policy: no / always / on-failure / unless-stopped

Managing via CLI

# ISPmanager stores configs in /etc/ispmgr/docker/
docker ps --format "table {{.Names}}	{{.Status}}	{{.Ports}}"

# Container logs
docker logs -f mycontainer --tail 100

Containers created through the panel remain ordinary Docker containers: they show up in docker ps and can be restarted with standard commands. The panel only keeps a declarative description alongside its own configuration so it can restore state after a server reboot. This is convenient for troubleshooting: if a container misbehaves, there's no need to go back to the web interface — every standard Docker command works directly from SSH.

Common errors when working with containers

MessageWhat it means
Error: bind: address already in useThe host port is already taken by another process or container — for example, the server's own Apache/Nginx listening on port 80
Error response from daemon: pull access deniedThe image was not found in the public registry, or authorization is required for a private registry
Cannot connect to the Docker daemonThe docker service is not running, or the panel user is not in the docker group
Container stuck in Restarting loopThe process inside the container crashes right after starting — check docker logs, usually an application config error

Docker Manager in ISPmanager vs. plain CLI: comparison

CriterionVia ISPmanagerVia CLI directly
Speed of creating one containerFaster for simple scenariosFaster for repeated tasks with scripts
Docker Compose (multi-service stack)Pro edition onlyAlways available
Configuration versioningNo built-in supportdocker-compose.yml can be kept in git
Access for a client without SSHYes — via the web interfaceNo, SSH access is required

When managing through ISPmanager is not the right fit

  • You need a full orchestrator with scaling and health checks — that's a job for Docker Swarm or Kubernetes, not a hosting panel
  • The stack has 5+ linked services with networks and startup dependencies — managing that through separate container cards in a UI is impractical; you need docker-compose or a dedicated CI/CD pipeline
  • You need automatic CI/CD that rebuilds the image on every commit — the panel does not replace a build pipeline
  • Containers are critical for uptime and you need monitoring with alerts — use dedicated tools (Prometheus, Grafana), since ISPmanager's Docker Manager does not provide this
  • Several servers need to act as a single cluster with shared state — the panel manages containers only on the server it is installed on, with no clustering between nodes

Verifying the result

After creating a container, confirm it is not merely in the Up state but actually responds on the mapped port.

# Container status
docker ps --filter "name=mycontainer"

# Check that the port really responds
curl -I http://127.0.0.1:8080/

If curl hangs or returns Connection refused while the status is Up, check that the application inside the container listens on 0.0.0.0 rather than 127.0.0.1 — in the latter case, the port mapping from the host will never reach the process. Also check the volumes: files changed inside the container should show up on the host as well. A related topic is running Node.js and Python applications in ISPmanager without containers.

Was this article helpful?
← Back to Knowledge Base Ask Support