<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="google-site-verification" content="UxV66EKuPe87dgnH1sbrldrx6VsoWMrx5NjwkgUFxXI" />
    <title>{{ meta['title'] if meta and meta['title'] else title }} - Docker Documentation</title>
    <meta name="description" content="{{ meta['description'] if meta }}" />
    <meta name="keywords" content="{{ meta['keywords'] if meta }}" />
    <!-- Swiftype tags: https://swiftype.com/documentation/meta_tags -->
    <meta property='st:popularity' content='4' />
    <meta property='st:type' content='docker_doc' />

    {%- set url_root = pathto('', 1) %}
    {%- if url_root == '#' %}{% set url_root = '' %}{% endif %}

    <script type="text/javascript">
        // This is included here for Javascript that doesn't have access to the templates.
        var doc_version = "{{ current_version }}";
        var doc_slug = "{{ slug }}";
    </script>

    {%- set css_files = css_files + ['_static/css/bootstrap.css'] %}
    {%- set css_files = css_files + ['_static/pygments.css'] %}
    {%- set css_files = css_files + ['_static/css/main.css'] %}

    {%- set script_files =
    ['//code.jquery.com/jquery-1.10.1.min.js']
    + ['//fonts.googleapis.com/css?family=Cabin:400,700,400italic']
    %}

    {#
        This part is hopefully complex because things like |cut '/index/' are not available in spinx jinja
        and will make it crash. (and we need index/ out.
    #}
    <link rel="canonical" href="http://docs.docker.io/en/latest/
    {%- for word in pagename.split('/') -%}
        {%- if word != 'index' -%}
            {%- if word != '' -%}
                {{ word }}/
            {%- endif -%}
        {%- endif -%}
    {%- endfor -%}
    ">

    {%- for cssfile in css_files %}
    <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
    {%- endfor %}

    {%- for scriptfile in script_files if scriptfile != '_static/jquery.js' %}
    <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
    {%- endfor %}
    <link rel="shortcut icon" href="{{ pathto('_static/favicon.png', 1) }}"/>
    {%- block extrahead %}{% endblock %}

</head>

<body>

<div id="wrap">
<div class="navbar navbar-static-top navbar-inner navbar-fixed-top ">
    <div class="navbar-dotcloud">
        <div class="container">

            <div style="float: right" class="pull-right">
                <ul class="nav">
                    <li id="nav-introduction"><a href="http://www.docker.io/" title="Docker Homepage">Home</a></li>
                    <li id="nav-about"><a href="http://www.docker.io/about/" title="About">About</a></li>
                    <li id="nav-gettingstarted"><a href="http://www.docker.io/gettingstarted/">Getting started</a></li>
                    <li id="nav-community"><a href="http://www.docker.io/community/" title="Community">Community</a></li>
                    <li id="nav-documentation" class="active"><a href="http://docs.docker.io/en/latest/">Documentation</a></li>
                    <li id="nav-blog"><a href="http://blog.docker.io/" title="Docker Blog">Blog</a></li>
                    <li id="nav-index"><a href="http://index.docker.io/" title="Docker Image Index, find images here">INDEX <img class="inline-icon" alt="link to external site" src="{{ pathto('_static/img/external-link-icon.png', 1) }}" title="external link"> </a></li>
                </ul>
            </div>

            <div class="brand-logo">
                <a href="http://www.docker.io" title="Docker Homepage"><img src="{{ pathto('_static/img/docker-top-logo.png', 1) }}" alt="Docker logo"></a>
            </div>
        </div>
    </div>
</div>

<div class="container">

    <!-- Docs nav
     ================================================== -->
    <div class="row main-row">

        <div class="span3 sidebar bs-docs-sidebar">
            <div class="page-title" >
                <h4>DOCUMENTATION</h4>
            </div>
            
            {{ toctree(collapse=False, maxdepth=3) }}
	    <form>
	      <input type="text" id="st-search-input" class="st-search-input span3" style="width:160px;" />
          <div id="st-results-container"></div>
	    </form>
        </div>

        <!-- body block -->
        <div class="span9 main-content">

            <!-- Main section
            ================================================== -->
            <section id="global" class="containerblock">
                {% block body %}{% endblock %}
            </section>

            <div class="pull-right"><a href="https://github.com/dotcloud/docker/blob/{{ current_version }}/docs/sources/{{ pagename }}.rst" title="edit this article">Edit this article on GitHub</a></div>
        </div>
    </div>
</div>

<div id="push-the-footer"></div>
</div> <!-- end wrap for pushing footer -->

<div id="footer">
    <div class="footer-landscape">
        <div class="footer-landscape-image">
            <!-- footer -->
            <div class="container">
                <div class="row footer">
                    <div class="span12 tbox">
                        <div class="tbox">
                            <p>Docker is an open source project, sponsored by  <a href="https://dotcloud.com">dotCloud</a>, under the <a href="https://github.com/dotcloud/docker/blob/master/LICENSE" title="Docker licence, hosted in the Github repository">apache 2.0 licence</a></p>
                        </div>

                        <div class="social links">
                            <a class="twitter" href="http://twitter.com/docker">Twitter</a>
                            <a class="github" href="https://github.com/dotcloud/docker/">GitHub</a>
                        </div>

                        <div class="tbox version-flyer ">
                            <div class="content">
                                <small>Current version:</small>
                                <ul class="inline">
                                    {% for slug, url in versions %}
                                    <li class="alternative"><a href="{{ url }}{%- for word in pagename.split('/') -%}
                                        {%- if word != 'index' -%}
                                            {%- if word != '' -%}
                                                {{ word }}/
                                            {%- endif -%}
                                        {%- endif -%}
                                    {%- endfor -%}"
                                    title="Switch to {{ slug }}">{{ slug }}</a></li>
                                    {% endfor %}
                                </ul>
                            </div>
                        </div>


                    </div>
                </div>
            </div>
        </div>
        <!-- end of footer -->
    </div>
</div>


<script type="text/javascript" src="{{ pathto('_static/js/docs.js', 1) }}"></script>

<!-- Swiftype search -->

<script type="text/javascript">
  var Swiftype = window.Swiftype || {};
  (function() {
  Swiftype.key = 'pWPnnyvwcfpcrw1o51Sz';
  Swiftype.inputElement = '#st-search-input';
  Swiftype.resultContainingElement = '#st-results-container';
  Swiftype.attachElement = '#st-search-input';
  Swiftype.renderStyle = "overlay";
  // from https://swiftype.com/questions/how-can-i-make-more-popular-content-rank-higher 
  // Use "page" for now -- they don't subgroup by document type yet.
  Swiftype.searchFunctionalBoosts = {"page": {"popularity": "linear"}};

  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.async = true;
  script.src = "//swiftype.com/embed.js";
  var entry = document.getElementsByTagName('script')[0];
  entry.parentNode.insertBefore(script, entry);
  }());
</script>


<!-- Google analytics -->
<script type="text/javascript">

    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-6096819-11']);
    _gaq.push(['_setDomainName', 'docker.io']);
    _gaq.push(['_setAllowLinker', true]);
    _gaq.push(['_trackPageview']);

    (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
    })();

</script>

</body>
</html>
