{% extends "baseTemplate/index.html" %} {% load static %} {% comment %} The create-container form. Everything on this page is re-validated server side in containerization.views._createContainerSubmit — the constraints repeated here (unprivileged host ports, mounts inside the site home, memory and CPU ceilings) exist so the operator sees them before submitting, not as the enforcement. The website list is rendered from the server-side list of sites this account owns; the name prefix is taken from the session, never from this form. {% endcomment %} {% block title %}New container{% endblock %} {% block styles %} {% include "containerization/_dockerstyles.html" %} {% endblock %} {% block content %}
{{ userName|json_script:"cpdUserName" }}

New container

Runs with all Linux capabilities dropped, no privilege escalation, a hard memory and CPU ceiling, and ports published on the loopback interface only.

Back to containers
{% include "containerization/_unavailable.html" %} {% if dockerAvailable == 1 %}

Basics

Must already be pulled — see Images.
2–32 characters of a–z, 0–9, dot, dash or underscore. Your username is prefixed automatically so names cannot collide with another account's.
Required if you want bind mounts: they are confined to /home/<domain>.

Limits and lifecycle

16m – 32g. Swap is pinned to the same value.
0.10 – 16.00.

Every container also gets --cap-drop ALL, --security-opt no-new-privileges and a 512-process ceiling. Host networking, host PID namespace and --privileged are never available here.

Port mappings

No ports published. Host ports must be 1024 or above and are bound to 127.0.0.1 only.

Environment variables

Values are stored in the panel database and are visible to anyone who can manage this container. Treat them as configuration, not as secrets you would not write down.

Volumes

Pick a website first. Bind mounts are confined to that site's home directory — there is no way to mount anything else from this panel.

{% endif %}
{% endblock %} {% block scripts %} {% endblock %}