a lightweight container runtime built in Go that provides functionality for managing containers and images.
Install
·
Usage
·
License
·
Credits
·
Blog
TODO: Add installation instructions
- refer to the examples in
usage.md
~/.veil/
├── containers/ # Container instances
│ └── <container-id>/
│ ├── upper/ # Container layer (writable)
│ ├── lower/ # Image layer (read-only)
│ ├── work/ # OverlayFS work directory
│ ├── merged/ # OverlayFS merged view
│ └── state.json # Container configuration
├── images/ # Downloaded images
│ ├── <image-id>.tar # Image archive files
│ └── list.json # Image metadata database
└── tmp/ # Temporary files
---
config:
theme: redux
look: classic
layout: dagre
---
flowchart LR
subgraph CLI["Veil CLI"]
direction LR
PULL["pull"]
RUN["run"]
PS["ps"]
STOP["stop"]
RM["rm"]
EXEC["exec"]
IMAGES["images"]
VERSION["version"]
end
subgraph COBRA["Cobra Framework"]
FRAMEWORK["Command Router"]
end
subgraph IMG_MGMT["Image Management"]
IMG_PULL["Pull Images"]
IMG_EXTRACT["Extract Layers"]
IMG_STORE["Manage Store"]
end
subgraph CONTAINER_RT["Container Runtime"]
CONT_CREATE["Create"]
CONT_LIFECYCLE["Start/Stop"]
CONT_ATTACH["Attach/Exec"]
end
subgraph CONFIG_MGR["Configuration"]
DAEMON_CONFIG["Daemon Config"]
CONTAINER_STATE["Container State"]
IMAGE_META["Image Metadata"]
end
subgraph RUNTIME["Core Runtime"]
direction LR
IMG_MGMT
CONTAINER_RT
CONFIG_MGR
end
subgraph OVERLAY["OverlayFS"]
LAYER_FS["Layered FS"]
COW["Copy-on-Write"]
EFFICIENT["Efficient Storage"]
end
subgraph CGROUPS["CGroups"]
CPU_LIMITS["CPU Limits"]
MEM_LIMITS["Memory Limits"]
PROC_LIMITS["Process Limits"]
end
subgraph NAMESPACES["Namespaces"]
PID_ISO["PID Isolation"]
NET_ISO["Network Isolation"]
FS_ISO["Filesystem Isolation"]
end
subgraph SYSTEM["System Integration"]
direction LR
OVERLAY
CGROUPS
NAMESPACES
end
CLI --> COBRA
COBRA --> RUNTIME
RUNTIME --> SYSTEM
PULL:::cli
RUN:::cli
PS:::cli
STOP:::cli
RM:::cli
EXEC:::cli
IMAGES:::cli
VERSION:::cli
FRAMEWORK:::framework
IMG_PULL:::runtime
IMG_EXTRACT:::runtime
IMG_STORE:::runtime
CONT_CREATE:::runtime
CONT_LIFECYCLE:::runtime
CONT_ATTACH:::runtime
DAEMON_CONFIG:::runtime
CONTAINER_STATE:::runtime
IMAGE_META:::runtime
LAYER_FS:::system
COW:::system
EFFICIENT:::system
CPU_LIMITS:::system
MEM_LIMITS:::system
PROC_LIMITS:::system
PID_ISO:::system
NET_ISO:::system
FS_ISO:::system
veil/
├── cmd/ # CLI commands (Cobra)
│ ├── root.go # Root command and global flags
│ ├── pull.go # Image pull command
│ ├── run.go # Container run command
│ ├── list.go # Container list command (ps)
│ ├── stop.go # Container stop command
│ ├── rm.go # Container remove command
│ ├── exec.go # Container exec command
│ ├── images.go # Image list command
│ └── version.go # Version command
├── pkg/ # Public packages
│ ├── images/ # Image management
│ ├── runtime/ # Container runtime
│ └── types/ # Type definitions
├── internal/ # Private packages
│ ├── config/ # Configuration management
│ ├── logging/ # Logging setup
│ ├── cgroup/ # Cgroup management
│ └── utils/ # Utility functions
├── examples/ # Usage examples
├── Makefile # Build automation
├── README.md # Comprehensive documentation
└── main.go # Application entry point