mirror of https://github.com/docker/docs.git
3424 lines
115 KiB
HTML
3424 lines
115 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>Remote API v1.14 </title>
|
||
<link rel="shortcut icon" href="/images/favicon.png" type="image/x-icon">
|
||
<link rel="stylesheet" href="/dist/assets/css/bootstrap-custom.css" />
|
||
<link rel="stylesheet" href="/dist/assets/css/app.css" />
|
||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/animate.css/3.2.6/animate.min.css">
|
||
<link rel="stylesheet" href="/css/custom.css">
|
||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
|
||
<script href="/dist/assets/js/modernizr.js"></script>
|
||
</head>
|
||
<body>
|
||
<div class="off-canvas-wrap" data-offcanvas>
|
||
<div class="inner-wrap">
|
||
|
||
<a class="left-off-canvas-toggle" href="#" >
|
||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="35px" height="35px" viewBox="0 0 35 35" enable-background="new 0 0 35 35" xml:space="preserve">
|
||
<path fill="#3597D4" d="M30.583,9.328c0,0.752-0.539,1.362-1.203,1.362H5.113c-0.664,0-1.203-0.61-1.203-1.362l0,0
|
||
c0-0.752,0.539-1.362,1.203-1.362H29.38C30.045,7.966,30.583,8.576,30.583,9.328L30.583,9.328z"/>
|
||
<path fill="#3597D4" d="M30.583,17.09c0,0.752-0.539,1.362-1.203,1.362H5.113c-0.664,0-1.203-0.61-1.203-1.362l0,0
|
||
c0-0.752,0.539-1.362,1.203-1.362H29.38C30.045,15.728,30.583,16.338,30.583,17.09L30.583,17.09z"/>
|
||
<path fill="#3597D4" d="M30.583,24.387c0,0.752-0.539,1.362-1.203,1.362H5.113c-0.664,0-1.203-0.61-1.203-1.362l0,0
|
||
c0-0.752,0.539-1.362,1.203-1.362H29.38C30.045,23.025,30.583,23.635,30.583,24.387L30.583,24.387z"/>
|
||
</svg>
|
||
</a>
|
||
<a class="button secondary small get-started-cta">Get Started</a>
|
||
<header class="main-header">
|
||
<div class="row">
|
||
<div class="large-3 columns">
|
||
<a href="/"><img class="logo" src="/dist/assets/images/logo.png"></a>
|
||
</div>
|
||
<div class="large-9 columns">
|
||
<ul class="nav-global">
|
||
<li><a href="https://www.docker.com/support">Support</a></li>
|
||
<li><a href="https://training.docker.com/">Training</a></li>
|
||
<li><a href="/">Docs</a></li>
|
||
<li><a href="http://blog.docker.com/">Blog</a></li>
|
||
<li><a href="https://hub.docker.com/account/signup/">Docker Hub</a></li>
|
||
<li><a class="button" href="/mac/started/">Get Started</a></li>
|
||
</ul>
|
||
<ul class="nav-main">
|
||
<li><a href="https://www.docker.com/products">Products</a>
|
||
<ul>
|
||
<li><a href="https://www.docker.com/pricing">Pricing</a></li>
|
||
<li><a href="https://www.docker.com/whatisdocker">What is Docker?</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://www.docker.com/customers">Customers</a></li>
|
||
<li><a href="https://www.docker.com/community">Community</a>
|
||
<ul>
|
||
<li><a href="https://www.docker.com/community/meetups">Meetups</a></li>
|
||
<li><a href="https://www.docker.com/community/events">Events</a></li>
|
||
<li><a href="https://forums.docker.com">Forums</a></li>
|
||
<li><a href="http://www.scoop.it/t/docker-by-docker">Community News</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://www.docker.com/partners">Partners</a>
|
||
<ul>
|
||
<li><a href="https://www.docker.com/partners/partner-programs">Partner Programs</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://www.docker.com/company">Company</a>
|
||
<ul>
|
||
<li><a href="https://www.docker.com/news-and-press">News & Press</a></li>
|
||
<li><a href="https://www.docker.com/work-docker">Work at Docker</a></li>
|
||
<li><a href="https://www.docker.com/company/management">Management</a></li>
|
||
<li><a href="https://www.docker.com/company/contact">Contact</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="https://www.docker.com/open-source">Open Source</a>
|
||
<ul>
|
||
<li><a href="https://www.docker.com/contribute">Contribute</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
|
||
|
||
<aside class="left-off-canvas-menu">
|
||
<ul class="off-canvas-list">
|
||
<li class="has-submenu"><a href="#">Products</a>
|
||
<ul class="left-submenu">
|
||
<li class="back"><a href="#">Back</a></li>
|
||
<li><a href="#">Pricing</a></li>
|
||
<li><a href="#">What Is Docker</a></li>
|
||
<li><a href="#">Products</a></li>
|
||
<li><a href="#">Docker Engine</a></li>
|
||
<li><a href="#">Docker Hub</a></li>
|
||
<li><a href="#">Docker Registry</a></li>
|
||
<li><a href="#">Docker Machine</a></li>
|
||
<li><a href="#">Docker Swarm</a></li>
|
||
<li><a href="#">Docker Compose</a></li>
|
||
<li><a href="#">Kitematic</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#">Customers</a></li>
|
||
<li class="has-submenu"><a href="#">Community</a>
|
||
<ul class="left-submenu">
|
||
<li class="back"><a href="#">Back</a></li>
|
||
<li><a href="#">Community</a></li>
|
||
<li><a href="#">Meetups</a></li>
|
||
<li><a href="https://www.docker.com/community/events">Events</a></li>
|
||
<li><a href="#">Forum</a></li>
|
||
<li><a href="#">Scoop.it</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="has-submenu"><a href="#">Partners</a>
|
||
<ul class="left-submenu">
|
||
<li class="back"><a href="#">Back</a></li>
|
||
<li><a href="#">Partners</a></li>
|
||
<li><a href="https://www.docker.com/partners/partner-programs">Partners Programs</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#">Company</a></li>
|
||
<li class="has-submenu"><a href="#">Open Source</a>
|
||
<ul class="left-submenu">
|
||
<li class="back"><a href="#">Back</a></li>
|
||
<li><a href="#">Open Source</a></li>
|
||
<li><a href="#">Contribute</a></li>
|
||
<li><a href="#">Governance</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul class="nav-global-off-canvas">
|
||
<li><a href="#">Support</a></li>
|
||
<li><a href="#">Training</a></li>
|
||
<li><a href="#">Docs</a></li>
|
||
<li><a href="#">Blog</a></li>
|
||
<li><a href="#">Sign in</a></li>
|
||
<li><a href="#">Sign up</a></li>
|
||
</ul>
|
||
</aside>
|
||
|
||
<a class="exit-off-canvas"></a>
|
||
<div id="docs" class="row">
|
||
<div class="large-3 columns">
|
||
<section id="multiple" data-accordion-group>
|
||
|
||
|
||
<section data-accordion>
|
||
|
||
<article data-accordion>
|
||
<button data-control> Install</button>
|
||
<div data-content>
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Docker Engine</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/docker/installation/mac/" class=""> Installation on Mac OS X</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/installation/windows/" class=""> Installation on Windows</a>
|
||
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Linux</button>
|
||
<div data-content>
|
||
|
||
<a data-link href="/docker/installation/archlinux/" class=""> Installation on Arch Linux</a>
|
||
|
||
<a data-link href="/docker/installation/cruxlinux/" class=""> Installation on CRUX Linux</a>
|
||
|
||
<a data-link href="/docker/installation/centos/" class=""> Installation on CentOS</a>
|
||
|
||
<a data-link href="/docker/installation/debian/" class=""> Installation on Debian</a>
|
||
|
||
<a data-link href="/docker/installation/fedora/" class=""> Installation on Fedora</a>
|
||
|
||
<a data-link href="/docker/installation/frugalware/" class=""> Installation on FrugalWare</a>
|
||
|
||
<a data-link href="/docker/installation/gentoolinux/" class=""> Installation on Gentoo</a>
|
||
|
||
<a data-link href="/docker/installation/oracle/" class=""> Installation on Oracle Linux</a>
|
||
|
||
<a data-link href="/docker/installation/rhel/" class=""> Installation on Red Hat Enterprise Linux</a>
|
||
|
||
<a data-link href="/docker/installation/ubuntulinux/" class=""> Installation on Ubuntu </a>
|
||
|
||
<a data-link href="/docker/installation/SUSE/" class=""> Installation on openSUSE and SUSE Linux Enterprise</a>
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Cloud</button>
|
||
<div data-content>
|
||
|
||
<a data-link href="/docker/installation/amazon/" class=""> Amazon EC2 Installation</a>
|
||
|
||
<a data-link href="/docker/installation/joyent/" class=""> Install on Joyent Public Cloud</a>
|
||
|
||
<a data-link href="/docker/installation/google/" class=""> Installation on Google Cloud Platform</a>
|
||
|
||
<a data-link href="/docker/installation/softlayer/" class=""> Installation on IBM SoftLayer </a>
|
||
|
||
<a data-link href="/docker/installation/azure/" class=""> Installation on Microsoft Azure platform</a>
|
||
|
||
<a data-link href="/docker/installation/rackspace/" class=""> Installation on Rackspace Cloud</a>
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/installation/binaries/" class=""> Installation from binaries</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<a data-link href="/kitematic/" class=""> Kitematic</a>
|
||
|
||
|
||
|
||
<a data-link href="/machine/install-machine/" class=""> Docker Machine</a>
|
||
|
||
|
||
|
||
<a data-link href="/compose/install/" class=""> Docker Compose</a>
|
||
|
||
|
||
|
||
<a data-link href="/swarm/install-w-machine/" class=""> Docker Swarm</a>
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
</section>
|
||
|
||
<section data-accordion>
|
||
|
||
<article data-accordion>
|
||
<button data-control> Docker Fundamentals</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/docker/userguide/" class=""> The Docker user guide</a>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Work with Docker Images</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/articles/dockerfile_best-practices/" class=""> Best practices for writing Dockerfiles</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/articles/baseimages/" class=""> Create a base image</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/userguide/dockerimages/" class=""> Get started with images</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/userguide/dockerrepos/" class=""> Get started with Docker Hub</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Work with Docker Containers</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/articles/basics/" class=""> Get started with containers</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/userguide/usingdocker/" class=""> Working with containers</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/userguide/dockervolumes/" class=""> Managing data in containers</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/userguide/dockerlinks/" class=""> Linking containers together</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/articles/host_integration/" class=""> Automatically start containers</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Docker on Windows & OSX</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/articles/dsc/" class=""> PowerShell DSC Usage</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/articles/b2d_volume_resize/" class=""> Resizing a Boot2Docker volume </a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Use the Kitematic GUI</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/kitematic/userguide/" class=""> Kitematic User Guide: Intro & Overview</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/kitematic/nginx-web-server/" class=""> Set up an Nginx web server</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/kitematic/minecraft-server/" class=""> Set up a Minecraft Server</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/kitematic/rethinkdb-dev-database/" class=""> Creating a Local RethinkDB Database for Development</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/kitematic/faq/" class=""> Frequently Asked Questions</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/kitematic/known-issues/" class=""> Known Issues</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
</section>
|
||
|
||
<section data-accordion>
|
||
|
||
<article data-accordion>
|
||
<button data-control> Use Docker</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/docker/misc/" class=""> About Docker</a>
|
||
|
||
|
||
|
||
<a data-link href="/docker/userguide/labels-custom-metadata/" class=""> Apply custom metadata</a>
|
||
|
||
|
||
|
||
<a data-link href="/docker/introduction/understanding-docker/" class=""> Understand the architecture</a>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Provision & set up Docker hosts</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/machine/" class=""> Overview of Docker Machine</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Create multi-container applications</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/compose/" class=""> Overview of Docker Compose</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/compose/production/" class=""> Using Compose in production</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/compose/extends/" class=""> Extending services in Compose</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/compose/completion/" class=""> Command Completion</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/compose/django/" class=""> Quickstart Guide: Compose and Django</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/compose/rails/" class=""> Quickstart Guide: Compose and Rails</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/compose/wordpress/" class=""> Quickstart Guide: Compose and Wordpress</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Cluster Docker containers</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/swarm/" class=""> Docker Swarm</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/swarm/install-manual/" class=""> Create a swarm for development</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/swarm/discovery/" class=""> Docker Swarm discovery</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/swarm/scheduler/filter/" class=""> Docker Swarm filters</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/swarm/scheduler/strategy/" class=""> Docker Swarm strategies</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Adminstrate Docker</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/articles/networking/" class=""> Network configuration</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/articles/security/" class=""> Docker security</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/articles/configuring/" class=""> Configuring and running Docker</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/articles/runmetrics/" class=""> Runtime metrics</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/articles/https/" class=""> Protect the Docker daemon socket</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/articles/ambassador_pattern_linking/" class=""> Link via an ambassador container</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/articles/systemd/" class=""> Control and configure Docker with systemd</a>
|
||
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Applications and Services</button>
|
||
<div data-content>
|
||
|
||
<a data-link href="/docker/examples/running_riak_service/" class=""> Dockerizing a Riak service</a>
|
||
|
||
<a data-link href="/docker/examples/running_ssh_service/" class=""> Dockerizing an SSH service</a>
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Integrate with Third-party Tools</button>
|
||
<div data-content>
|
||
|
||
<a data-link href="/articles/cfengine_process_management/" class=""> Process management with CFEngine</a>
|
||
|
||
<a data-link href="/articles/chef/" class=""> Using Chef</a>
|
||
|
||
<a data-link href="/articles/puppet/" class=""> Using Puppet</a>
|
||
|
||
<a data-link href="/articles/using_supervisord/" class=""> Using Supervisor with Docker</a>
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Applied Docker</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/docker/examples/mongodb/" class=""> Dockerizing MongoDB</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/examples/postgresql_service/" class=""> Dockerizing PostgreSQL</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/examples/couchdb_data_volumes/" class=""> Dockerizing a CouchDB service</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/examples/nodejs_web_app/" class=""> Dockerizing a Node.js web app</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/examples/running_redis_service/" class=""> Dockerizing a Redis service</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/examples/apt-cacher-ng/" class=""> Dockerizing an apt-cacher-ng service</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/userguide/dockerizing/" class=""> Dockerizing applications: A 'Hello world'</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
</section>
|
||
|
||
<section data-accordion>
|
||
|
||
<article data-accordion>
|
||
<button data-control> Manage image repositories</button>
|
||
<div data-content>
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> The Public Hub</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/docker/docker-hub/userguide/" class=""> Docker Hub user guide</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/docker-hub/" class=""> The Docker Hub</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/docker-hub/accounts/" class=""> Accounts on Docker Hub</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/userguide/dockerhub/" class=""> Getting started with Docker Hub</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/docker-hub/repos/" class=""> Your Repositories on Docker Hub</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/docker-hub/builds/" class=""> Automated Builds on Docker Hub</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/docker-hub/official_repos/" class=""> Official Repositories on Docker Hub</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Docker Trusted Registry</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/docker-trusted-registry/" class=""> Overview</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker-trusted-registry/quick-start/" class=""> Quick-start: Basic Workflow</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker-trusted-registry/userguide/" class=""> User guide</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker-trusted-registry/adminguide/" class=""> Admin guide</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker-trusted-registry/install/" class=""> Installation</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker-trusted-registry/configuration/" class=""> Configuration options</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker-trusted-registry/support/" class=""> Support</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker-trusted-registry/release-notes/" class=""> Release notes</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker-trusted-registry/prior-release-notes/" class=""> Prior release notes archive</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Docker Registry</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/registry/" class=""> Docker Registry 2.0</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/registry/introduction/" class=""> Understanding the Registry</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/registry/deploying/" class=""> Deploying a registry server</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/registry/configuration/" class=""> Configure a Registry</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/registry/notifications/" class=""> Work with Notifications</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/registry/authentication/" class=""> Authentication for the Registry</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/registry/help/" class=""> Getting help</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<a data-link href="/articles/certificates/" class=""> Using certificates for repository client verification</a>
|
||
|
||
|
||
|
||
<a data-link href="/articles/registry_mirror/" class=""> Run a local registry mirror</a>
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
</section>
|
||
|
||
<section data-accordion>
|
||
|
||
<article data-accordion>
|
||
<button data-control> Command and API references</button>
|
||
<div data-content>
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Command line reference</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/cli/" class=""> Using the command line</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/daemon/" class=""> daemon</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/attach/" class=""> attach</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/build/" class=""> build</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/commit/" class=""> commit</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/cp/" class=""> cp</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/create/" class=""> create</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/diff/" class=""> diff</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/events/" class=""> events</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/exec/" class=""> exec</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/export/" class=""> export</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/history/" class=""> history</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/images/" class=""> images</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/import/" class=""> import</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/info/" class=""> info</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/inspect/" class=""> inspect</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/kill/" class=""> kill</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/load/" class=""> load</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/login/" class=""> login</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/logout/" class=""> logout</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/logs/" class=""> logs</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/pause/" class=""> pause</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/port/" class=""> port</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/ps/" class=""> ps</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/pull/" class=""> pull</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/push/" class=""> push</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/rename/" class=""> rename</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/restart/" class=""> restart</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/rm/" class=""> rm</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/rmi/" class=""> rmi</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/run/" class=""> run</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/save/" class=""> save</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/search/" class=""> search</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/start/" class=""> start</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/stats/" class=""> stats</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/stop/" class=""> stop</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/tag/" class=""> tag</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/top/" class=""> top</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/unpause/" class=""> unpause</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/version/" class=""> version</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/commandline/wait/" class=""> wait</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/run/" class=""> Docker run reference</a>
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/builder/" class=""> Dockerfile reference</a>
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/api/remote_api_client_libraries/" class=""> Remote API client libraries</a>
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/api/docker_io_accounts_api/" class=""> docker.io accounts API</a>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Docker Remote API</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/docker/reference/api/docker-io_api/" class=""> Docker Hub API</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/api/docker_remote_api/" class=""> Remote API</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/api/docker_remote_api_v1.19/" class=""> Remote API v1.19</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/api/docker_remote_api_v1.18/" class=""> Remote API v1.18</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/api/docker_remote_api_v1.17/" class=""> Remote API v1.17</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/api/docker_remote_api_v1.16/" class=""> Remote API v1.16</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/api/docker_remote_api_v1.15/" class=""> Remote API v1.15</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/api/docker_remote_api_v1.14/" class=""> Remote API v1.14</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Docker Hub</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/docker/reference/api/hub_registry_spec/" class=""> The Docker Hub and the Registry v1</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Docker Compose Reference</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/compose/cli/" class=""> Compose CLI reference</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/compose/yml/" class=""> docker-compose.yml reference</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/compose/env/" class=""> Compose environment variables reference</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<a data-link href="" class=""> Docker Machine Reference</a>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Docker Swarm Reference</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/swarm/api/swarm-api/" class=""> Docker Swarm API</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Docker Registry Reference</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/registry/spec/api/" class=""> Docker Registry HTTP API V2</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/registry/storagedrivers/" class=""> Docker Registry Storage Driver</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/registry/spec/auth/token/" class=""> Docker Registry v2 Authentication</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
</section>
|
||
|
||
<section data-accordion>
|
||
|
||
<article data-accordion>
|
||
<button data-control> Open Source at Docker</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/opensource/how-to-contribute/" class=""> Overview of contributing</a>
|
||
|
||
|
||
|
||
<a data-link href="/docker/project/get-help/" class=""> Where to chat or get help</a>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Configure Development Environment</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/docker/project/who-written-for/" class=""> README first</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/project/software-required/" class=""> Get the required software</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/project/software-req-win/" class=""> Set up for development on Windows</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/project/set-up-git/" class=""> Configure Git for contributing</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/project/set-up-dev-env/" class=""> Work with a development container</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/project/test-and-docs/" class=""> Run tests and test documentation</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Contribution Workflow</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/docker/project/make-a-contribution/" class=""> Understand how to contribute</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/project/find-an-issue/" class=""> Find and claim an issue</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/project/work-issue/" class=""> Work on your issue</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/project/create-pr/" class=""> Create a pull request (PR)</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/project/review-pr/" class=""> Participate in the PR review</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/project/advanced-contributing/" class=""> Advanced contributing</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/docker/project/coding-style/" class=""> Coding style checklist</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<a data-link href="/opensource/code/" class=""> Contribute code overview</a>
|
||
|
||
|
||
|
||
<a data-link href="/opensource/community/" class=""> Support the community</a>
|
||
|
||
|
||
|
||
<a data-link href="/opensource/issues/" class=""> Organize our issues</a>
|
||
|
||
|
||
|
||
<a data-link href="/opensource/meetups/" class=""> Organize a Docker Meetup</a>
|
||
|
||
|
||
|
||
<a data-link href="/opensource/test/" class=""> Testing contributions</a>
|
||
|
||
|
||
|
||
<article data-accordion>
|
||
<button data-control> Governance</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/opensource/governance/dgab-info/" class=""> Docker Governance Advisory Board</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/opensource/governance/board-profiles/" class=""> Board member profiles</a>
|
||
|
||
|
||
|
||
|
||
<a data-link href="/opensource/governance/conduct-code/" class=""> Code of conduct</a>
|
||
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
|
||
|
||
<a data-link href="/docker/project/doc-style/" class=""> Style guide for Docker documentation</a>
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
</section>
|
||
|
||
<section data-accordion>
|
||
|
||
<article data-accordion>
|
||
<button data-control> About</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="/release-notes/" class=""> Docker Release Notes</a>
|
||
|
||
|
||
|
||
<a data-link href="/swarm/release-notes/" class=""> Docker Swarm Release Notes</a>
|
||
|
||
|
||
|
||
<a data-link href="/docker/misc/faq/" class=""> FAQ</a>
|
||
|
||
|
||
|
||
<a data-link href="/docker/reference/glossary/" class=""> Docker Glossary</a>
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
</section>
|
||
|
||
<section data-accordion>
|
||
|
||
<article data-accordion>
|
||
<button style="visibility: hidden" data-control> Get older docs</button>
|
||
<div data-content>
|
||
|
||
|
||
<a data-link href="https://docs.docker.com/v1.6/" class=""> Version 1.6</a>
|
||
|
||
|
||
|
||
<a data-link href="https://docs.docker.com/v1.5/" class=""> Version 1.5</a>
|
||
|
||
|
||
|
||
<a data-link href="https://docs.docker.com/v1.4/" class=""> Version 1.4</a>
|
||
|
||
|
||
</div>
|
||
</article>
|
||
|
||
</section>
|
||
|
||
</section>
|
||
|
||
<script>
|
||
$(document).ready(function () {
|
||
var $activeLink = $('#multiple [data-link].active');
|
||
var $accordions = $activeLink.parents('article[data-accordion]');
|
||
$($accordions.get().reverse()).each(function (index, accordion) {
|
||
var $accordion = $(accordion);
|
||
var $content = $accordion.find('[data-content]');
|
||
$accordion.addClass('open');
|
||
$content.css({'max-height': '100%'});
|
||
});
|
||
});
|
||
</script>
|
||
</div>
|
||
<div class="large-6 columns">
|
||
<section id="main">
|
||
<article id="content">
|
||
|
||
|
||
<h1 id="docker-remote-api-v1-14">Docker Remote API v1.14</h1>
|
||
|
||
<h2 id="1-brief-introduction">1. Brief introduction</h2>
|
||
|
||
<ul>
|
||
<li>The Remote API has replaced <code>rcli</code>.</li>
|
||
<li>The daemon listens on <code>unix:///var/run/docker.sock</code> but you can
|
||
<a href="/articles/basics/#bind-docker-to-another-hostport-or-a-unix-socket">Bind Docker to another host/port or a Unix socket</a>.</li>
|
||
<li>The API tends to be REST, but for some complex commands, like <code>attach</code>
|
||
or <code>pull</code>, the HTTP connection is hijacked to transport <code>STDOUT</code>,
|
||
<code>STDIN</code> and <code>STDERR</code>.</li>
|
||
</ul>
|
||
|
||
<h1 id="2-endpoints">2. Endpoints</h1>
|
||
|
||
<h2 id="2-1-containers">2.1 Containers</h2>
|
||
|
||
<h3 id="list-containers">List containers</h3>
|
||
|
||
<p><code>GET /containers/json</code></p>
|
||
|
||
<p>List containers</p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> GET /containers/json?all=1&before=8dfafdbc3a40&size=1 HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/json
|
||
|
||
[
|
||
{
|
||
"Id": "8dfafdbc3a40",
|
||
"Image": "ubuntu:latest",
|
||
"Command": "echo 1",
|
||
"Created": 1367854155,
|
||
"Status": "Exit 0",
|
||
"Ports": [{"PrivatePort": 2222, "PublicPort": 3333, "Type": "tcp"}],
|
||
"SizeRw": 12288,
|
||
"SizeRootFs": 0
|
||
},
|
||
{
|
||
"Id": "9cd87474be90",
|
||
"Image": "ubuntu:latest",
|
||
"Command": "echo 222222",
|
||
"Created": 1367854155,
|
||
"Status": "Exit 0",
|
||
"Ports": [],
|
||
"SizeRw": 12288,
|
||
"SizeRootFs": 0
|
||
},
|
||
{
|
||
"Id": "3176a2479c92",
|
||
"Image": "ubuntu:latest",
|
||
"Command": "echo 3333333333333333",
|
||
"Created": 1367854154,
|
||
"Status": "Exit 0",
|
||
"Ports":[],
|
||
"SizeRw":12288,
|
||
"SizeRootFs":0
|
||
},
|
||
{
|
||
"Id": "4cb07b47f9fb",
|
||
"Image": "ubuntu:latest",
|
||
"Command": "echo 444444444444444444444444444444444",
|
||
"Created": 1367854152,
|
||
"Status": "Exit 0",
|
||
"Ports": [],
|
||
"SizeRw": 12288,
|
||
"SizeRootFs": 0
|
||
}
|
||
]
|
||
</code></pre>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>all</strong> – 1/True/true or 0/False/false, Show all containers.
|
||
Only running containers are shown by default (i.e., this defaults to false)</li>
|
||
<li><strong>limit</strong> – Show <code>limit</code> last created containers, include non-running ones.</li>
|
||
<li><strong>since</strong> – Show only containers created since Id, include non-running ones.</li>
|
||
<li><strong>before</strong> – Show only containers created before Id, include non-running ones.</li>
|
||
<li><strong>size</strong> – 1/True/true or 0/False/false, Show the containers sizes</li>
|
||
<li><strong>filters</strong> - a json encoded value of the filters (a map[string][]string) to process on the containers list. Available filters:
|
||
|
||
<ul>
|
||
<li>exited=<int> – containers with exit code of <int></li>
|
||
<li>status=(restarting|running|paused|exited)</li>
|
||
</ul></li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>400</strong> – bad parameter</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="create-a-container">Create a container</h3>
|
||
|
||
<p><code>POST /containers/create</code></p>
|
||
|
||
<p>Create a container</p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> POST /containers/create HTTP/1.1
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"Hostname":"",
|
||
"Domainname": "",
|
||
"User":"",
|
||
"Memory":0,
|
||
"MemorySwap":0,
|
||
"CpuShares": 512,
|
||
"Cpuset": "0,1",
|
||
"AttachStdin":false,
|
||
"AttachStdout":true,
|
||
"AttachStderr":true,
|
||
"PortSpecs":null,
|
||
"Tty":false,
|
||
"OpenStdin":false,
|
||
"StdinOnce":false,
|
||
"Env":null,
|
||
"Cmd":[
|
||
"date"
|
||
],
|
||
"Image":"ubuntu",
|
||
"Volumes":{
|
||
"/tmp": {}
|
||
},
|
||
"WorkingDir":"",
|
||
"NetworkDisabled": false,
|
||
"ExposedPorts":{
|
||
"22/tcp": {}
|
||
},
|
||
"RestartPolicy": { "Name": "always" }
|
||
}
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 201 Created
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"Id":"e90e34656806"
|
||
"Warnings":[]
|
||
}
|
||
</code></pre>
|
||
|
||
<p>Json Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>RestartPolicy</strong> – The behavior to apply when the container exits. The
|
||
value is an object with a <code>Name</code> property of either <code>"always"</code> to
|
||
always restart or <code>"on-failure"</code> to restart only when the container
|
||
exit code is non-zero. If <code>on-failure</code> is used, <code>MaximumRetryCount</code>
|
||
controls the number of times to retry before giving up.
|
||
The default is not to restart. (optional)
|
||
An ever increasing delay (double the previous delay, starting at 100mS)
|
||
is added before each restart to prevent flooding the server.</li>
|
||
<li><strong>config</strong> – the container’s configuration</li>
|
||
</ul>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>name</strong> – Assign the specified name to the container. Must match <code>/?[a-zA-Z0-9_-]+</code>.</li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>201</strong> – no error</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
<li><strong>406</strong> – impossible to attach (container not running)</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="inspect-a-container">Inspect a container</h3>
|
||
|
||
<p><code>GET /containers/(id)/json</code></p>
|
||
|
||
<p>Return low-level information on the container <code>id</code></p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> GET /containers/4fa6e0f0c678/json HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"Id": "4fa6e0f0c6786287e131c3852c58a2e01cc697a68231826813597e4994f1d6e2",
|
||
"Created": "2013-05-07T14:51:42.041847+02:00",
|
||
"Path": "date",
|
||
"Args": [],
|
||
"Config": {
|
||
"Hostname": "4fa6e0f0c678",
|
||
"User": "",
|
||
"Memory": 0,
|
||
"MemorySwap": 0,
|
||
"AttachStdin": false,
|
||
"AttachStdout": true,
|
||
"AttachStderr": true,
|
||
"PortSpecs": null,
|
||
"Tty": false,
|
||
"OpenStdin": false,
|
||
"StdinOnce": false,
|
||
"Env": null,
|
||
"Cmd": [
|
||
"date"
|
||
],
|
||
"Dns": null,
|
||
"Image": "ubuntu",
|
||
"Volumes": {},
|
||
"VolumesFrom": "",
|
||
"WorkingDir": ""
|
||
},
|
||
"State": {
|
||
"Running": false,
|
||
"Pid": 0,
|
||
"ExitCode": 0,
|
||
"StartedAt": "2013-05-07T14:51:42.087658+02:01360",
|
||
"Ghost": false
|
||
},
|
||
"Image": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
|
||
"NetworkSettings": {
|
||
"IpAddress": "",
|
||
"IpPrefixLen": 0,
|
||
"Gateway": "",
|
||
"Bridge": "",
|
||
"PortMapping": null
|
||
},
|
||
"SysInitPath": "/home/kitty/go/src/github.com/docker/docker/bin/docker",
|
||
"ResolvConfPath": "/etc/resolv.conf",
|
||
"Volumes": {},
|
||
"HostConfig": {
|
||
"Binds": null,
|
||
"ContainerIDFile": "",
|
||
"LxcConf": [],
|
||
"Privileged": false,
|
||
"PortBindings": {
|
||
"80/tcp": [
|
||
{
|
||
"HostIp": "0.0.0.0",
|
||
"HostPort": "49153"
|
||
}
|
||
]
|
||
},
|
||
"Links": ["/name:alias"],
|
||
"PublishAllPorts": false,
|
||
"CapAdd": ["NET_ADMIN"],
|
||
"CapDrop": ["MKNOD"]
|
||
}
|
||
}
|
||
</code></pre>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="list-processes-running-inside-a-container">List processes running inside a container</h3>
|
||
|
||
<p><code>GET /containers/(id)/top</code></p>
|
||
|
||
<p>List processes running inside the container <code>id</code></p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> GET /containers/4fa6e0f0c678/top HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"Titles": [
|
||
"USER",
|
||
"PID",
|
||
"%CPU",
|
||
"%MEM",
|
||
"VSZ",
|
||
"RSS",
|
||
"TTY",
|
||
"STAT",
|
||
"START",
|
||
"TIME",
|
||
"COMMAND"
|
||
],
|
||
"Processes": [
|
||
["root","20147","0.0","0.1","18060","1864","pts/4","S","10:06","0:00","bash"],
|
||
["root","20271","0.0","0.0","4312","352","pts/4","S+","10:07","0:00","sleep","10"]
|
||
]
|
||
}
|
||
</code></pre>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>ps_args</strong> – ps arguments to use (e.g., aux)</li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="get-container-logs">Get container logs</h3>
|
||
|
||
<p><code>GET /containers/(id)/logs</code></p>
|
||
|
||
<p>Get stdout and stderr logs from the container <code>id</code></p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> GET /containers/4fa6e0f0c678/logs?stderr=1&stdout=1&timestamps=1&follow=1&tail=10 HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/vnd.docker.raw-stream
|
||
|
||
{{ STREAM }}
|
||
</code></pre>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>follow</strong> – 1/True/true or 0/False/false, return stream. Default false</li>
|
||
<li><strong>stdout</strong> – 1/True/true or 0/False/false, show stdout log. Default false</li>
|
||
<li><strong>stderr</strong> – 1/True/true or 0/False/false, show stderr log. Default false</li>
|
||
<li><strong>timestamps</strong> – 1/True/true or 0/False/false, print timestamps for every
|
||
log line. Default false</li>
|
||
<li><strong>tail</strong> – Output specified number of lines at the end of logs: <code>all</code> or
|
||
<code><number></code>. Default all</li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="inspect-changes-on-a-container-s-filesystem">Inspect changes on a container’s filesystem</h3>
|
||
|
||
<p><code>GET /containers/(id)/changes</code></p>
|
||
|
||
<p>Inspect changes on container <code>id</code>’s filesystem</p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> GET /containers/4fa6e0f0c678/changes HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/json
|
||
|
||
[
|
||
{
|
||
"Path": "/dev",
|
||
"Kind": 0
|
||
},
|
||
{
|
||
"Path": "/dev/kmsg",
|
||
"Kind": 1
|
||
},
|
||
{
|
||
"Path": "/test",
|
||
"Kind": 1
|
||
}
|
||
]
|
||
</code></pre>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="export-a-container">Export a container</h3>
|
||
|
||
<p><code>GET /containers/(id)/export</code></p>
|
||
|
||
<p>Export the contents of container <code>id</code></p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> GET /containers/4fa6e0f0c678/export HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/octet-stream
|
||
|
||
{{ TAR STREAM }}
|
||
</code></pre>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="start-a-container">Start a container</h3>
|
||
|
||
<p><code>POST /containers/(id)/start</code></p>
|
||
|
||
<p>Start the container <code>id</code></p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> POST /containers/(id)/start HTTP/1.1
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"Binds":["/tmp:/tmp"],
|
||
"Links":["redis3:redis"],
|
||
"LxcConf":[{"Key":"lxc.utsname","Value":"docker"}],
|
||
"PortBindings":{ "22/tcp": [{ "HostPort": "11022" }] },
|
||
"PublishAllPorts":false,
|
||
"Privileged":false,
|
||
"Dns": ["8.8.8.8"],
|
||
"VolumesFrom": ["parent", "other:ro"],
|
||
"CapAdd": ["NET_ADMIN"],
|
||
"CapDrop": ["MKNOD"]
|
||
}
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 204 No Content
|
||
</code></pre>
|
||
|
||
<p>Json Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>hostConfig</strong> – the container’s host configuration (optional)</li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>204</strong> – no error</li>
|
||
<li><strong>304</strong> – container already started</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="stop-a-container">Stop a container</h3>
|
||
|
||
<p><code>POST /containers/(id)/stop</code></p>
|
||
|
||
<p>Stop the container <code>id</code></p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> POST /containers/e90e34656806/stop?t=5 HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 204 No Content
|
||
</code></pre>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>t</strong> – number of seconds to wait before killing the container</li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>204</strong> – no error</li>
|
||
<li><strong>304</strong> – container already stopped</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="restart-a-container">Restart a container</h3>
|
||
|
||
<p><code>POST /containers/(id)/restart</code></p>
|
||
|
||
<p>Restart the container <code>id</code></p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> POST /containers/e90e34656806/restart?t=5 HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 204 No Content
|
||
</code></pre>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>t</strong> – number of seconds to wait before killing the container</li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>204</strong> – no error</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="kill-a-container">Kill a container</h3>
|
||
|
||
<p><code>POST /containers/(id)/kill</code></p>
|
||
|
||
<p>Kill the container <code>id</code></p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> POST /containers/e90e34656806/kill HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 204 No Content
|
||
</code></pre>
|
||
|
||
<p>Query Parameters</p>
|
||
|
||
<ul>
|
||
<li><strong>signal</strong> - Signal to send to the container: integer or string like “SIGINT”.
|
||
When not set, SIGKILL is assumed and the call will wait for the container to exit.</li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>204</strong> – no error</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="pause-a-container">Pause a container</h3>
|
||
|
||
<p><code>POST /containers/(id)/pause</code></p>
|
||
|
||
<p>Pause the container <code>id</code></p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> POST /containers/e90e34656806/pause HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 204 No Content
|
||
</code></pre>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>204</strong> – no error</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="unpause-a-container">Unpause a container</h3>
|
||
|
||
<p><code>POST /containers/(id)/unpause</code></p>
|
||
|
||
<p>Unpause the container <code>id</code></p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> POST /containers/e90e34656806/unpause HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 204 No Content
|
||
</code></pre>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>204</strong> – no error</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="attach-to-a-container">Attach to a container</h3>
|
||
|
||
<p><code>POST /containers/(id)/attach</code></p>
|
||
|
||
<p>Attach to the container <code>id</code></p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> POST /containers/16253994b7c4/attach?logs=1&stream=0&stdout=1 HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/vnd.docker.raw-stream
|
||
|
||
{{ STREAM }}
|
||
</code></pre>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>logs</strong> – 1/True/true or 0/False/false, return logs. Default false</li>
|
||
<li><strong>stream</strong> – 1/True/true or 0/False/false, return stream. Default false</li>
|
||
<li><strong>stdin</strong> – 1/True/true or 0/False/false, if stream=true, attach to stdin.
|
||
Default false</li>
|
||
<li><strong>stdout</strong> – 1/True/true or 0/False/false, if logs=true, return
|
||
stdout log, if stream=true, attach to stdout. Default false</li>
|
||
<li><strong>stderr</strong> – 1/True/true or 0/False/false, if logs=true, return
|
||
stderr log, if stream=true, attach to stderr. Default false</li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>400</strong> – bad parameter</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
|
||
<li><p><strong>500</strong> – server error</p>
|
||
|
||
<p><strong>Stream details</strong>:</p>
|
||
|
||
<p>When using the TTY setting is enabled in
|
||
<a href="/docker/reference/api/docker_remote_api_v1.9/#create-a-container" title="POST /containers/create"><code>POST /containers/create</code>
|
||
</a>,
|
||
the stream is the raw data from the process PTY and client’s stdin.
|
||
When the TTY is disabled, then the stream is multiplexed to separate
|
||
stdout and stderr.</p>
|
||
|
||
<p>The format is a <strong>Header</strong> and a <strong>Payload</strong> (frame).</p>
|
||
|
||
<p><strong>HEADER</strong></p>
|
||
|
||
<p>The header will contain the information on which stream write the
|
||
stream (stdout or stderr). It also contain the size of the
|
||
associated frame encoded on the last 4 bytes (uint32).</p>
|
||
|
||
<p>It is encoded on the first 8 bytes like this:</p>
|
||
|
||
<pre><code>header := [8]byte{STREAM_TYPE, 0, 0, 0, SIZE1, SIZE2, SIZE3, SIZE4}
|
||
</code></pre>
|
||
|
||
<p><code>STREAM_TYPE</code> can be:</p></li>
|
||
|
||
<li><p>0: stdin (will be written on stdout)</p></li>
|
||
|
||
<li><p>1: stdout</p></li>
|
||
|
||
<li><p>2: stderr</p>
|
||
|
||
<p><code>SIZE1, SIZE2, SIZE3, SIZE4</code> are the 4 bytes of
|
||
the uint32 size encoded as big endian.</p>
|
||
|
||
<p><strong>PAYLOAD</strong></p>
|
||
|
||
<p>The payload is the raw stream.</p>
|
||
|
||
<p><strong>IMPLEMENTATION</strong></p>
|
||
|
||
<p>The simplest way to implement the Attach protocol is the following:</p>
|
||
|
||
<ol>
|
||
<li>Read 8 bytes</li>
|
||
<li>chose stdout or stderr depending on the first byte</li>
|
||
<li>Extract the frame size from the last 4 bytes</li>
|
||
<li>Read the extracted size and output it on the correct output</li>
|
||
<li>Goto 1</li>
|
||
</ol></li>
|
||
</ul>
|
||
|
||
<h3 id="attach-to-a-container-websocket">Attach to a container (websocket)</h3>
|
||
|
||
<p><code>GET /containers/(id)/attach/ws</code></p>
|
||
|
||
<p>Attach to the container <code>id</code> via websocket</p>
|
||
|
||
<p>Implements websocket protocol handshake according to <a href="http://tools.ietf.org/html/rfc6455">RFC 6455</a></p>
|
||
|
||
<p><strong>Example request</strong></p>
|
||
|
||
<pre><code> GET /containers/e90e34656806/attach/ws?logs=0&stream=1&stdin=1&stdout=1&stderr=1 HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong></p>
|
||
|
||
<pre><code> {{ STREAM }}
|
||
</code></pre>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>logs</strong> – 1/True/true or 0/False/false, return logs. Default false</li>
|
||
<li><strong>stream</strong> – 1/True/true or 0/False/false, return stream.
|
||
Default false</li>
|
||
<li><strong>stdin</strong> – 1/True/true or 0/False/false, if stream=true, attach
|
||
to stdin. Default false</li>
|
||
<li><strong>stdout</strong> – 1/True/true or 0/False/false, if logs=true, return
|
||
stdout log, if stream=true, attach to stdout. Default false</li>
|
||
<li><strong>stderr</strong> – 1/True/true or 0/False/false, if logs=true, return
|
||
stderr log, if stream=true, attach to stderr. Default false</li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>400</strong> – bad parameter</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="wait-a-container">Wait a container</h3>
|
||
|
||
<p><code>POST /containers/(id)/wait</code></p>
|
||
|
||
<p>Block until container <code>id</code> stops, then returns the exit code</p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> POST /containers/16253994b7c4/wait HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/json
|
||
|
||
{"StatusCode": 0}
|
||
</code></pre>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="remove-a-container">Remove a container</h3>
|
||
|
||
<p><code>DELETE /containers/(id)</code></p>
|
||
|
||
<p>Remove the container <code>id</code> from the filesystem</p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> DELETE /containers/16253994b7c4?v=1 HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 204 No Content
|
||
</code></pre>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>v</strong> – 1/True/true or 0/False/false, Remove the volumes
|
||
associated to the container. Default false</li>
|
||
<li><strong>force</strong> - 1/True/true or 0/False/false, Kill then remove the container.
|
||
Default false</li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>204</strong> – no error</li>
|
||
<li><strong>400</strong> – bad parameter</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="copy-files-or-folders-from-a-container">Copy files or folders from a container</h3>
|
||
|
||
<p><code>POST /containers/(id)/copy</code></p>
|
||
|
||
<p>Copy files or folders of container <code>id</code></p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> POST /containers/4fa6e0f0c678/copy HTTP/1.1
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"Resource": "test.txt"
|
||
}
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/octet-stream
|
||
|
||
{{ TAR STREAM }}
|
||
</code></pre>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h2 id="2-2-images">2.2 Images</h2>
|
||
|
||
<h3 id="list-images">List Images</h3>
|
||
|
||
<p><code>GET /images/json</code></p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> GET /images/json?all=0 HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/json
|
||
|
||
[
|
||
{
|
||
"RepoTags": [
|
||
"ubuntu:12.04",
|
||
"ubuntu:precise",
|
||
"ubuntu:latest"
|
||
],
|
||
"Id": "8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c",
|
||
"Created": 1365714795,
|
||
"Size": 131506275,
|
||
"VirtualSize": 131506275
|
||
},
|
||
{
|
||
"RepoTags": [
|
||
"ubuntu:12.10",
|
||
"ubuntu:quantal"
|
||
],
|
||
"ParentId": "27cf784147099545",
|
||
"Id": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
|
||
"Created": 1364102658,
|
||
"Size": 24653,
|
||
"VirtualSize": 180116135
|
||
}
|
||
]
|
||
</code></pre>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>all</strong> – 1/True/true or 0/False/false, default false</li>
|
||
<li><strong>filters</strong> – a json encoded value of the filters (a map[string][]string) to process on the images list. Available filters:
|
||
|
||
<ul>
|
||
<li>dangling=true</li>
|
||
</ul></li>
|
||
</ul>
|
||
|
||
<h3 id="create-an-image">Create an image</h3>
|
||
|
||
<p><code>POST /images/create</code></p>
|
||
|
||
<p>Create an image, either by pulling it from the registry or by importing it</p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> POST /images/create?fromImage=ubuntu HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/json
|
||
|
||
{"status": "Pulling..."}
|
||
{"status": "Pulling", "progress": "1 B/ 100 B", "progressDetail": {"current": 1, "total": 100}}
|
||
{"error": "Invalid..."}
|
||
...
|
||
|
||
When using this endpoint to pull an image from the registry, the
|
||
`X-Registry-Auth` header can be used to include
|
||
a base64-encoded AuthConfig object.
|
||
</code></pre>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>fromImage</strong> – name of the image to pull</li>
|
||
<li><strong>fromSrc</strong> – source to import, - means stdin</li>
|
||
<li><strong>repo</strong> – repository</li>
|
||
<li><strong>tag</strong> – tag</li>
|
||
<li><strong>registry</strong> – the registry to pull from</li>
|
||
</ul>
|
||
|
||
<p>Request Headers:</p>
|
||
|
||
<ul>
|
||
<li><strong>X-Registry-Auth</strong> – base64-encoded AuthConfig object</li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="inspect-an-image">Inspect an image</h3>
|
||
|
||
<p><code>GET /images/(name)/json</code></p>
|
||
|
||
<p>Return low-level information on the image <code>name</code></p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> GET /images/ubuntu/json HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"Created": "2013-03-23T22:24:18.818426-07:00",
|
||
"Container": "3d67245a8d72ecf13f33dffac9f79dcdf70f75acb84d308770391510e0c23ad0",
|
||
"ContainerConfig":
|
||
{
|
||
"Hostname": "",
|
||
"User": "",
|
||
"Memory": 0,
|
||
"MemorySwap": 0,
|
||
"AttachStdin": false,
|
||
"AttachStdout": false,
|
||
"AttachStderr": false,
|
||
"PortSpecs": null,
|
||
"Tty": true,
|
||
"OpenStdin": true,
|
||
"StdinOnce": false,
|
||
"Env": null,
|
||
"Cmd": ["/bin/bash"],
|
||
"Dns": null,
|
||
"Image": "ubuntu",
|
||
"Volumes": null,
|
||
"VolumesFrom": "",
|
||
"WorkingDir": ""
|
||
},
|
||
"Id": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
|
||
"Parent": "27cf784147099545",
|
||
"Size": 6824592
|
||
}
|
||
</code></pre>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>404</strong> – no such image</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="get-the-history-of-an-image">Get the history of an image</h3>
|
||
|
||
<p><code>GET /images/(name)/history</code></p>
|
||
|
||
<p>Return the history of the image <code>name</code></p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> GET /images/ubuntu/history HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/json
|
||
|
||
[
|
||
{
|
||
"Id": "b750fe79269d",
|
||
"Created": 1364102658,
|
||
"CreatedBy": "/bin/bash"
|
||
},
|
||
{
|
||
"Id": "27cf78414709",
|
||
"Created": 1364068391,
|
||
"CreatedBy": ""
|
||
}
|
||
]
|
||
</code></pre>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>404</strong> – no such image</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="push-an-image-on-the-registry">Push an image on the registry</h3>
|
||
|
||
<p><code>POST /images/(name)/push</code></p>
|
||
|
||
<p>Push the image <code>name</code> on the registry</p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> POST /images/test/push HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/json
|
||
|
||
{"status": "Pushing..."}
|
||
{"status": "Pushing", "progress": "1/? (n/a)", "progressDetail": {"current": 1}}}
|
||
{"error": "Invalid..."}
|
||
...
|
||
|
||
If you wish to push an image on to a private registry, that image must already have been tagged
|
||
into a repository which references that registry host name and port. This repository name should
|
||
then be used in the URL. This mirrors the flow of the CLI.
|
||
</code></pre>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> POST /images/registry.acme.com:5000/test/push HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>tag</strong> – the tag to associate with the image on the registry, optional</li>
|
||
</ul>
|
||
|
||
<p>Request Headers:</p>
|
||
|
||
<ul>
|
||
<li><strong>X-Registry-Auth</strong> – include a base64-encoded AuthConfig object.</li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>404</strong> – no such image</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="tag-an-image-into-a-repository">Tag an image into a repository</h3>
|
||
|
||
<p><code>POST /images/(name)/tag</code></p>
|
||
|
||
<p>Tag the image <code>name</code> into a repository</p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> POST /images/test/tag?repo=myrepo&force=0&tag=v42 HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 201 OK
|
||
</code></pre>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>repo</strong> – The repository to tag in</li>
|
||
<li><strong>force</strong> – 1/True/true or 0/False/false, default false</li>
|
||
<li><strong>tag</strong> - The new tag name</li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>201</strong> – no error</li>
|
||
<li><strong>400</strong> – bad parameter</li>
|
||
<li><strong>404</strong> – no such image</li>
|
||
<li><strong>409</strong> – conflict</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="remove-an-image">Remove an image</h3>
|
||
|
||
<p><code>DELETE /images/(name)</code></p>
|
||
|
||
<p>Remove the image <code>name</code> from the filesystem</p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> DELETE /images/test HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-type: application/json
|
||
|
||
[
|
||
{"Untagged": "3e2f21a89f"},
|
||
{"Deleted": "3e2f21a89f"},
|
||
{"Deleted": "53b4f83ac9"}
|
||
]
|
||
</code></pre>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>force</strong> – 1/True/true or 0/False/false, default false</li>
|
||
<li><strong>noprune</strong> – 1/True/true or 0/False/false, default false</li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>404</strong> – no such image</li>
|
||
<li><strong>409</strong> – conflict</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="search-images">Search images</h3>
|
||
|
||
<p><code>GET /images/search</code></p>
|
||
|
||
<p>Search for an image on <a href="https://hub.docker.com">Docker Hub</a>.</p>
|
||
|
||
<blockquote>
|
||
<p><strong>Note</strong>:
|
||
The response keys have changed from API v1.6 to reflect the JSON
|
||
sent by the registry server to the docker daemon’s request.</p>
|
||
</blockquote>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> GET /images/search?term=sshd HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/json
|
||
|
||
[
|
||
{
|
||
"description": "",
|
||
"is_official": false,
|
||
"is_automated": false,
|
||
"name": "wma55/u1210sshd",
|
||
"star_count": 0
|
||
},
|
||
{
|
||
"description": "",
|
||
"is_official": false,
|
||
"is_automated": false,
|
||
"name": "jdswinbank/sshd",
|
||
"star_count": 0
|
||
},
|
||
{
|
||
"description": "",
|
||
"is_official": false,
|
||
"is_automated": false,
|
||
"name": "vgauthier/sshd",
|
||
"star_count": 0
|
||
}
|
||
...
|
||
]
|
||
</code></pre>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>term</strong> – term to search</li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h2 id="2-3-misc">2.3 Misc</h2>
|
||
|
||
<h3 id="build-an-image-from-dockerfile-via-stdin">Build an image from Dockerfile via stdin</h3>
|
||
|
||
<p><code>POST /build</code></p>
|
||
|
||
<p>Build an image from Dockerfile via stdin</p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> POST /build HTTP/1.1
|
||
|
||
{{ TAR STREAM }}
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/json
|
||
|
||
{"stream": "Step 1..."}
|
||
{"stream": "..."}
|
||
{"error": "Error...", "errorDetail": {"code": 123, "message": "Error..."}}
|
||
|
||
The stream must be a tar archive compressed with one of the
|
||
following algorithms: identity (no compression), gzip, bzip2, xz.
|
||
|
||
The archive must include a file called `Dockerfile`
|
||
at its root. It may include any number of other files,
|
||
which will be accessible in the build context (See the [*ADD build
|
||
command*](/docker/reference/builder/#dockerbuilder)).
|
||
</code></pre>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>t</strong> – repository name (and optionally a tag) to be applied to
|
||
the resulting image in case of success</li>
|
||
<li><strong>remote</strong> – git or HTTP/HTTPS URI build source</li>
|
||
<li><strong>q</strong> – suppress verbose build output</li>
|
||
<li><strong>nocache</strong> – do not use the cache when building the image</li>
|
||
<li><strong>rm</strong> - remove intermediate containers after a successful build (default behavior)</li>
|
||
|
||
<li><p><strong>forcerm</strong> - always remove intermediate containers (includes rm)</p>
|
||
|
||
<p>Request Headers:</p></li>
|
||
|
||
<li><p><strong>Content-type</strong> – should be set to <code>"application/tar"</code>.</p></li>
|
||
|
||
<li><p><strong>X-Registry-Config</strong> – base64-encoded ConfigFile object</p></li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="check-auth-configuration">Check auth configuration</h3>
|
||
|
||
<p><code>POST /auth</code></p>
|
||
|
||
<p>Get the default username and email</p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> POST /auth HTTP/1.1
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"username":" hannibal",
|
||
"password: "xxxx",
|
||
"email": "hannibal@a-team.com",
|
||
"serveraddress": "https://index.docker.io/v1/"
|
||
}
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
</code></pre>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>204</strong> – no error</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="display-system-wide-information">Display system-wide information</h3>
|
||
|
||
<p><code>GET /info</code></p>
|
||
|
||
<p>Display system-wide information</p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> GET /info HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"Containers": 11,
|
||
"Images": 16,
|
||
"Driver": "btrfs",
|
||
"ExecutionDriver": "native-0.1",
|
||
"KernelVersion": "3.12.0-1-amd64"
|
||
"Debug": false,
|
||
"NFd": 11,
|
||
"NGoroutines": 21,
|
||
"NEventsListener": 0,
|
||
"InitPath": "/usr/bin/docker",
|
||
"IndexServerAddress": ["https://index.docker.io/v1/"],
|
||
"MemoryLimit": true,
|
||
"SwapLimit": false,
|
||
"IPv4Forwarding": true
|
||
}
|
||
</code></pre>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="show-the-docker-version-information">Show the docker version information</h3>
|
||
|
||
<p><code>GET /version</code></p>
|
||
|
||
<p>Show the docker version information</p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> GET /version HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"ApiVersion": "1.12",
|
||
"Version": "0.2.2",
|
||
"GitCommit": "5a2a5cc+CHANGES",
|
||
"GoVersion": "go1.0.3"
|
||
}
|
||
</code></pre>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="ping-the-docker-server">Ping the docker server</h3>
|
||
|
||
<p><code>GET /_ping</code></p>
|
||
|
||
<p>Ping the docker server</p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> GET /_ping HTTP/1.1
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: text/plain
|
||
|
||
OK
|
||
</code></pre>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> - no error</li>
|
||
<li><strong>500</strong> - server error</li>
|
||
</ul>
|
||
|
||
<h3 id="create-a-new-image-from-a-container-s-changes">Create a new image from a container’s changes</h3>
|
||
|
||
<p><code>POST /commit</code></p>
|
||
|
||
<p>Create a new image from a container’s changes</p>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> POST /commit?container=44c004db4b17&comment=message&repo=myrepo HTTP/1.1
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"Hostname": "",
|
||
"Domainname": "",
|
||
"User": "",
|
||
"Memory": 0,
|
||
"MemorySwap": 0,
|
||
"CpuShares": 512,
|
||
"Cpuset": "0,1",
|
||
"AttachStdin": false,
|
||
"AttachStdout": true,
|
||
"AttachStderr": true,
|
||
"PortSpecs": null,
|
||
"Tty": false,
|
||
"OpenStdin": false,
|
||
"StdinOnce": false,
|
||
"Env": null,
|
||
"Cmd": [
|
||
"date"
|
||
],
|
||
"Volumes": {
|
||
"/tmp": {}
|
||
},
|
||
"WorkingDir": "",
|
||
"NetworkDisabled": false,
|
||
"ExposedPorts": {
|
||
"22/tcp": {}
|
||
}
|
||
}
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 201 Created
|
||
Content-Type: application/vnd.docker.raw-stream
|
||
|
||
{"Id": "596069db4bf5"}
|
||
</code></pre>
|
||
|
||
<p>Json Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>config</strong> - the container’s configuration</li>
|
||
</ul>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>container</strong> – source container</li>
|
||
<li><strong>repo</strong> – repository</li>
|
||
<li><strong>tag</strong> – tag</li>
|
||
<li><strong>comment</strong> – commit message</li>
|
||
<li><strong>author</strong> – author (e.g., “John Hannibal Smith
|
||
<<a href="mailto:hannibal%40a-team.com">hannibal@a-team.com</a>>“)</li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>201</strong> – no error</li>
|
||
<li><strong>404</strong> – no such container</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="monitor-docker-s-events">Monitor Docker’s events</h3>
|
||
|
||
<p><code>GET /events</code></p>
|
||
|
||
<p>Get container events from docker, either in real time via streaming, or via
|
||
polling (using since).</p>
|
||
|
||
<p>Docker containers will report the following events:</p>
|
||
|
||
<pre><code>create, destroy, die, export, kill, pause, restart, start, stop, unpause
|
||
</code></pre>
|
||
|
||
<p>and Docker images will report:</p>
|
||
|
||
<pre><code>untag, delete
|
||
</code></pre>
|
||
|
||
<p><strong>Example request</strong>:</p>
|
||
|
||
<pre><code> GET /events?since=1374067924
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/json
|
||
|
||
{"status": "create", "id": "dfdf82bd3881","from": "ubuntu:latest", "time":1374067924}
|
||
{"status": "start", "id": "dfdf82bd3881","from": "ubuntu:latest", "time":1374067924}
|
||
{"status": "stop", "id": "dfdf82bd3881","from": "ubuntu:latest", "time":1374067966}
|
||
{"status": "destroy", "id": "dfdf82bd3881","from": "ubuntu:latest", "time":1374067970}
|
||
</code></pre>
|
||
|
||
<p>Query Parameters:</p>
|
||
|
||
<ul>
|
||
<li><strong>since</strong> – timestamp used for polling</li>
|
||
<li><strong>until</strong> – timestamp used for polling</li>
|
||
</ul>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="get-a-tarball-containing-all-images-and-tags-in-a-repository">Get a tarball containing all images and tags in a repository</h3>
|
||
|
||
<p><code>GET /images/(name)/get</code></p>
|
||
|
||
<p>Get a tarball containing all images and metadata for the repository
|
||
specified by <code>name</code>.</p>
|
||
|
||
<p>See the <a href="#image-tarball-format">image tarball format</a> for more details.</p>
|
||
|
||
<p><strong>Example request</strong></p>
|
||
|
||
<pre><code> GET /images/ubuntu/get
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
Content-Type: application/x-tar
|
||
|
||
Binary data stream
|
||
</code></pre>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="load-a-tarball-with-a-set-of-images-and-tags-into-docker">Load a tarball with a set of images and tags into docker</h3>
|
||
|
||
<p><code>POST /images/load</code></p>
|
||
|
||
<p>Load a set of images and tags into the docker repository.
|
||
See the <a href="#image-tarball-format">image tarball format</a> for more details.</p>
|
||
|
||
<p><strong>Example request</strong></p>
|
||
|
||
<pre><code> POST /images/load
|
||
|
||
Tarball in body
|
||
</code></pre>
|
||
|
||
<p><strong>Example response</strong>:</p>
|
||
|
||
<pre><code> HTTP/1.1 200 OK
|
||
</code></pre>
|
||
|
||
<p>Status Codes:</p>
|
||
|
||
<ul>
|
||
<li><strong>200</strong> – no error</li>
|
||
<li><strong>500</strong> – server error</li>
|
||
</ul>
|
||
|
||
<h3 id="image-tarball-format">Image tarball format</h3>
|
||
|
||
<p>An image tarball contains one directory per image layer (named using its long ID),
|
||
each containing three files:</p>
|
||
|
||
<ol>
|
||
<li><code>VERSION</code>: currently <code>1.0</code> - the file format version</li>
|
||
<li><code>json</code>: detailed layer information, similar to <code>docker inspect layer_id</code></li>
|
||
<li><code>layer.tar</code>: A tarfile containing the filesystem changes in this layer</li>
|
||
</ol>
|
||
|
||
<p>The <code>layer.tar</code> file will contain <code>aufs</code> style <code>.wh..wh.aufs</code> files and directories
|
||
for storing attribute changes and deletions.</p>
|
||
|
||
<p>If the tarball defines a repository, there will also be a <code>repositories</code> file at
|
||
the root that contains a list of repository and tag names mapped to layer IDs.</p>
|
||
|
||
<pre><code>{"hello-world":
|
||
{"latest": "565a9d68a73f6706862bfe8409a7f659776d4d60a8d096eb4a3cbce6999cc2a1"}
|
||
}
|
||
</code></pre>
|
||
|
||
<h1 id="3-going-further">3. Going further</h1>
|
||
|
||
<h2 id="3-1-inside-docker-run">3.1 Inside <code>docker run</code></h2>
|
||
|
||
<p>As an example, the <code>docker run</code> command line makes the following API calls:</p>
|
||
|
||
<ul>
|
||
<li><p>Create the container</p></li>
|
||
|
||
<li><p>If the status code is 404, it means the image doesn’t exist:</p>
|
||
|
||
<ul>
|
||
<li>Try to pull it</li>
|
||
<li>Then retry to create the container</li>
|
||
</ul></li>
|
||
|
||
<li><p>Start the container</p></li>
|
||
|
||
<li><p>If you are not in detached mode:</p>
|
||
|
||
<ul>
|
||
<li>Attach to the container, using logs=1 (to have stdout and
|
||
stderr from the container’s start) and stream=1</li>
|
||
</ul></li>
|
||
|
||
<li><p>If in detached mode or only stdin is attached:</p>
|
||
|
||
<ul>
|
||
<li>Display the container’s id</li>
|
||
</ul></li>
|
||
</ul>
|
||
|
||
<h2 id="3-2-hijacking">3.2 Hijacking</h2>
|
||
|
||
<p>In this version of the API, /attach, uses hijacking to transport stdin,
|
||
stdout and stderr on the same socket. This might change in the future.</p>
|
||
|
||
<h2 id="3-3-cors-requests">3.3 CORS Requests</h2>
|
||
|
||
<p>To enable cross origin requests to the remote api add the flag
|
||
“–api-enable-cors” when running docker in daemon mode.</p>
|
||
|
||
<pre><code>$ docker -d -H="192.168.1.9:2375" --api-enable-cors
|
||
</code></pre>
|
||
|
||
</article>
|
||
</section>
|
||
</div>
|
||
<div id="toc" class="large-3 columns toc compact">
|
||
On this page:
|
||
<nav id="TableOfContents">
|
||
<ul>
|
||
<li><a href="#docker-remote-api-v1-14">Docker Remote API v1.14</a>
|
||
<ul>
|
||
<li><a href="#1-brief-introduction">1. Brief introduction</a></li>
|
||
</ul></li>
|
||
<li><a href="#2-endpoints">2. Endpoints</a>
|
||
<ul>
|
||
<li><a href="#2-1-containers">2.1 Containers</a>
|
||
<ul>
|
||
<li><a href="#list-containers">List containers</a></li>
|
||
<li><a href="#create-a-container">Create a container</a></li>
|
||
<li><a href="#inspect-a-container">Inspect a container</a></li>
|
||
<li><a href="#list-processes-running-inside-a-container">List processes running inside a container</a></li>
|
||
<li><a href="#get-container-logs">Get container logs</a></li>
|
||
<li><a href="#inspect-changes-on-a-container-s-filesystem">Inspect changes on a container’s filesystem</a></li>
|
||
<li><a href="#export-a-container">Export a container</a></li>
|
||
<li><a href="#start-a-container">Start a container</a></li>
|
||
<li><a href="#stop-a-container">Stop a container</a></li>
|
||
<li><a href="#restart-a-container">Restart a container</a></li>
|
||
<li><a href="#kill-a-container">Kill a container</a></li>
|
||
<li><a href="#pause-a-container">Pause a container</a></li>
|
||
<li><a href="#unpause-a-container">Unpause a container</a></li>
|
||
<li><a href="#attach-to-a-container">Attach to a container</a></li>
|
||
<li><a href="#attach-to-a-container-websocket">Attach to a container (websocket)</a></li>
|
||
<li><a href="#wait-a-container">Wait a container</a></li>
|
||
<li><a href="#remove-a-container">Remove a container</a></li>
|
||
<li><a href="#copy-files-or-folders-from-a-container">Copy files or folders from a container</a></li>
|
||
</ul></li>
|
||
<li><a href="#2-2-images">2.2 Images</a>
|
||
<ul>
|
||
<li><a href="#list-images">List Images</a></li>
|
||
<li><a href="#create-an-image">Create an image</a></li>
|
||
<li><a href="#inspect-an-image">Inspect an image</a></li>
|
||
<li><a href="#get-the-history-of-an-image">Get the history of an image</a></li>
|
||
<li><a href="#push-an-image-on-the-registry">Push an image on the registry</a></li>
|
||
<li><a href="#tag-an-image-into-a-repository">Tag an image into a repository</a></li>
|
||
<li><a href="#remove-an-image">Remove an image</a></li>
|
||
<li><a href="#search-images">Search images</a></li>
|
||
</ul></li>
|
||
<li><a href="#2-3-misc">2.3 Misc</a>
|
||
<ul>
|
||
<li><a href="#build-an-image-from-dockerfile-via-stdin">Build an image from Dockerfile via stdin</a></li>
|
||
<li><a href="#check-auth-configuration">Check auth configuration</a></li>
|
||
<li><a href="#display-system-wide-information">Display system-wide information</a></li>
|
||
<li><a href="#show-the-docker-version-information">Show the docker version information</a></li>
|
||
<li><a href="#ping-the-docker-server">Ping the docker server</a></li>
|
||
<li><a href="#create-a-new-image-from-a-container-s-changes">Create a new image from a container’s changes</a></li>
|
||
<li><a href="#monitor-docker-s-events">Monitor Docker’s events</a></li>
|
||
<li><a href="#get-a-tarball-containing-all-images-and-tags-in-a-repository">Get a tarball containing all images and tags in a repository</a></li>
|
||
<li><a href="#load-a-tarball-with-a-set-of-images-and-tags-into-docker">Load a tarball with a set of images and tags into docker</a></li>
|
||
<li><a href="#image-tarball-format">Image tarball format</a></li>
|
||
</ul></li>
|
||
</ul></li>
|
||
<li><a href="#3-going-further">3. Going further</a>
|
||
<ul>
|
||
<li><a href="#3-1-inside-docker-run">3.1 Inside <code>docker run</code></a></li>
|
||
<li><a href="#3-2-hijacking">3.2 Hijacking</a></li>
|
||
<li><a href="#3-3-cors-requests">3.3 CORS Requests</a></li>
|
||
</ul></li>
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
|
||
<footer class="main-footer">
|
||
<div class="row">
|
||
</div>
|
||
<div class="row">
|
||
</div>
|
||
<div id="buildinfo">
|
||
Jul 8, 2015 at 6:45pm (PST)
|
||
BUILD_DATA
|
||
</div>
|
||
</footer>
|
||
<link rel="stylesheet" href="/highlight/styles/github.css">
|
||
<script src="/highlight/highlight.pack.js"></script>
|
||
<script>hljs.initHighlightingOnLoad();</script>
|
||
|
||
<script src="/dist/assets/js/all.js"></script>
|
||
<script>
|
||
$( 'nav li:has(ul)' ).doubleTapToGo();
|
||
</script>
|
||
<script>
|
||
|
||
;(function ( $, window, document, undefined ) {
|
||
|
||
var pluginName = 'accordion',
|
||
defaults = {
|
||
transitionSpeed: 300,
|
||
transitionEasing: 'ease',
|
||
controlElement: '[data-control]',
|
||
contentElement: '[data-content]',
|
||
groupElement: '[data-accordion-group]',
|
||
singleOpen: true
|
||
};
|
||
|
||
function Accordion(element, options) {
|
||
this.element = element;
|
||
this.options = $.extend({}, defaults, options);
|
||
this._defaults = defaults;
|
||
this._name = pluginName;
|
||
this.init();
|
||
}
|
||
|
||
Accordion.prototype.init = function () {
|
||
var self = this,
|
||
opts = self.options;
|
||
|
||
var $accordion = $(self.element),
|
||
$controls = $accordion.find('> ' + opts.controlElement),
|
||
$content = $accordion.find('> ' + opts.contentElement);
|
||
|
||
var accordionParentsQty = $accordion.parents('[data-accordion]').length,
|
||
accordionHasParent = accordionParentsQty > 0;
|
||
|
||
var closedCSS = { 'max-height': 0, 'overflow': 'hidden' };
|
||
|
||
var CSStransitions = supportsTransitions();
|
||
|
||
function debounce(func, threshold, execAsap) {
|
||
var timeout;
|
||
|
||
return function debounced() {
|
||
var obj = this,
|
||
args = arguments;
|
||
|
||
function delayed() {
|
||
if (!execAsap) func.apply(obj, args);
|
||
timeout = null;
|
||
};
|
||
|
||
if (timeout) clearTimeout(timeout);
|
||
else if (execAsap) func.apply(obj, args);
|
||
|
||
timeout = setTimeout(delayed, threshold || 100);
|
||
};
|
||
}
|
||
|
||
function supportsTransitions() {
|
||
var b = document.body || document.documentElement,
|
||
s = b.style,
|
||
p = 'transition';
|
||
|
||
if (typeof s[p] == 'string') {
|
||
return true;
|
||
}
|
||
|
||
var v = ['Moz', 'webkit', 'Webkit', 'Khtml', 'O', 'ms'];
|
||
|
||
p = 'Transition';
|
||
|
||
for (var i=0; i<v.length; i++) {
|
||
if (typeof s[v[i] + p] == 'string') {
|
||
return true;
|
||
}
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
function requestAnimFrame(cb) {
|
||
if(window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame) {
|
||
return requestAnimationFrame(cb) ||
|
||
webkitRequestAnimationFrame(cb) ||
|
||
mozRequestAnimationFrame(cb);
|
||
} else {
|
||
return setTimeout(cb, 1000 / 60);
|
||
}
|
||
}
|
||
|
||
function toggleTransition($el, remove) {
|
||
if(!remove) {
|
||
$content.css({
|
||
'-webkit-transition': 'max-height ' + opts.transitionSpeed + 'ms ' + opts.transitionEasing,
|
||
'transition': 'max-height ' + opts.transitionSpeed + 'ms ' + opts.transitionEasing
|
||
});
|
||
} else {
|
||
$content.css({
|
||
'-webkit-transition': '',
|
||
'transition': ''
|
||
});
|
||
}
|
||
}
|
||
|
||
function calculateHeight($el) {
|
||
var height = 0;
|
||
|
||
$el.children().each(function() {
|
||
height = height + $(this).outerHeight(true);
|
||
});
|
||
|
||
$el.data('oHeight', height);
|
||
}
|
||
|
||
function updateParentHeight($parentAccordion, $currentAccordion, qty, operation) {
|
||
var $content = $parentAccordion.filter('.open').find('> [data-content]'),
|
||
$childs = $content.find('[data-accordion].open > [data-content]'),
|
||
$matched;
|
||
|
||
if(!opts.singleOpen) {
|
||
$childs = $childs.not($currentAccordion.siblings('[data-accordion].open').find('> [data-content]'));
|
||
}
|
||
|
||
$matched = $content.add($childs);
|
||
|
||
if($parentAccordion.hasClass('open')) {
|
||
$matched.each(function() {
|
||
var currentHeight = $(this).data('oHeight');
|
||
|
||
switch (operation) {
|
||
case '+':
|
||
$(this).data('oHeight', currentHeight + qty);
|
||
break;
|
||
case '-':
|
||
$(this).data('oHeight', currentHeight - qty);
|
||
break;
|
||
default:
|
||
throw 'updateParentHeight method needs an operation';
|
||
}
|
||
|
||
$(this).css('max-height', $(this).data('oHeight'));
|
||
});
|
||
}
|
||
}
|
||
|
||
function refreshHeight($accordion) {
|
||
if($accordion.hasClass('open')) {
|
||
var $content = $accordion.find('> [data-content]'),
|
||
$childs = $content.find('[data-accordion].open > [data-content]'),
|
||
$matched = $content.add($childs);
|
||
|
||
calculateHeight($matched);
|
||
|
||
$matched.css('max-height', $matched.data('oHeight'));
|
||
}
|
||
}
|
||
|
||
function closeAccordion($accordion, $content) {
|
||
$accordion.trigger('accordion.close');
|
||
|
||
if(CSStransitions) {
|
||
if(accordionHasParent) {
|
||
var $parentAccordions = $accordion.parents('[data-accordion]');
|
||
|
||
updateParentHeight($parentAccordions, $accordion, $content.data('oHeight'), '-');
|
||
}
|
||
|
||
$content.css(closedCSS);
|
||
|
||
$accordion.removeClass('open');
|
||
} else {
|
||
$content.css('max-height', $content.data('oHeight'));
|
||
|
||
$content.animate(closedCSS, opts.transitionSpeed);
|
||
|
||
$accordion.removeClass('open');
|
||
}
|
||
}
|
||
|
||
function openAccordion($accordion, $content) {
|
||
$accordion.trigger('accordion.open');
|
||
if(CSStransitions) {
|
||
toggleTransition($content);
|
||
|
||
if(accordionHasParent) {
|
||
var $parentAccordions = $accordion.parents('[data-accordion]');
|
||
|
||
updateParentHeight($parentAccordions, $accordion, $content.data('oHeight'), '+');
|
||
}
|
||
|
||
requestAnimFrame(function() {
|
||
$content.css('max-height', $content.data('oHeight'));
|
||
});
|
||
|
||
$accordion.addClass('open');
|
||
} else {
|
||
$content.animate({
|
||
'max-height': $content.data('oHeight')
|
||
}, opts.transitionSpeed, function() {
|
||
$content.css({'max-height': 'none'});
|
||
});
|
||
|
||
$accordion.addClass('open');
|
||
}
|
||
}
|
||
|
||
function closeSiblingAccordions($accordion) {
|
||
var $accordionGroup = $accordion.closest(opts.groupElement);
|
||
|
||
var $siblings = $accordion.siblings('[data-accordion]').filter('.open'),
|
||
$siblingsChildren = $siblings.find('[data-accordion]').filter('.open');
|
||
|
||
var $otherAccordions = $siblings.add($siblingsChildren);
|
||
|
||
$otherAccordions.each(function() {
|
||
var $accordion = $(this),
|
||
$content = $accordion.find(opts.contentElement);
|
||
|
||
closeAccordion($accordion, $content);
|
||
});
|
||
|
||
$otherAccordions.removeClass('open');
|
||
}
|
||
|
||
function toggleAccordion() {
|
||
var isAccordionGroup = (opts.singleOpen) ? $accordion.parents(opts.groupElement).length > 0 : false;
|
||
|
||
calculateHeight($content);
|
||
|
||
if(isAccordionGroup) {
|
||
closeSiblingAccordions($accordion);
|
||
}
|
||
|
||
if($accordion.hasClass('open')) {
|
||
closeAccordion($accordion, $content);
|
||
} else {
|
||
openAccordion($accordion, $content);
|
||
}
|
||
}
|
||
|
||
function addEventListeners() {
|
||
$controls.on('click', toggleAccordion);
|
||
|
||
$controls.on('accordion.toggle', function() {
|
||
if(opts.singleOpen && $controls.length > 1) {
|
||
return false;
|
||
}
|
||
|
||
toggleAccordion();
|
||
});
|
||
|
||
$(window).on('resize', debounce(function() {
|
||
refreshHeight($accordion);
|
||
}));
|
||
}
|
||
|
||
function setup() {
|
||
$content.each(function() {
|
||
var $curr = $(this);
|
||
|
||
if($curr.css('max-height') != 0) {
|
||
if(!$curr.closest('[data-accordion]').hasClass('open')) {
|
||
$curr.css({ 'max-height': 0, 'overflow': 'hidden' });
|
||
} else {
|
||
toggleTransition($curr);
|
||
calculateHeight($curr);
|
||
|
||
$curr.css('max-height', $curr.data('oHeight'));
|
||
}
|
||
}
|
||
});
|
||
|
||
|
||
if(!$accordion.attr('data-accordion')) {
|
||
$accordion.attr('data-accordion', '');
|
||
$accordion.find(opts.controlElement).attr('data-control', '');
|
||
$accordion.find(opts.contentElement).attr('data-content', '');
|
||
}
|
||
}
|
||
|
||
setup();
|
||
addEventListeners();
|
||
};
|
||
|
||
$.fn[pluginName] = function ( options ) {
|
||
return this.each(function () {
|
||
if (!$.data(this, 'plugin_' + pluginName)) {
|
||
$.data(this, 'plugin_' + pluginName,
|
||
new Accordion( this, options ));
|
||
}
|
||
});
|
||
}
|
||
|
||
})( jQuery, window, document );
|
||
|
||
$(document).ready(function() {
|
||
$('#multiple [data-accordion]').accordion({
|
||
singleOpen: false
|
||
});
|
||
});
|
||
|
||
</script>
|
||
|
||
|
||
<script src="/dist/assets/js/bootstrap-3.0.3.min.js"></script>
|
||
<script src="/dist/assets/js/archive.js"></script>
|
||
<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>
|
||
|