Containery is a web-based container management tool that provides a fast, lightweight, and intuitive interface for managing Docker containers. Whether you're a software engineer, DevOps, QA, or anyone who needs to interact with containers, Containery makes it easy to monitor status, view logs, and access terminals for quick insights and control.
- Docker Management: Manage containers, images, networks, and volumes within a unified interface.
- Terminal and Logs: View container logs and interact with container terminals directly in the UI.
- Responsive Web Interface: Access and manage Docker resources from any device.
- User Management: Authentication, user profiles, and roles. Ensure that each member has the right level of access to perform their tasks efficiently.
To deploy Containery, use the following docker-compose.yml configuration. Please note that the docker-compose.yml in the repository is set up for development purposes.
services:
app:
image: ghcr.io/danylo829/containery:latest
container_name: containery
restart: "unless-stopped"
ports:
- "5000:5000"
volumes:
- containery_data:/containery_data
- containery_static:/containery/app/static/dist
- /var/run/docker.sock:/var/run/docker.sock:ro
volumes:
containery_data:
name: containery_data
containery_static:
name: containery_staticOnce the application starts, you can access it by navigating to http://localhost:5000 in your browser. Feel free to change host port (e.g. 80:5000, 8080:5000)
If you need to expose the application over a domain, add HTTPS or improve page loads by caching static content, you can use NGINX as a reverse proxy. Below is a sample NGINX configuration:
server {
listen 80;
server_name your-domain.com;
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
gzip_min_length 1024;
location ^~ /static/dist/ {
root /var/www/containery;
autoindex off;
access_log off;
expires max;
add_header Cache-Control "public, max-age=31536000, immutable";
}
location /socket.io {
proxy_pass http://app:5000/socket.io;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
proxy_pass http://app:5000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Note:
- If you're using NGINX as a reverse proxy, remove the
portssection from thedocker-compose.ymlfile for theappservice. - To enable static content caching, ensure that the
containery_staticvolume is mounted to/var/www/containery/static/distin the NGINX configuration. - If you do not wish to enable static content caching, you can omit the
containery_staticvolume mount and remove the/static/dist/location block from the NGINX configuration.
Containery supports managing multiple Docker hosts. To register one, go to Settings → Docker Hosts → Add and provide a name and URL.
For remote machines, we recommend running lscr.io/linuxserver/socket-proxy on the remote host. It exposes the Docker socket over HTTP and lets you enable only the capabilities you actually need. For example, if you only want to browse images on a remote host, you can enable IMAGES and INFO alone and leave everything else off for security reasons.
See the socket proxy documentation for setup instructions and the full list of available capabilities.
Once the proxy is running on the remote machine, register it in Containery with:
- URL:
http://<remote-host>:<proxy-port>
If you need to connect to a Docker daemon accessible via a Unix socket (e.g. a socket shared through a volume), use:
- URL:
unix:///path/to/docker.sock
DOCKER_SOCKET_PATH: The path to the Docker socket. Defaults to/var/run/docker.sock.
SECRET_KEY: A secret key used for cryptographic operations. If not provided, a random 32-byte hexadecimal string will be generated.CSRF_SECRET_KEY: A secret key specifically for CSRF protection. If not provided, a random 32-byte hexadecimal string will be generated.SQLALCHEMY_DATABASE_URI: The database connection URI. Defaults tosqlite:////containery_data/containery.dbfor local development.SQLALCHEMY_TRACK_MODIFICATIONS: A flag to enable or disable SQLAlchemy's event system. Defaults toFalse.DEBUG: Enables or disables debug mode. Defaults toFalse.
- OIDC Authentication
- Remote Docker host support
This project is licensed under the MIT License - see the LICENSE file for details.



