shipyard

package module
v3.0.0+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 6, 2015 License: Apache-2.0 Imports: 3 Imported by: 79

README

Shipyard

Composable Docker Management

Shipyard enables multi-host, Docker cluster management. It uses Docker Swarm for cluster resourcing and scheduling.

Quick Start

Option 1: Shipyard Deploy

This will launch an entire stack. It uses Docker Machine and the Docker CLI to create a Docker Swarm. It will then deploy Shipyard to manage the Swarm. When it is finished, Shipyard will be configured to manage the Swarm and be ready to go.

Shipyard Deploy can use any provider supported by Docker Machine

Deploy using the VirtualBox Provider

Note: you must have VirtualBox installed.

curl -s https://shipyard-project.com/deploy | bash -s

For full options:

curl -s https://shipyard-project.com/deploy | bash -s -- -h

Option 2: Manual Deployment (advanced users)

Documentation

Full docs are available at http://shipyard-project.com

Components

There are three components to Shipyard:

Controller

The Shipyard controller talks to a RethinkDB instance for data storage (user accounts, engine addresses, events, etc). It also serves the API and web interface (see below). The controller uses Citadel to communicate to each host and handle cluster events.

API

Everything in Shipyard is built around the Shipyard API. It enables actions such as starting, stopping and inspecting containers, adding and removing engines and more. It is a very simple RESTful JSON based API.

UI

The Shipyard UI is a web interface to the Shipyard cluster. It uses the Shipyard API for all interaction. It is an AngularJS app that is served via the Controller.

Contributing

Controller

To get a development environment you will need:

  • Go 1.4+
  • Node.js: (npm for bower to build the Angular frontend)

Run the following:

  • install Godep: go get github.com/tools/godep
  • run npm install -g bower to install bower
  • run make build to build the binary
  • run make media to build the media
  • run ./controller -h for options

License

Shipyard is licensed under the Apache License, Version 2.0. See LICENSE for full license text.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ClusterInfo

type ClusterInfo struct {
	Cpus           float64 `json:"cpus,omitempty"`
	Memory         float64 `json:"memory,omitempty"`
	ContainerCount int     `json:"container_count,omitempty"`
	EngineCount    int     `json:"engine_count,omitempty"`
	ImageCount     int     `json:"image_count,omitempty"`
	ReservedCpus   float64 `json:"reserved_cpus,omitempty"`
	ReservedMemory float64 `json:"reserved_memory,omitempty"`
	Version        string  `json:"version,omitempty"`
}

type ConsoleSession

type ConsoleSession struct {
	ID          string `json:"id,omitempty" gorethink:"id,omitempty"`
	ContainerID string `json:"container_id,omitempty" gorethink:"container_id,omitempty"`
	Token       string `json:"token,omitempty" gorethink:"token,omitempty"`
}

type Event

type Event struct {
	Type          string                      `json:"type,omitempty"`
	ContainerInfo *dockerclient.ContainerInfo `json:"container_info,omitempty"`
	Time          time.Time                   `json:"time,omitempty"`
	Message       string                      `json:"message,omitempty"`
	Username      string                      `json:"username,omitempty"`
	Tags          []string                    `json:"tags,omitempty"`
}

type Node

type Node struct {
	ID             string   `json:"id,omitempty" gorethink:"id,omitempty"`
	Name           string   `json:"name,omitempty" gorethink:"name,omitempty"`
	Addr           string   `json:"addr,omitempty" gorethink:"addr,omitempty"`
	Containers     string   `json:"containers,omitempty"`
	ReservedCPUs   string   `json:"reserved_cpus,omitempty"`
	ReservedMemory string   `json:"reserved_memory,omitempty"`
	Labels         []string `json:"labels,omitempty"`
	ResponseTime   float64  `json:"response_time" gorethink:"response_time,omitempty"`
}

type Registry

type Registry struct {
	ID   string `json:"id,omitempty" gorethink:"id,omitempty"`
	Name string `json:"name,omitempty" gorethink:"name,omitempty"`
	Addr string `json:"addr,omitempty", gorethink:"addr,omitempty"`
	// contains filtered or unexported fields
}

func NewRegistry

func NewRegistry(id, name, addr string) (*Registry, error)

func (*Registry) DeleteRepository

func (r *Registry) DeleteRepository(name string) error

func (*Registry) Repositories

func (r *Registry) Repositories() ([]*registry.Repository, error)

func (*Registry) Repository

func (r *Registry) Repository(name string) (*registry.Repository, error)

type Usage

type Usage struct {
	ID              string  `json:"id,omitempty"`
	Version         string  `json:"version,omitempty"`
	NumOfEngines    int     `json:"num_of_engines,omitempty"`
	NumOfImages     int     `json:"num_of_images,omitempty"`
	NumOfContainers int     `json:"num_of_containers,omitempty"`
	TotalCpus       float64 `json:"total_cpus,omitempty"`
	TotalMemory     float64 `json:"total_memory,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL