{"_id":"@asymmetricstar/docker-manager","_rev":"2-8e2189d4c25690b8833ceb201f0ef82b","name":"@asymmetricstar/docker-manager","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@asymmetricstar/docker-manager","version":"1.0.0","keywords":["docker","docker-api","management","sdk","typescript","zero-dependency","container","devops"],"author":{"name":"Levent INAN"},"license":"MIT","_id":"@asymmetricstar/docker-manager@1.0.0","maintainers":[{"name":"asymmetricstar","email":"iistr.network@gmail.com"}],"homepage":"https://github.com/asymmetricstar/Docker-Manager#readme","bugs":{"url":"https://github.com/asymmetricstar/Docker-Manager/issues"},"dist":{"shasum":"81b321558f6391bdb9def21daf2a5344b7930c58","tarball":"https://registry.npmjs.org/@asymmetricstar/docker-manager/-/docker-manager-1.0.0.tgz","fileCount":6,"integrity":"sha512-TubH+TSgVfIGmscBmOYQOXh8/OCH3x+kxbe3klu19UYxY3cXT8fjALEXbSzXO61PYN7c+PSVeEwXvU4aWi+iSw==","signatures":[{"sig":"MEUCIAGHWRjc+wW0r8BbhPPCyS71RUD7OTK16pholOxkop1hAiEA5bS5L89BZrc+B9dWfZspWTqvCf1Nsk0ykRxm62tjoyw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41972},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"aaafd4823b801bfab6b882ea89d152ac2d5e41b2","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"asymmetricstar","email":"iistr.network@gmail.com"},"repository":{"url":"git+https://github.com/asymmetricstar/Docker-Manager.git","type":"git"},"_npmVersion":"11.12.1","description":"Professional Zero-Dependency Docker Engine API Management SDK for Node.js and TypeScript","directories":{},"_nodeVersion":"25.6.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/docker-manager_1.0.0_1775279372326_0.8070801231190636","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@asymmetricstar/docker-manager","version":"1.0.1","description":"Professional Zero-Dependency Docker Engine API Management SDK for Node.js and TypeScript","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","prepublishOnly":"npm run build"},"keywords":["docker","docker-api","management","sdk","typescript","zero-dependency","container","devops"],"author":{"name":"Levent INAN"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/asymmetricstar/Docker-Manager.git"},"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0"},"gitHead":"6c8ff294837c8be3abf188003788e72364aaeffc","_id":"@asymmetricstar/docker-manager@1.0.1","bugs":{"url":"https://github.com/asymmetricstar/Docker-Manager/issues"},"homepage":"https://github.com/asymmetricstar/Docker-Manager#readme","_nodeVersion":"25.6.1","_npmVersion":"11.12.1","dist":{"integrity":"sha512-KgR6VXTzleFKshXW+cgVHYRxXXMTm/ZJzOrULL+OUOwGpAWGQNYRauGFCoA6Yho7sUPzG4DU1y8Y3SWrg6hjJQ==","shasum":"f502fd6934a9eb00a21818d2e39a4038b9ad929a","tarball":"https://registry.npmjs.org/@asymmetricstar/docker-manager/-/docker-manager-1.0.1.tgz","fileCount":6,"unpackedSize":62952,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAWB7UqVlc6Arc5r3/iQahDD9D3bpttQsnc37onmCiIpAiEA6cGbEC1ojQLjmnOYb1PSXpk8+Vm9rxGCArYOo/S2ZTA="}]},"_npmUser":{"name":"asymmetricstar","email":"iistr.network@gmail.com"},"directories":{},"maintainers":[{"name":"asymmetricstar","email":"iistr.network@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/docker-manager_1.0.1_1775355838448_0.09998614677145268"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-04T05:09:32.220Z","modified":"2026-04-05T02:23:58.730Z","1.0.0":"2026-04-04T05:09:32.491Z","1.0.1":"2026-04-05T02:23:58.616Z"},"bugs":{"url":"https://github.com/asymmetricstar/Docker-Manager/issues"},"author":{"name":"Levent INAN"},"license":"MIT","homepage":"https://github.com/asymmetricstar/Docker-Manager#readme","keywords":["docker","docker-api","management","sdk","typescript","zero-dependency","container","devops"],"repository":{"type":"git","url":"git+https://github.com/asymmetricstar/Docker-Manager.git"},"description":"Professional Zero-Dependency Docker Engine API Management SDK for Node.js and TypeScript","maintainers":[{"name":"asymmetricstar","email":"iistr.network@gmail.com"}],"readme":"# Docker Management SDK (Professional Zero-Dependency Interface)\r\n\r\nThis library is a high-performance, modular Node.js/TypeScript interface designed to communicate directly with the Docker Engine API. Built with a **Zero-Dependency** philosophy, it uses only built-in Node.js modules (`http`, `net`, `fs`).\r\n\r\n## 🏗️ Architecture\r\nThe system provides a simplified abstraction layer over Docker's complex low-level API. All modules operate through a central `DockerClient`, ensuring secure, robust, and asynchronous communication.\r\n\r\n## 🚀 Getting Started & Configuration\r\n\r\nYou can customize the heartbeat (ping) interval and the socket path during initialization.\r\n\r\n```typescript\r\nimport { DockerManager } from \"@asymmetricstar/docker-manager\"\r\n\r\n// Custom Configuration\r\nconst manager = new DockerManager({\r\n  socketPath: process.platform === 'win32' ? '//./pipe/docker_engine' : '/var/run/docker.sock',\r\n  config: {\r\n    ping: 5 // Perform connection check every 5 seconds (Heartbeat)\r\n  }\r\n});\r\n\r\n// Initialize with default values\r\n// const manager = new DockerManager();\r\n```\r\n\r\n## 🛡️ Event-Driven Management & Error Handling\r\n\r\nThe library extends the `EventEmitter` class, allowing you to use centralized listeners instead of repetitive `try-catch` blocks.\r\n\r\n### Connection and Audit Monitoring\r\nThe system continuously monitors the Docker connection in the background.\r\n\r\n```typescript\r\nconst manager = new DockerManager();\r\n\r\n// Capture errors globally\r\nmanager.on('error', (err) => {\r\n  console.error(\"Docker Error:\", err.message);\r\n});\r\n\r\n// Monitor connection status\r\nmanager.on('connected', () => console.log(\"Docker Connected ✅\"));\r\nmanager.on('disconnected', () => console.log(\"Docker Disconnected ❌\"));\r\n\r\n// Monitor API calls (Audit Log)\r\nmanager.on('command', (cmd) => {\r\n  console.log(`[${cmd.timestamp}] ${cmd.method} ${cmd.path}`);\r\n  if (cmd.body) console.log(\"Payload:\", cmd.body);\r\n});\r\n\r\n// Query current status\r\nconst isLive = manager.getStatus();\r\n```\r\n\r\n---\r\n\r\n## 📦 1. Container Management (`manager.containers`)\r\n\r\nThe primary module for managing the full lifecycle of Docker containers.\r\n\r\n### List Containers (`list`)\r\nRetrieves containers with optional filtering.\r\n\r\n**Available Filters:**\r\n- `status`: created, restarting, running, removing, paused, exited, dead\r\n- `name`: Container name\r\n- `id`: Container ID\r\n- `ancestor`: Image name or ID\r\n- `label`: \"key\" or \"key=value\"\r\n- `network`: Network name or ID\r\n\r\n```typescript\r\n// Example: Get only running containers named \"web\"\r\nconst containers = await manager.containers.list({\r\n  filters: {\r\n    status: 'running',\r\n    name: 'web'\r\n  }\r\n});\r\n```\r\n\r\n### Create Container (`create`)\r\nCreates a new container. Automatically transforms simplified formats into Docker API schemas.\r\n```typescript\r\nconst config = {\r\n  image: 'nginx:latest',\r\n  ports: ['8080:80'],           // Host:Container mapping\r\n  env: { MODE: 'production' },  // Key-Value object\r\n  volumes: ['/my/data:/data'],  // Volume mounts\r\n  restart: 'always'             // Policy: no, always, on-failure\r\n};\r\nconst result = await manager.containers.create('web-server', config);\r\n```\r\n\r\n### Lifecycle Control\r\n```typescript\r\nawait manager.containers.start('web-server');\r\nawait manager.containers.stop('web-server', 10); // 10-second timeout\r\nawait manager.containers.restart('web-server');\r\n```\r\n\r\n### Logs (`logs`)\r\nParses Docker's binary multiplexed stream and returns clean text.\r\n```typescript\r\nconst logs = await manager.containers.logs('web-server', { \r\n  tail: 100, \r\n  timestamps: true \r\n});\r\n```\r\n\r\n### Inspect (`inspect`)\r\nReturns raw data including IP addresses, port maps, and state information.\r\n```typescript\r\nconst info = await manager.containers.inspect('web-server');\r\n```\r\n\r\n### Remove (`remove`)\r\n```typescript\r\nawait manager.containers.remove('web-server', { force: true, v: true });\r\n```\r\n\r\n---\r\n\r\n## 🖼️ 2. Image Management (`manager.images`)\r\n\r\n### Pull Image (`pull`)\r\nDownloads a new image from Docker Hub.\r\n```typescript\r\nawait manager.images.pull('redis:alpine');\r\n```\r\n\r\n### Search (`search`)\r\nSearches for images on Docker Hub.\r\n```typescript\r\nconst results = await manager.images.search('node', 5); // term and limit\r\n```\r\n\r\n### Management\r\n```typescript\r\nconst images = await manager.images.list();\r\nconst imageDetails = await manager.images.inspect('redis:alpine');\r\nawait manager.images.remove('redis:alpine', true); // true = force\r\n```\r\n\r\n---\r\n\r\n## 🌐 3. Network Management (`manager.networks`)\r\n\r\n### Creation and Listing\r\n```typescript\r\n// Simple bridge network\r\nawait manager.networks.create('app-network', { driver: 'bridge' });\r\n\r\n// Network with custom IP range (Subnet/Gateway)\r\nawait manager.networks.create('secure-net', {\r\n  driver: 'bridge',\r\n  subnet: '172.20.0.0/16',\r\n  gateway: '172.20.0.1'\r\n});\r\n\r\nconst networks = await manager.networks.list();\r\n```\r\n\r\n### Container Connections\r\n```typescript\r\nawait manager.networks.connect('app-network', 'container-id');\r\nawait manager.networks.disconnect('app-network', 'container-id');\r\n```\r\n\r\n---\r\n\r\n## 💾 4. Volume Management (`manager.volumes`)\r\n\r\n### Advanced Creation (`create`)\r\nAllows you to create size-limited, RAM-backed, or standard unlimited volumes.\r\n```typescript\r\n// 1. Standard/Unlimited Volume (Default)\r\nawait manager.volumes.create('unlimited-data');\r\n\r\n// 2. RAM-backed 256MB volume (tmpfs)\r\nawait manager.volumes.create('cache-vol', { type: 'tmpfs', size: '256m' });\r\n\r\n// 3. Sized local volume (Requires Linux Quota support)\r\nawait manager.volumes.create('data-vol', { size: '1gb' });\r\n```\r\n\r\n### Management\r\n```typescript\r\nconst { Volumes } = await manager.volumes.list();\r\nawait manager.volumes.remove('data-vol');\r\nconst result = await manager.volumes.prune(); // Clean up ALL unused volumes\r\n```\r\n\r\n---\r\n\r\n## 🛠️ 5. Automated Deployment (`deploy`)\r\n\r\nEnables single-command deployment (Infrastructure as Code) using YAML or JSON files.\r\n\r\n```typescript\r\n// Automatically detects extension, parses, creates, and starts.\r\nawait manager.deploy('./deploy.yaml', 'production-service');\r\n```\r\n\r\n---\r\n\r\n## 🛡️ Error Management\r\nThe system is protected with internal error handling. Detailed messages from the Docker API are emitted through the error event.\r\n\r\n```typescript\r\ntry {\r\n  // Methods return null on error, details are sent to manager.on('error')\r\n  const res = await manager.containers.start('invalid-id');\r\n} catch (error) {\r\n  // For critical failures not handled by events\r\n  console.error(\"Critical Failure:\", error.message);\r\n}\r\n```\r\n\r\n---\r\n## 📋 Changelog\r\n\r\n### v1.0.1\r\n- **Full Docker API Container Config Support** — The `create` method now supports **all** fields from the Docker Engine API v1.43 `/containers/create` endpoint. Previously limited to `image`, `ports`, `env`, `volumes`, and `restart`. New supported fields include:\r\n  - `cmd`, `entrypoint`, `workingDir`, `user`, `hostname`, `tty`, `labels`\r\n  - Resource limits: `memory`, `nanoCpus`, `cpuShares`, `ulimits`, `shmSize`\r\n  - Security: `privileged`, `capAdd`, `capDrop`, `readonlyRootfs`\r\n  - Networking: `networkMode`, `dns`, `extraHosts`, `networks` (with IPAM config)\r\n  - Healthcheck, LogConfig, AutoRemove, and many more\r\n- **TypeScript Interfaces** — Added full type definitions: `ContainerConfig`, `MountConfig`, `NetworkEndpointConfig`, `DeviceRequestConfig`\r\n- **Auto Config Transformation** — Smart conversion for `cmd` (string → array), `entrypoint` (string → array), `env` (object → array), duration strings (e.g. `\"30s\"` → nanoseconds), and automatic removal of undefined values from the API payload\r\n\r\n---\r\n\r\n*This SDK is optimized for Docker Engine API v1.43 standards.*\r\n\r\n*@asymmetricstar\r\n","readmeFilename":"README.md"}