mirror of https://github.com/docker/docs.git
1292 lines
47 KiB
HTML
1292 lines
47 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
|
||
|
||
<meta name="docker_version" content="1.4.1">
|
||
<meta name="docker_git_branch" content="master">
|
||
<meta name="docker_git_commit" content="3c097c2">
|
||
<meta name="docker_build_date" content="Wed Jan 28 04:30:29 UTC 2015">
|
||
|
||
<meta name="description" content="API Documentation for Docker Registry">
|
||
<meta name="keywords" content="API, Docker, index, registry, REST, documentation">
|
||
|
||
<link rel="canonical" href="/reference/api/registry_api/">
|
||
<link href="/css/bootstrap-custom.css" rel="stylesheet">
|
||
<link href="/css/main.css" rel="stylesheet">
|
||
<link href="/css/prettify-1.0.css" rel="stylesheet">
|
||
<link rel="stylesheet" type="text/css" href="/css/dockerfile_tutorial.css">
|
||
<link href="/tipuesearch/tipuesearch.css" rel="stylesheet">
|
||
<link href="/css/docs.css" rel="stylesheet">
|
||
<link rel="shortcut icon" href="/img/favicon.png">
|
||
<title>Docker Registry API - Docker Documentation</title>
|
||
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||
<!--[if lt IE 9]>
|
||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
||
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
|
||
<![endif]-->
|
||
|
||
<script type="text/javascript">
|
||
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t){var e=document.createElement("script");e.type="text/javascript";e.async=!0;e.src=("https:"===document.location.protocol?"https://":"http://")+"cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(e,n)};analytics.SNIPPET_VERSION="4.0.0";
|
||
analytics.load("IWj9D0UpZHZdZUZX9jl98PcpBFWBnBMy");
|
||
analytics.page();
|
||
}}();
|
||
</script>
|
||
|
||
</head>
|
||
<body>
|
||
|
||
<div id="topmostnav" class="topmostnav_loggedout navbar navbar-static-top public">
|
||
<div class="container">
|
||
<a href="http://www.docker.com/" title="Homepage">
|
||
<div class="brand logo"><img src="/img/nav/docker-logo-loggedout.png"> </div>
|
||
</a>
|
||
<ul class="nav">
|
||
<li class=""><a href="http://www.docker.com/whatisdocker/" title="What is Docker">What is Docker?</a></li>
|
||
<li class=""><a href="http://www.docker.com/resources/usecases/" title="Use Cases">Use Cases</a></li>
|
||
<li class=""><a href="http://www.docker.com/tryit/" title="Try It!">Try It!</a></li>
|
||
<li class="active"><a href="https://docs.docker.com" title="Install & Docs">Install & Docs</a></li>
|
||
<li><a href="https://registry.hub.docker.com" title="Browse">Browse</a></li>
|
||
</ul>
|
||
<div id="usernav" class="pull-right">
|
||
<a href="https://hub.docker.com/account/login" class="btn nav-button2" title="Lg In">Log In</a>
|
||
<a href="https://hub.docker.com/account/signup" class="btn nav-button1" title="Sign Up">Sign Up</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="topmostnav" class="topmostnav_loggedin navbar navbar-static-top">
|
||
<div class="container">
|
||
<a href="http://www.docker.com/" title="Docker Docs Home"><div class="brand logo"><img src="/img/nav/docker-logo-loggedin.png"> </div></a>
|
||
<form id="search_box_header" class="navbar-index-search pull-right" action="https://registry.hub.docker.com/search">
|
||
<span role="status" aria-live="polite" class="ui-helper-hidden-accessible"></span><input type="text" class="search-query ui-autocomplete-input" placeholder="Search..." name="q" value="" autocomplete="off">
|
||
</form>
|
||
<ul class="nav">
|
||
<li><a href="https://registry.hub.docker.com" title="Browse Repos">Browse Repos</a></li>
|
||
<li class="active"><a href="http://docs.docker.com" title="Documentation">Documentation</a></li>
|
||
<li><a href="http://www.docker.com/community/participate/" title="Community">Community</a></li>
|
||
<li><a href="http://www.docker.com/resources/help/" title="Help">Help</a></li>
|
||
</ul>
|
||
<div id="usernav" class="pull-right">
|
||
<ul class="nav user">
|
||
<li class="dropdown">
|
||
<a id="logged-in-header-username" class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||
<img class="profile" src="" alt="profile picture">
|
||
</a>
|
||
<ul class="dropdown-menu pull-right">
|
||
<li><a href="https://hub.docker.com/">View Profile</a></li>
|
||
<li><a href="https://hub.docker.com/account/settings/">Settings</a></li>
|
||
<li><a href="https://hub.docker.com/repos/">My Repositories</a></li>
|
||
<li><a href="https://hub.docker.com/plans/billing-info">Billing</a></li>
|
||
<li><a href="https://hub.docker.com/account/logout/?next=/">Log out</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="wrap">
|
||
<nav id="nav_menu" class="clearfix navbar navbar-default navbar-static-top affix" role="navigation">
|
||
<div id="docsnav">
|
||
<ul id="main-nav" class="pull-left">
|
||
|
||
|
||
<li class="dd_menu pull-left">
|
||
|
||
<a href="/">About</a>
|
||
|
||
<ul class="dd_submenu" style="max-height: 75px;">
|
||
|
||
<li >
|
||
<a href="/">Docker</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/release-notes/">Release Notes</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/introduction/understanding-docker/">Understanding Docker</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
<li class="dd_menu pull-left">
|
||
|
||
<a href="/installation/mac/">Installation</a>
|
||
|
||
<ul class="dd_submenu" style="max-height: 75px;">
|
||
|
||
<li >
|
||
<a href="/installation/mac/">Mac OS X</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/installation/ubuntulinux/">Ubuntu</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/installation/rhel/">Red Hat Enterprise Linux</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/installation/oracle/">Oracle Linux</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/installation/centos/">CentOS</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/installation/debian/">Debian</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/installation/gentoolinux/">Gentoo</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/installation/google/">Google Cloud Platform</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/installation/rackspace/">Rackspace Cloud</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/installation/amazon/">Amazon EC2</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/installation/softlayer/">IBM Softlayer</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/installation/archlinux/">Arch Linux</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/installation/frugalware/">FrugalWare</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/installation/fedora/">Fedora</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/installation/SUSE/">SUSE</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/installation/cruxlinux/">CRUX Linux</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/installation/windows/">Microsoft Windows</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/installation/binaries/">Binaries</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
<li class="dd_menu pull-left">
|
||
|
||
<a href="/userguide/">User Guide</a>
|
||
|
||
<ul class="dd_submenu" style="max-height: 75px;">
|
||
|
||
<li >
|
||
<a href="/userguide/">The Docker User Guide</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/userguide/dockerhub/">Getting Started with Docker Hub</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/userguide/dockerizing/">Dockerizing Applications</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/userguide/usingdocker/">Working with Containers</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/userguide/dockerimages/">Working with Docker Images</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/userguide/dockerlinks/">Linking containers together</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/userguide/dockervolumes/">Managing data in containers</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/userguide/dockerrepos/">Working with Docker Hub</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
<li class="dd_menu pull-left">
|
||
|
||
<a href="/docker-hub/">Docker Hub</a>
|
||
|
||
<ul class="dd_submenu" style="max-height: 75px;">
|
||
|
||
<li >
|
||
<a href="/docker-hub/">Docker Hub</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/docker-hub/accounts/">Accounts</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/docker-hub/repos/">Repositories</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/docker-hub/builds/">Automated Builds</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/docker-hub/official_repos/">Official Repo Guidelines</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
<li class="dd_menu pull-left">
|
||
|
||
<a href="/examples/nodejs_web_app/">Examples</a>
|
||
|
||
<ul class="dd_submenu" style="max-height: 75px;">
|
||
|
||
<li >
|
||
<a href="/examples/nodejs_web_app/">Dockerizing a Node.js web application</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/examples/mongodb/">Dockerizing MongoDB</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/examples/running_redis_service/">Dockerizing a Redis service</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/examples/postgresql_service/">Dockerizing a PostgreSQL service</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/examples/running_riak_service/">Dockerizing a Riak service</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/examples/running_ssh_service/">Dockerizing an SSH service</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/examples/couchdb_data_volumes/">Dockerizing a CouchDB service</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/examples/apt-cacher-ng/">Dockerizing an Apt-Cacher-ng service</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
<li class="dd_menu pull-left">
|
||
|
||
<a href="/articles/basics/">Articles</a>
|
||
|
||
<ul class="dd_submenu" style="max-height: 75px;">
|
||
|
||
<li >
|
||
<a href="/articles/basics/">Docker basics</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/articles/networking/">Advanced networking</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/articles/security/">Security</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/articles/https/">Running Docker with HTTPS</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/articles/registry_mirror/">Run a local registry mirror</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/articles/host_integration/">Automatically starting containers</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/articles/baseimages/">Creating a base image</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/articles/dockerfile_best-practices/">Best practices for writing Dockerfiles</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/articles/certificates/">Using certificates for repository client verification</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/articles/using_supervisord/">Using Supervisor</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/articles/cfengine_process_management/">Process management with CFEngine</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/articles/puppet/">Using Puppet</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/articles/chef/">Using Chef</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/articles/dsc/">Using PowerShell DSC</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/articles/ambassador_pattern_linking/">Cross-Host linking using ambassador containers</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/articles/runmetrics/">Runtime metrics</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/articles/b2d_volume_resize/">Increasing a Boot2Docker volume</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/articles/systemd/">Controlling and configuring Docker using Systemd</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
<li class="dd_menu pull-left active">
|
||
|
||
<a href="/reference/commandline/cli/">Reference</a>
|
||
|
||
<ul class="dd_submenu" style="max-height: 75px;">
|
||
|
||
<li >
|
||
<a href="/reference/commandline/cli/">Command line</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/reference/builder/">Dockerfile</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/faq/">FAQ</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/reference/run/">Run Reference</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/reference/api/docker-io_api/">Docker Hub API</a>
|
||
</li>
|
||
|
||
<li class="active">
|
||
<a href="/reference/api/registry_api/">Docker Registry API</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/reference/api/registry_api_client_libraries/">Docker Registry API Client Libraries</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/reference/api/hub_registry_spec/">Docker Hub and Registry Spec</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/reference/api/docker_remote_api/">Docker Remote API</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/reference/api/docker_remote_api_v1.16/">Docker Remote API v1.16</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/reference/api/docker_remote_api_v1.15/">Docker Remote API v1.15</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/reference/api/docker_remote_api_v1.14/">Docker Remote API v1.14</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/reference/api/docker_remote_api_v1.13/">Docker Remote API v1.13</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/reference/api/docker_remote_api_v1.12/">Docker Remote API v1.12</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/reference/api/docker_remote_api_v1.11/">Docker Remote API v1.11</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/reference/api/remote_api_client_libraries/">Docker Remote API Client Libraries</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/reference/api/docker_io_accounts_api/">Docker Hub Accounts API</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
|
||
<li class="dd_menu pull-left">
|
||
|
||
<a href="/contributing/contributing/">Contribute</a>
|
||
|
||
<ul class="dd_submenu" style="max-height: 75px;">
|
||
|
||
<li >
|
||
<a href="/contributing/contributing/">Contributing</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/contributing/devenvironment/">Development environment</a>
|
||
</li>
|
||
|
||
<li >
|
||
<a href="/contributing/docs_style-guide/">Documentation style guide</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
<form id="nav_search" class="pull-right" action="/jsearch/">
|
||
<span role="status" aria-live="polite" class="ui-helper-hidden-accessible"></span>
|
||
<input name="q" id="tipue_search_input" type="text" class="search_input search-query ui-autocomplete-input" placeholder="Search the Docs" autocomplete="off">
|
||
</form>
|
||
</div>
|
||
</nav>
|
||
<div id="content" class="container">
|
||
<div class="row">
|
||
|
||
<div class="span3" id="leftnav">
|
||
<div id="toc_table">
|
||
<ul class="nav nav-tabs nav-stacked">
|
||
|
||
|
||
<li class=""><a href="#introduction">Introduction</a></li>
|
||
|
||
|
||
|
||
|
||
<li class=""><a href="#images">Images</a></li>
|
||
|
||
<h3><a href="#get-image-layer">Get image layer</a></h3>
|
||
|
||
<h3><a href="#put-image-layer">Put image layer</a></h3>
|
||
|
||
|
||
<li class=""><a href="#image">Image</a></li>
|
||
|
||
<h3><a href="#put-image-layer_1">Put image layer</a></h3>
|
||
|
||
<h3><a href="#get-image-layer_1">Get image layer</a></h3>
|
||
|
||
|
||
<li class=""><a href="#ancestry">Ancestry</a></li>
|
||
|
||
<h3><a href="#get-image-ancestry">Get image ancestry</a></h3>
|
||
|
||
|
||
<li class=""><a href="#tags">Tags</a></li>
|
||
|
||
<h3><a href="#list-repository-tags">List repository tags</a></h3>
|
||
|
||
<h3><a href="#get-image-id-for-a-particular-tag">Get image id for a particular tag</a></h3>
|
||
|
||
<h3><a href="#delete-a-repository-tag">Delete a repository tag</a></h3>
|
||
|
||
<h3><a href="#set-a-tag-for-a-specified-image-id">Set a tag for a specified image id</a></h3>
|
||
|
||
|
||
<li class=""><a href="#repositories">Repositories</a></li>
|
||
|
||
<h3><a href="#delete-a-repository">Delete a repository</a></h3>
|
||
|
||
|
||
<li class=""><a href="#search">Search</a></li>
|
||
|
||
|
||
<li class=""><a href="#status">Status</a></li>
|
||
|
||
<h3><a href="#status-check-for-registry">Status check for registry</a></h3>
|
||
|
||
|
||
<li class=""><a href="#authorization">Authorization</a></li>
|
||
|
||
|
||
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="span9 content-body">
|
||
|
||
|
||
|
||
<div id="versionnav" class="span3 pull-right invisible">
|
||
<ul class="nav version pull-right">
|
||
<li class="dropdown">
|
||
<a id="document-version-number" class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||
Version v1.4
|
||
</a>
|
||
<ul id="documentation-version-list" class="dropdown-menu pull-right">
|
||
|
||
<li role="presentation" class="divider"></li>
|
||
<li> <a class="home-link3 tertiary-nav" href="https://github.com/docker/docker/blob/master/docs/sources/reference/api/registry_api.md" >Edit on GitHub</a></li>
|
||
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<h1 id="docker-registry-api">Docker Registry API</h1>
|
||
<h2 id="introduction">Introduction</h2>
|
||
<ul>
|
||
<li>This is the REST API for the Docker Registry</li>
|
||
<li>It stores the images and the graph for a set of repositories</li>
|
||
<li>It does not have user accounts data</li>
|
||
<li>It has no notion of user accounts or authorization</li>
|
||
<li>It delegates authentication and authorization to the Index Auth
|
||
service using tokens</li>
|
||
<li>It supports different storage backends (S3, cloud files, local FS)</li>
|
||
<li>It doesn't have a local database</li>
|
||
<li>The registry is open source: <a href="https://github.com/docker/docker-registry">Docker Registry</a></li>
|
||
</ul>
|
||
<p>We expect that there will be multiple registries out there. To help to
|
||
grasp the context, here are some examples of registries:</p>
|
||
<ul>
|
||
<li><strong>sponsor registry</strong>: such a registry is provided by a third-party
|
||
hosting infrastructure as a convenience for their customers and the
|
||
Docker community as a whole. Its costs are supported by the third
|
||
party, but the management and operation of the registry are
|
||
supported by Docker. It features read/write access, and delegates
|
||
authentication and authorization to the Index.</li>
|
||
<li><strong>mirror registry</strong>: such a registry is provided by a third-party
|
||
hosting infrastructure but is targeted at their customers only. Some
|
||
mechanism (unspecified to date) ensures that public images are
|
||
pulled from a sponsor registry to the mirror registry, to make sure
|
||
that the customers of the third-party provider can <code>docker pull</code>
|
||
those images locally.</li>
|
||
<li><strong>vendor registry</strong>: such a registry is provided by a software
|
||
vendor, who wants to distribute Docker images. It would be operated
|
||
and managed by the vendor. Only users authorized by the vendor would
|
||
be able to get write access. Some images would be public (accessible
|
||
for anyone), others private (accessible only for authorized users).
|
||
Authentication and authorization would be delegated to the Index.
|
||
The goal of vendor registries is to let someone do <code>docker pull
|
||
basho/riak1.3</code> and automatically push from the vendor registry
|
||
(instead of a sponsor registry); i.e., get all the convenience of a
|
||
sponsor registry, while retaining control on the asset distribution.</li>
|
||
<li><strong>private registry</strong>: such a registry is located behind a firewall,
|
||
or protected by an additional security layer (HTTP authorization,
|
||
SSL client-side certificates, IP address authorization...). The
|
||
registry is operated by a private entity, outside of Docker's
|
||
control. It can optionally delegate additional authorization to the
|
||
Index, but it is not mandatory.</li>
|
||
</ul>
|
||
<blockquote>
|
||
<p><strong>Note</strong>:
|
||
Mirror registries and private registries which do not use the Index
|
||
don't even need to run the registry code. They can be implemented by any
|
||
kind of transport implementing HTTP GET and PUT. Read-only registries
|
||
can be powered by a simple static HTTPS server.</p>
|
||
<p><strong>Note</strong>:
|
||
The latter implies that while HTTP is the protocol of choice for a registry,
|
||
multiple schemes are possible (and in some cases, trivial):</p>
|
||
<ul>
|
||
<li>HTTP with GET (and PUT for read-write registries);</li>
|
||
<li>local mount point;</li>
|
||
<li>remote Docker addressed through SSH.</li>
|
||
</ul>
|
||
</blockquote>
|
||
<p>The latter would only require two new commands in Docker, e.g.,
|
||
<code>registryget</code> and <code>registryput</code>, wrapping access to the local filesystem
|
||
(and optionally doing consistency checks). Authentication and authorization
|
||
are then delegated to SSH (e.g., with public keys).</p>
|
||
<blockquote>
|
||
<p><strong>Note</strong>:
|
||
Private registry servers that expose an HTTP endpoint need to be secured with
|
||
TLS (preferably TLSv1.2, but at least TLSv1.0). Make sure to put the CA
|
||
certificate at /etc/docker/certs.d/my.registry.com:5000/ca.crt on the Docker
|
||
host, so that the daemon can securely access the private registry.
|
||
Support for SSLv3 and lower is not available due to security issues.</p>
|
||
</blockquote>
|
||
<p>The default namespace for a private repository is <code>library</code>.</p>
|
||
<h1 id="endpoints">Endpoints</h1>
|
||
<h2 id="images">Images</h2>
|
||
<h3 id="get-image-layer">Get image layer</h3>
|
||
<p><code>GET /v1/images/(image_id)/layer</code></p>
|
||
<p>Get image layer for a given <code>image_id</code></p>
|
||
<p><strong>Example Request</strong>:</p>
|
||
<pre class="prettyprint well"><code> GET /v1/images/088b4505aa3adc3d35e79c031fa126b403200f02f51920fbd9b7c503e87c7a2c/layer HTTP/1.1
|
||
Host: registry-1.docker.io
|
||
Accept: application/json
|
||
Content-Type: application/json
|
||
Authorization: Token signature=123abc,repository="foo/bar",access=read
|
||
</code></pre>
|
||
<p>Parameters:</p>
|
||
<ul>
|
||
<li><strong>image_id</strong> – the id for the layer you want to get</li>
|
||
</ul>
|
||
<p><strong>Example Response</strong>:</p>
|
||
<pre class="prettyprint well"><code> HTTP/1.1 200
|
||
Vary: Accept
|
||
X-Docker-Registry-Version: 0.6.0
|
||
Cookie: (Cookie provided by the Registry)
|
||
|
||
{layer binary data stream}
|
||
</code></pre>
|
||
<p>Status Codes:</p>
|
||
<ul>
|
||
<li><strong>200</strong> – OK</li>
|
||
<li><strong>401</strong> – Requires authorization</li>
|
||
<li><strong>404</strong> – Image not found</li>
|
||
</ul>
|
||
<h3 id="put-image-layer">Put image layer</h3>
|
||
<p><code>PUT /v1/images/(image_id)/layer</code></p>
|
||
<p>Put image layer for a given <code>image_id</code></p>
|
||
<p><strong>Example Request</strong>:</p>
|
||
<pre class="prettyprint well"><code> PUT /v1/images/088b4505aa3adc3d35e79c031fa126b403200f02f51920fbd9b7c503e87c7a2c/layer HTTP/1.1
|
||
Host: registry-1.docker.io
|
||
Transfer-Encoding: chunked
|
||
Authorization: Token signature=123abc,repository="foo/bar",access=write
|
||
|
||
{layer binary data stream}
|
||
</code></pre>
|
||
<p>Parameters:</p>
|
||
<ul>
|
||
<li><strong>image_id</strong> – the id for the layer you want to get</li>
|
||
</ul>
|
||
<p><strong>Example Response</strong>:</p>
|
||
<pre class="prettyprint well"><code> HTTP/1.1 200
|
||
Vary: Accept
|
||
Content-Type: application/json
|
||
X-Docker-Registry-Version: 0.6.0
|
||
|
||
""
|
||
</code></pre>
|
||
<p>Status Codes:</p>
|
||
<ul>
|
||
<li><strong>200</strong> – OK</li>
|
||
<li><strong>401</strong> – Requires authorization</li>
|
||
<li><strong>404</strong> – Image not found</li>
|
||
</ul>
|
||
<h2 id="image">Image</h2>
|
||
<h3 id="put-image-layer_1">Put image layer</h3>
|
||
<p><code>PUT /v1/images/(image_id)/json</code></p>
|
||
<p>Put image for a given <code>image_id</code></p>
|
||
<p><strong>Example Request</strong>:</p>
|
||
<pre class="prettyprint well"><code> PUT /v1/images/088b4505aa3adc3d35e79c031fa126b403200f02f51920fbd9b7c503e87c7a2c/json HTTP/1.1
|
||
Host: registry-1.docker.io
|
||
Accept: application/json
|
||
Content-Type: application/json
|
||
Cookie: (Cookie provided by the Registry)
|
||
|
||
{
|
||
id: "088b4505aa3adc3d35e79c031fa126b403200f02f51920fbd9b7c503e87c7a2c",
|
||
parent: "aeee6396d62273d180a49c96c62e45438d87c7da4a5cf5d2be6bee4e21bc226f",
|
||
created: "2013-04-30T17:46:10.843673+03:00",
|
||
container: "8305672a76cc5e3d168f97221106ced35a76ec7ddbb03209b0f0d96bf74f6ef7",
|
||
container_config: {
|
||
Hostname: "host-test",
|
||
User: "",
|
||
Memory: 0,
|
||
MemorySwap: 0,
|
||
AttachStdin: false,
|
||
AttachStdout: false,
|
||
AttachStderr: false,
|
||
PortSpecs: null,
|
||
Tty: false,
|
||
OpenStdin: false,
|
||
StdinOnce: false,
|
||
Env: null,
|
||
Cmd: [
|
||
"/bin/bash",
|
||
"-c",
|
||
"apt-get -q -yy -f install libevent-dev"
|
||
],
|
||
Dns: null,
|
||
Image: "imagename/blah",
|
||
Volumes: { },
|
||
VolumesFrom: ""
|
||
},
|
||
docker_version: "0.1.7"
|
||
}
|
||
</code></pre>
|
||
<p>Parameters:</p>
|
||
<ul>
|
||
<li><strong>image_id</strong> – the id for the layer you want to get</li>
|
||
</ul>
|
||
<p><strong>Example Response</strong>:</p>
|
||
<pre class="prettyprint well"><code> HTTP/1.1 200
|
||
Vary: Accept
|
||
Content-Type: application/json
|
||
X-Docker-Registry-Version: 0.6.0
|
||
|
||
""
|
||
</code></pre>
|
||
<p>Status Codes:</p>
|
||
<ul>
|
||
<li><strong>200</strong> – OK</li>
|
||
<li><strong>401</strong> – Requires authorization</li>
|
||
</ul>
|
||
<h3 id="get-image-layer_1">Get image layer</h3>
|
||
<p><code>GET /v1/images/(image_id)/json</code></p>
|
||
<p>Get image for a given <code>image_id</code></p>
|
||
<p><strong>Example Request</strong>:</p>
|
||
<pre class="prettyprint well"><code> GET /v1/images/088b4505aa3adc3d35e79c031fa126b403200f02f51920fbd9b7c503e87c7a2c/json HTTP/1.1
|
||
Host: registry-1.docker.io
|
||
Accept: application/json
|
||
Content-Type: application/json
|
||
Cookie: (Cookie provided by the Registry)
|
||
</code></pre>
|
||
<p>Parameters:</p>
|
||
<ul>
|
||
<li><strong>image_id</strong> – the id for the layer you want to get</li>
|
||
</ul>
|
||
<p><strong>Example Response</strong>:</p>
|
||
<pre class="prettyprint well"><code> HTTP/1.1 200
|
||
Vary: Accept
|
||
Content-Type: application/json
|
||
X-Docker-Registry-Version: 0.6.0
|
||
X-Docker-Size: 456789
|
||
X-Docker-Checksum: b486531f9a779a0c17e3ed29dae8f12c4f9e89cc6f0bc3c38722009fe6857087
|
||
|
||
{
|
||
id: "088b4505aa3adc3d35e79c031fa126b403200f02f51920fbd9b7c503e87c7a2c",
|
||
parent: "aeee6396d62273d180a49c96c62e45438d87c7da4a5cf5d2be6bee4e21bc226f",
|
||
created: "2013-04-30T17:46:10.843673+03:00",
|
||
container: "8305672a76cc5e3d168f97221106ced35a76ec7ddbb03209b0f0d96bf74f6ef7",
|
||
container_config: {
|
||
Hostname: "host-test",
|
||
User: "",
|
||
Memory: 0,
|
||
MemorySwap: 0,
|
||
AttachStdin: false,
|
||
AttachStdout: false,
|
||
AttachStderr: false,
|
||
PortSpecs: null,
|
||
Tty: false,
|
||
OpenStdin: false,
|
||
StdinOnce: false,
|
||
Env: null,
|
||
Cmd: [
|
||
"/bin/bash",
|
||
"-c",
|
||
"apt-get -q -yy -f install libevent-dev"
|
||
],
|
||
Dns: null,
|
||
Image: "imagename/blah",
|
||
Volumes: { },
|
||
VolumesFrom: ""
|
||
},
|
||
docker_version: "0.1.7"
|
||
}
|
||
</code></pre>
|
||
<p>Status Codes:</p>
|
||
<ul>
|
||
<li><strong>200</strong> – OK</li>
|
||
<li><strong>401</strong> – Requires authorization</li>
|
||
<li><strong>404</strong> – Image not found</li>
|
||
</ul>
|
||
<h2 id="ancestry">Ancestry</h2>
|
||
<h3 id="get-image-ancestry">Get image ancestry</h3>
|
||
<p><code>GET /v1/images/(image_id)/ancestry</code></p>
|
||
<p>Get ancestry for an image given an <code>image_id</code></p>
|
||
<p><strong>Example Request</strong>:</p>
|
||
<pre class="prettyprint well"><code> GET /v1/images/088b4505aa3adc3d35e79c031fa126b403200f02f51920fbd9b7c503e87c7a2c/ancestry HTTP/1.1
|
||
Host: registry-1.docker.io
|
||
Accept: application/json
|
||
Content-Type: application/json
|
||
Cookie: (Cookie provided by the Registry)
|
||
</code></pre>
|
||
<p>Parameters:</p>
|
||
<ul>
|
||
<li><strong>image_id</strong> – the id for the layer you want to get</li>
|
||
</ul>
|
||
<p><strong>Example Response</strong>:</p>
|
||
<pre class="prettyprint well"><code> HTTP/1.1 200
|
||
Vary: Accept
|
||
Content-Type: application/json
|
||
X-Docker-Registry-Version: 0.6.0
|
||
|
||
["088b4502f51920fbd9b7c503e87c7a2c05aa3adc3d35e79c031fa126b403200f",
|
||
"aeee63968d87c7da4a5cf5d2be6bee4e21bc226fd62273d180a49c96c62e4543",
|
||
"bfa4c5326bc764280b0863b46a4b20d940bc1897ef9c1dfec060604bdc383280",
|
||
"6ab5893c6927c15a15665191f2c6cf751f5056d8b95ceee32e43c5e8a3648544"]
|
||
</code></pre>
|
||
<p>Status Codes:</p>
|
||
<ul>
|
||
<li><strong>200</strong> – OK</li>
|
||
<li><strong>401</strong> – Requires authorization</li>
|
||
<li><strong>404</strong> – Image not found</li>
|
||
</ul>
|
||
<h2 id="tags">Tags</h2>
|
||
<h3 id="list-repository-tags">List repository tags</h3>
|
||
<p><code>GET /v1/repositories/(namespace)/(repository)/tags</code></p>
|
||
<p>Get all of the tags for the given repo.</p>
|
||
<p><strong>Example Request</strong>:</p>
|
||
<pre class="prettyprint well"><code> GET /v1/repositories/reynholm/help-system-server/tags HTTP/1.1
|
||
Host: registry-1.docker.io
|
||
Accept: application/json
|
||
Content-Type: application/json
|
||
X-Docker-Registry-Version: 0.6.0
|
||
Cookie: (Cookie provided by the Registry)
|
||
</code></pre>
|
||
<p>Parameters:</p>
|
||
<ul>
|
||
<li><strong>namespace</strong> – namespace for the repo</li>
|
||
<li><strong>repository</strong> – name for the repo</li>
|
||
</ul>
|
||
<p><strong>Example Response</strong>:</p>
|
||
<pre class="prettyprint well"><code> HTTP/1.1 200
|
||
Vary: Accept
|
||
Content-Type: application/json
|
||
X-Docker-Registry-Version: 0.6.0
|
||
|
||
{
|
||
"latest": "9e89cc6f0bc3c38722009fe6857087b486531f9a779a0c17e3ed29dae8f12c4f",
|
||
"0.1.1": "b486531f9a779a0c17e3ed29dae8f12c4f9e89cc6f0bc3c38722009fe6857087"
|
||
}
|
||
</code></pre>
|
||
<p>Status Codes:</p>
|
||
<ul>
|
||
<li><strong>200</strong> – OK</li>
|
||
<li><strong>401</strong> – Requires authorization</li>
|
||
<li><strong>404</strong> – Repository not found</li>
|
||
</ul>
|
||
<h3 id="get-image-id-for-a-particular-tag">Get image id for a particular tag</h3>
|
||
<p><code>GET /v1/repositories/(namespace)/(repository)/tags/(tag*)</code></p>
|
||
<p>Get a tag for the given repo.</p>
|
||
<p><strong>Example Request</strong>:</p>
|
||
<pre class="prettyprint well"><code> GET /v1/repositories/reynholm/help-system-server/tags/latest HTTP/1.1
|
||
Host: registry-1.docker.io
|
||
Accept: application/json
|
||
Content-Type: application/json
|
||
X-Docker-Registry-Version: 0.6.0
|
||
Cookie: (Cookie provided by the Registry)
|
||
</code></pre>
|
||
<p>Parameters:</p>
|
||
<ul>
|
||
<li><strong>namespace</strong> – namespace for the repo</li>
|
||
<li><strong>repository</strong> – name for the repo</li>
|
||
<li><strong>tag</strong> – name of tag you want to get</li>
|
||
</ul>
|
||
<p><strong>Example Response</strong>:</p>
|
||
<pre class="prettyprint well"><code> HTTP/1.1 200
|
||
Vary: Accept
|
||
Content-Type: application/json
|
||
X-Docker-Registry-Version: 0.6.0
|
||
|
||
"9e89cc6f0bc3c38722009fe6857087b486531f9a779a0c17e3ed29dae8f12c4f"
|
||
</code></pre>
|
||
<p>Status Codes:</p>
|
||
<ul>
|
||
<li><strong>200</strong> – OK</li>
|
||
<li><strong>401</strong> – Requires authorization</li>
|
||
<li><strong>404</strong> – Tag not found</li>
|
||
</ul>
|
||
<h3 id="delete-a-repository-tag">Delete a repository tag</h3>
|
||
<p><code>DELETE /v1/repositories/(namespace)/(repository)/tags/(tag*)</code></p>
|
||
<p>Delete the tag for the repo</p>
|
||
<p><strong>Example Request</strong>:</p>
|
||
<pre class="prettyprint well"><code> DELETE /v1/repositories/reynholm/help-system-server/tags/latest HTTP/1.1
|
||
Host: registry-1.docker.io
|
||
Accept: application/json
|
||
Content-Type: application/json
|
||
Cookie: (Cookie provided by the Registry)
|
||
</code></pre>
|
||
<p>Parameters:</p>
|
||
<ul>
|
||
<li><strong>namespace</strong> – namespace for the repo</li>
|
||
<li><strong>repository</strong> – name for the repo</li>
|
||
<li><strong>tag</strong> – name of tag you want to delete</li>
|
||
</ul>
|
||
<p><strong>Example Response</strong>:</p>
|
||
<pre class="prettyprint well"><code> HTTP/1.1 200
|
||
Vary: Accept
|
||
Content-Type: application/json
|
||
X-Docker-Registry-Version: 0.6.0
|
||
|
||
""
|
||
</code></pre>
|
||
<p>Status Codes:</p>
|
||
<ul>
|
||
<li><strong>200</strong> – OK</li>
|
||
<li><strong>401</strong> – Requires authorization</li>
|
||
<li><strong>404</strong> – Tag not found</li>
|
||
</ul>
|
||
<h3 id="set-a-tag-for-a-specified-image-id">Set a tag for a specified image id</h3>
|
||
<p><code>PUT /v1/repositories/(namespace)/(repository)/tags/(tag*)</code></p>
|
||
<p>Put a tag for the given repo.</p>
|
||
<p><strong>Example Request</strong>:</p>
|
||
<pre class="prettyprint well"><code> PUT /v1/repositories/reynholm/help-system-server/tags/latest HTTP/1.1
|
||
Host: registry-1.docker.io
|
||
Accept: application/json
|
||
Content-Type: application/json
|
||
Cookie: (Cookie provided by the Registry)
|
||
|
||
"9e89cc6f0bc3c38722009fe6857087b486531f9a779a0c17e3ed29dae8f12c4f"
|
||
</code></pre>
|
||
<p>Parameters:</p>
|
||
<ul>
|
||
<li><strong>namespace</strong> – namespace for the repo</li>
|
||
<li><strong>repository</strong> – name for the repo</li>
|
||
<li><strong>tag</strong> – name of tag you want to add</li>
|
||
</ul>
|
||
<p><strong>Example Response</strong>:</p>
|
||
<pre class="prettyprint well"><code> HTTP/1.1 200
|
||
Vary: Accept
|
||
Content-Type: application/json
|
||
X-Docker-Registry-Version: 0.6.0
|
||
|
||
""
|
||
</code></pre>
|
||
<p>Status Codes:</p>
|
||
<ul>
|
||
<li><strong>200</strong> – OK</li>
|
||
<li><strong>400</strong> – Invalid data</li>
|
||
<li><strong>401</strong> – Requires authorization</li>
|
||
<li><strong>404</strong> – Image not found</li>
|
||
</ul>
|
||
<h2 id="repositories">Repositories</h2>
|
||
<h3 id="delete-a-repository">Delete a repository</h3>
|
||
<p><code>DELETE /v1/repositories/(namespace)/(repository)/</code></p>
|
||
<p>Delete a repository</p>
|
||
<p><strong>Example Request</strong>:</p>
|
||
<pre class="prettyprint well"><code> DELETE /v1/repositories/reynholm/help-system-server/ HTTP/1.1
|
||
Host: registry-1.docker.io
|
||
Accept: application/json
|
||
Content-Type: application/json
|
||
Cookie: (Cookie provided by the Registry)
|
||
|
||
""
|
||
</code></pre>
|
||
<p>Parameters:</p>
|
||
<ul>
|
||
<li><strong>namespace</strong> – namespace for the repo</li>
|
||
<li><strong>repository</strong> – name for the repo</li>
|
||
</ul>
|
||
<p><strong>Example Response</strong>:</p>
|
||
<pre class="prettyprint well"><code> HTTP/1.1 200
|
||
Vary: Accept
|
||
Content-Type: application/json
|
||
X-Docker-Registry-Version: 0.6.0
|
||
|
||
""
|
||
</code></pre>
|
||
<p>Status Codes:</p>
|
||
<ul>
|
||
<li><strong>200</strong> – OK</li>
|
||
<li><strong>401</strong> – Requires authorization</li>
|
||
<li><strong>404</strong> – Repository not found</li>
|
||
</ul>
|
||
<h2 id="search">Search</h2>
|
||
<p>If you need to search the index, this is the endpoint you would use.</p>
|
||
<p><code>GET /v1/search</code></p>
|
||
<p>Search the Index given a search term. It accepts</p>
|
||
<pre class="prettyprint well"><code>[GET](http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3)
|
||
only.
|
||
</code></pre>
|
||
<p><strong>Example request</strong>:</p>
|
||
<pre class="prettyprint well"><code> GET /v1/search?q=search_term&page=1&n=25 HTTP/1.1
|
||
Host: index.docker.io
|
||
Accept: application/json
|
||
</code></pre>
|
||
<p>Query Parameters:</p>
|
||
<ul>
|
||
<li><strong>q</strong> – what you want to search for</li>
|
||
<li><strong>n</strong> - number of results you want returned per page (default: 25, min:1, max:100)</li>
|
||
<li><strong>page</strong> - page number of results</li>
|
||
</ul>
|
||
<p><strong>Example response</strong>:</p>
|
||
<pre class="prettyprint well"><code> HTTP/1.1 200 OK
|
||
Vary: Accept
|
||
Content-Type: application/json
|
||
|
||
{"num_pages": 1,
|
||
"num_results": 3,
|
||
"results" : [
|
||
{"name": "ubuntu", "description": "An ubuntu image..."},
|
||
{"name": "centos", "description": "A centos image..."},
|
||
{"name": "fedora", "description": "A fedora image..."}
|
||
],
|
||
"page_size": 25,
|
||
"query":"search_term",
|
||
"page": 1
|
||
}
|
||
</code></pre>
|
||
<p>Response Items:
|
||
- <strong>num_pages</strong> - Total number of pages returned by query
|
||
- <strong>num_results</strong> - Total number of results returned by query
|
||
- <strong>results</strong> - List of results for the current page
|
||
- <strong>page_size</strong> - How many results returned per page
|
||
- <strong>query</strong> - Your search term
|
||
- <strong>page</strong> - Current page number</p>
|
||
<p>Status Codes:</p>
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
<h2 id="status">Status</h2>
|
||
<h3 id="status-check-for-registry">Status check for registry</h3>
|
||
<p><code>GET /v1/_ping</code></p>
|
||
<p>Check status of the registry. This endpoint is also used to
|
||
determine if the registry supports SSL.</p>
|
||
<p><strong>Example Request</strong>:</p>
|
||
<pre class="prettyprint well"><code> GET /v1/_ping HTTP/1.1
|
||
Host: registry-1.docker.io
|
||
Accept: application/json
|
||
Content-Type: application/json
|
||
|
||
""
|
||
</code></pre>
|
||
<p><strong>Example Response</strong>:</p>
|
||
<pre class="prettyprint well"><code> HTTP/1.1 200
|
||
Vary: Accept
|
||
Content-Type: application/json
|
||
X-Docker-Registry-Version: 0.6.0
|
||
|
||
""
|
||
</code></pre>
|
||
<p>Status Codes:</p>
|
||
<ul>
|
||
<li><strong>200</strong> – OK</li>
|
||
</ul>
|
||
<h2 id="authorization">Authorization</h2>
|
||
<p>This is where we describe the authorization process, including the
|
||
tokens and cookies.</p>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="push-footer"></div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<div id="footer-container" class="container">
|
||
<div id="footer" class="grey-body">
|
||
<div class="row">
|
||
<div class="span2">
|
||
<span class="footer-title">Community</span>
|
||
<ul class="unstyled">
|
||
<li><a class="primary-button" href="https://www.docker.com/community/events/">Events</a></li>
|
||
<li><a class="primary-button" href="http://posts.docker.com">Friends' Posts</a></li>
|
||
<li><a class="primary-button" href="https://www.docker.com/community/meetups/">Meetups</a></li>
|
||
<li><a class="primary-button" href="https://www.docker.com/community/governance/">Governance</a></li>
|
||
<li><a class="primary-button" href="http://forums.docker.com">Forums</a></li>
|
||
<li><a class="primary-button" href="http://botbot.me/freenode/docker">IRC</a></li>
|
||
<li><a class="primary-button" href="https://github.com/docker/docker">GitHub</a></li>
|
||
<li><a class="primary-button" href="http://stackoverflow.com/search?q=docker">Stackoverflow</a></li>
|
||
<li><a class="primary-button" href="http://www.cafepress.com/docker">Swag</a></li>
|
||
</ul>
|
||
</div>
|
||
<div class="span2">
|
||
<span class="footer-title">Enterprise</span>
|
||
<ul class="unstyled">
|
||
<li><a class="primary-button" href="https://www.docker.com/enterprise/support/">Support</a></li>
|
||
<li><a class="primary-button" href="https://www.docker.com/enterprise/education/">Education</a></li>
|
||
<li><a class="primary-button" href="https://www.docker.com/enterprise/services/">Services</a></li>
|
||
</ul>
|
||
<span class="footer-title">Partner Solutions</span>
|
||
<ul class="unstyled">
|
||
<li><a class="primary-button" href="https://www.docker.com/partners/find/">Find a Partner</a></li>
|
||
<li><a class="primary-button" href="https://www.docker.com/partners/program/">Partner Program</a></li>
|
||
<li><a class="primary-button" href="https://www.docker.com/partners/learn/">Learn More</a></li>
|
||
</ul>
|
||
</div>
|
||
<div class="span2">
|
||
<span class="footer-title">Resources</span>
|
||
<ul class="unstyled">
|
||
<li><a class="primary-button" href="https://docs.docker.com">Documentation</a></li>
|
||
<li><a class="primary-button" href="https://www.docker.com/resources/help/">Help</a></li>
|
||
<li><a class="primary-button" href="https://www.docker.com/resources/usecases/">Use Cases</a></li>
|
||
<li><a class="primary-button" href="http://www.docker.com/tryit/">Online Tutorial</a></li>
|
||
<li><a class="primary-button" href="https://www.docker.com/resources/howtobuy/">How To Buy</a></li>
|
||
<li><a class="primary-button" href="http://status.docker.com">Status</a></li>
|
||
<li><a class="primary-button" href="https://www.docker.com/resources/security/">Security</a></li>
|
||
</ul>
|
||
</div>
|
||
<div class="span2">
|
||
<span class="footer-title">Company</span>
|
||
<ul class="unstyled">
|
||
<li><a class="primary-button" href="https://www.docker.com/company/aboutus/">About Us</a></li>
|
||
<li><a class="primary-button" href="https://www.docker.com/company/team/">Team</a></li>
|
||
<li><a class="primary-button" href="https://www.docker.com/company/news/">News</a></li>
|
||
<li><a class="primary-button" href="https://www.docker.com/company/press/">Press</a></li>
|
||
<li><a class="primary-button" href="https://www.docker.com/company/careers/">Careers</a></li>
|
||
<li><a class="primary-button" href="https://www.docker.com/company/contact/">Contact</a></li>
|
||
</ul>
|
||
</div>
|
||
<div class="span3">
|
||
<span class="footer-title">Connect</span>
|
||
<div class="search">
|
||
<span>Subscribe to our newsletter</span>
|
||
<form action="https://www.docker.com/subscribe_newsletter/" method="post">
|
||
<input type='hidden' name='csrfmiddlewaretoken' value='aWL78QXQkY8DSKNYh6cl08p5eTLl7sOa' />
|
||
<tr><th><label for="id_email">Email:</label></th><td><input class="form-control" id="id_email" name="email" placeholder="Enter your email" type="text" /></td></tr>
|
||
|
||
<button type="submit"><i class="icon-arrow-right"></i> </button>
|
||
</form>
|
||
</div>
|
||
<ul class="unstyled social">
|
||
<li><a title="Docker on Twitter" class="primary-button blog" href="http://blog.docker.com">Blog</a></li>
|
||
<li><a title="Docker on Twitter" class="primary-button twitter" href="http://twitter.com/docker">Twitter</a></li>
|
||
<li><a title="Docker on Google+" class="primary-button googleplus" href="https://plus.google.com/u/0/communities/108146856671494713993">Google+</a></li>
|
||
<li><a title="Docker on Facebook" class="primary-button facebook" href="https://www.facebook.com/docker.run">Facebook</a></li>
|
||
<li><a title="Docker on Youtube" class="primary-button youtube" href="http://www.youtube.com/user/dockerrun">YouTube</a></li>
|
||
</ul>
|
||
<ul class="unstyled social">
|
||
<li><a title="Docker on SlideShare" class="primary-button slideshare" href="http://www.slideshare.net/Docker">Slideshare</a></li>
|
||
<li>
|
||
<a title="Docker on LinkedIn" class="primary-button" href="https://www.linkedin.com/company/docker">
|
||
<span class="linkedin"></span>
|
||
LinkedIn
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a title="Docker on GitHub" class="primary-button" href="https://github.com/docker/">
|
||
<span class="github"></span>
|
||
GitHub
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a title="Docker on Reddit" class="primary-button" href="http://www.reddit.com/r/docker">
|
||
<span class="reddit"></span>
|
||
Reddit
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a title="Docker on AngelList" class="primary-button" href="https://angel.co/docker-inc-1">
|
||
<span class="angellist"></span>
|
||
AngelList
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="row clearfix">
|
||
<div class="span6 pagination-right copyright">
|
||
<span>© 2014-2015 Docker, Inc.</span>
|
||
</div>
|
||
<div class="span6 pagination-left copyright">
|
||
<a href="http://www.docker.com/legal/terms_of_service">Terms</a> ·
|
||
<a href="http://www.docker.com/legal/privacy_policy">Privacy</a> ·
|
||
<a href="http://www.docker.com/legal/trademark_guidelines">Trademarks</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script src="/js/jquery-1.10.2.min.js"></script>
|
||
<script src="/js/jquery.cookie.js" ></script>
|
||
<script src="/js/jquery-scrolltofixed-min.js"></script>
|
||
<script src="/js/bootstrap-3.0.3.min.js"></script>
|
||
<script src="/js/prettify-1.0.min.js"></script>
|
||
<script src="/js/dockerfile_tutorial.js"></script>
|
||
<script src="/js/dockerfile_tutorial_level.js"></script>
|
||
<script src="/js/base.js"></script>
|
||
<script src="/tipuesearch/tipuesearch_set.js"></script>
|
||
<script src="/tipuesearch/tipuesearch.min.js"></script>
|
||
<script type="text/javascript">
|
||
piAId = '45082';
|
||
piCId = '1482';
|
||
|
||
(function() {
|
||
function async_load(){
|
||
var s = document.createElement('script'); s.type = 'text/javascript';
|
||
s.src = ('https:' == document.location.protocol ? 'https://pi' : 'http://cdn') + '.pardot.com/pd.js';
|
||
var c = document.getElementsByTagName('script')[0]; c.parentNode.insertBefore(s, c);
|
||
}
|
||
if(window.attachEvent) { window.attachEvent('onload', async_load); }
|
||
else { window.addEventListener('load', async_load, false); }
|
||
})();
|
||
</script>
|
||
<script type="text/javascript">
|
||
$(document).ready(function() {
|
||
$('#content').css("min-height", $(window).height() - 553 );
|
||
// if the URL contains a version string, update the version picker to reflect that
|
||
version = document.location.pathname.match(/^\/(v\d\.\d)\/.*/)
|
||
if (version && version[1]) {
|
||
$('#document-version-number')[0].text = 'Version '+version[1];
|
||
} else {
|
||
$('#document-version-number')[0].text = $('#document-version-number')[0].text + " (Latest)"
|
||
}
|
||
// load the complete versions list
|
||
$.get("/versions.html_fragment", function( data ) {
|
||
$('#documentation-version-list').prepend(data);
|
||
//remove any "/v1.1/" bits from front, so we can add the path to the version selection dropdown.
|
||
path = document.location.pathname.replace(/^\/v\d\.\d/, "");
|
||
$('#documentation-version-list a.version').each(function(i, e) {
|
||
e.href = e.href+path;
|
||
$(e).removeClass()
|
||
});
|
||
});
|
||
|
||
})
|
||
var userName = getCookie('docker_sso_username');
|
||
if (userName) {
|
||
$('.topmostnav_loggedout').hide();
|
||
$('.topmostnav_loggedin').show();
|
||
$('#logged-in-header-username').text(userName);
|
||
} else {
|
||
$('.topmostnav_loggedout').show();
|
||
$('.topmostnav_loggedin').hide();
|
||
}
|
||
</script>
|
||
</body>
|
||
</html> |