Joyent Triton Container Driver Documentation

Joyent Triton is a Docker hosting service, provided by service provider Joyent. Docker-native tools and elastic hosts make deploying on Triton as easy as running Docker on your laptop. There is no special software to install or configure. Mix Docker containers with container-native Linux to extend the benefits of containerization to legacy applications and stateful services.

../../_images/triton.png

Instantiating the driver

Download the script:

curl -O https://raw.githubusercontent.com/joyent/sdc-docker/master/tools/sdc-docker-setup.sh

Now execute the script, substituting the correct values:

bash sdc-docker-setup.sh <CLOUDAPI_URL> <ACCOUNT_USERNAME> ~/.ssh/<PRIVATE_KEY_FILE>

This should output something similar to the following:

Setting up Docker client for SDC using:
    CloudAPI:        https://us-east-1.api.joyent.com
    Account:         jill
    Key:             /Users/localuser/.ssh/sdc-docker.id_rsa

If you have a pass phrase on your key, the openssl command will
prompt you for your pass phrase now and again later.

Verifying CloudAPI access.
CloudAPI access verified.

Generating client certificate from SSH private key.
writing RSA key
Wrote certificate files to /Users/localuser/.sdc/docker/jill

Get Docker host endpoint from cloudapi.
Docker service endpoint is: tcp://us-east-1.docker.joyent.com:2376

* * *
Success. Set your environment as follows:

    export DOCKER_CERT_PATH=/Users/localuser/.sdc/docker/jill
    export DOCKER_HOST=tcp://us-east-1.docker.joyent.com:2376
    export DOCKER_CLIENT_TIMEOUT=300
    export DOCKER_TLS_VERIFY=1
from libcloud.container.types import Provider
from libcloud.container.providers import get_driver

cls = get_driver(Provider.JOYENT)

conn = cls(host='us-east-1.docker.joyent.com', port=2376,
           key_file='key.pem', cert_file='~/.sdc/docker/admin/ca.pem')

conn.list_images()

API Docs

class libcloud.container.drivers.joyent.JoyentContainerDriver(key=None, secret=None, secure=False, host='localhost', port=2376, key_file=None, cert_file=None)[source]

Joyent Triton container driver class.

>>> from libcloud.container.providers import get_driver
>>> driver = get_driver('joyent')
>>> conn = driver(host='https://us-east-1.docker.joyent.com',
    port=2376, key_file='key.pem', cert_file='cert.pem')
create_cluster(name, location=None)

Create a container cluster

Parameters:
  • name (str) – The name of the cluster
  • location (ClusterLocation) – The location to create the cluster in
Return type:

ContainerCluster

deploy_container(name, image, parameters=None, start=True, command=None, hostname=None, user='', stdin_open=True, tty=True, mem_limit=0, ports=None, environment=None, dns=None, volumes=None, volumes_from=None, network_disabled=False, entrypoint=None, cpu_shares=None, working_dir='', domainname=None, memswap_limit=0, port_bindings=None, network_mode='bridge', labels=None)

Deploy an installed container image

For details on the additional parameters see : http://bit.ly/1PjMVKV

Parameters:
  • name (str) – The name of the new container
  • image (libcloud.container.base.ContainerImage) – The container image to deploy
  • parameters (str) – Container Image parameters
  • start (bool) – Start the container on deployment
Return type:

Container

destroy_cluster(cluster)

Delete a cluster

Returns:True if the destroy was successful, otherwise False.
Return type:bool
destroy_container(container)

Remove a container

Parameters:container (libcloud.container.base.Container) – The container to be destroyed
Returns:True if the destroy was successful, False otherwise.
Return type:bool
ex_delete_image(image)

Remove image from the filesystem

Parameters:image (libcloud.container.base.ContainerImage) – The image to remove
Return type:bool
ex_get_logs(container, stream=False)

Get container logs

If stream == True, logs will be yielded as a stream From Api Version 1.11 and above we need a GET request to get the logs Logs are in different format of those of Version 1.10 and below

Parameters:
Return type:

bool

ex_list_processes(container)

List processes running inside a container

Parameters:container (libcloud.container.base.Container) – The container to list processes for.
Return type:str
ex_rename_container(container, name)

Rename a container

Parameters:
Return type:

libcloud.container.base.Container

ex_search_images(term)

Search for an image on Docker.io. Returns a list of ContainerImage objects

>>> images = conn.ex_search_images(term='mistio')
>>> images
[<ContainerImage: id=rolikeusch/docker-mistio...>,
 <ContainerImage: id=mist/mistio, name=mist/mistio,
     driver=Docker  ...>]
param term:The search term
type term:str
rtype:list of libcloud.container.base.ContainerImage
get_cluster(id)

Get a cluster by ID

Parameters:id (str) – The ID of the cluster to get
Return type:ContainerCluster
get_container(id)

Get a container by ID

Parameters:id (str) – The ID of the container to get
Return type:libcloud.container.base.Container
install_image(path)

Install a container image from a remote path.

Parameters:path (str) – Path to the container image
Return type:libcloud.container.base.ContainerImage
list_clusters(location=None)

Get a list of potential locations to deploy clusters into

Parameters:location (ClusterLocation) – The location to search in
Return type:list of ContainerCluster
list_containers(image=None, all=True)

List the deployed container images

Parameters:
Return type:

list of libcloud.container.base.Container

list_images()

List the installed container images

Return type:list of libcloud.container.base.ContainerImage
list_locations()

Get a list of potential locations to deploy clusters into

Return type:list of ClusterLocation
restart_container(container)

Restart a container

Parameters:container (libcloud.container.base.Container) – The container to be stopped
Returns:The container refreshed with current data
Return type:libcloud.container.base.Container
start_container(container)

Start a container

Parameters:container (libcloud.container.base.Container) – The container to be started
Returns:The container refreshed with current data
Return type:libcloud.container.base.Container
stop_container(container)

Stop a container

Parameters:container (libcloud.container.base.Container) – The container to be stopped
Returns:The container refreshed with current data
Return type:libcloud.container.base.Container