Documentation
¶
Overview ¶
Package unregistry provides integration with the unregistry tool for efficient Docker image distribution to remote servers without a persistent registry.
Unregistry (https://github.com/psviderski/unregistry) uses SSH tunneling to push images directly to remote Docker hosts, transferring only missing layers.
IMPORTANT: docker-pussh runs LOCALLY and pushes images FROM the local machine TO a remote server. It is NOT meant to be run on a remote server.
For Tako CLI deployments where images are built on the manager node (not locally), we provide a fallback mechanism using docker save/load over SSH.
Benefits of docker-pussh (when images are built locally):
- Only transfers missing layers (like rsync for Docker images)
- Uses existing SSH connections (no additional ports/firewall rules)
- No persistent registry service to maintain
For multi-server swarm deployments where images are built on the manager:
- We use docker save | ssh docker load to distribute images
- This transfers the full image but works reliably without local builds
Index ¶
- func GetInstallInstructions() string
- func IsDockerPusshAvailable() bool
- type Manager
- func (m *Manager) CheckImageExists(client *ssh.Client, imageName string) (bool, error)
- func (m *Manager) DistributeImage(managerClient *ssh.Client, imageName string) error
- func (m *Manager) DistributeImageParallel(managerClient *ssh.Client, imageName string) error
- func (m *Manager) EnsureImageOnAllNodes(managerClient *ssh.Client, imageName string) (bool, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetInstallInstructions ¶
func GetInstallInstructions() string
GetInstallInstructions returns instructions for installing docker-pussh
func IsDockerPusshAvailable ¶
func IsDockerPusshAvailable() bool
IsDockerPusshAvailable checks if docker-pussh is installed locally Note: docker-pussh is only useful when images are built locally, not on remote servers
Types ¶
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager handles image distribution across Swarm nodes
func NewManager ¶
NewManager creates a new unregistry manager
func (*Manager) CheckImageExists ¶
CheckImageExists checks if an image exists on a node
func (*Manager) DistributeImage ¶
DistributeImage distributes a Docker image from the manager node to all worker nodes using docker save/load over SSH. This is the reliable method for Tako deployments where images are built on the manager node (not locally).
func (*Manager) DistributeImageParallel ¶
DistributeImageParallel distributes an image to all workers in parallel