Files
docker-docs/userguide/usingdocker/index.html
2017-03-13 17:13:38 -07:00

2068 lines
77 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Working with containers </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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &#39;Hello world&#39;</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="working-with-containers">Working with containers</h1>
<p>In the <a href="/userguide/userguide/userguide/dockerizing">last section of the Docker User Guide</a>
we launched our first containers. We launched two containers using the
<code>docker run</code> command.</p>
<ul>
<li>Containers we ran interactively in the foreground.</li>
<li>One container we ran daemonized in the background.</li>
</ul>
<p>In the process we learned about several Docker commands:</p>
<ul>
<li><code>docker ps</code> - Lists containers.</li>
<li><code>docker logs</code> - Shows us the standard output of a container.</li>
<li><code>docker stop</code> - Stops running containers.</li>
</ul>
<blockquote>
<p><strong>Tip:</strong>
Another way to learn about <code>docker</code> commands is our
<a href="https://www.docker.com/tryit/">interactive tutorial</a>.</p>
</blockquote>
<p>The <code>docker</code> client is pretty simple. Each action you can take
with Docker is a command and each command can take a series of
flags and arguments.</p>
<pre><code># Usage: [sudo] docker [command] [flags] [arguments] ..
# Example:
$ docker run -i -t ubuntu /bin/bash
</code></pre>
<p>Let&rsquo;s see this in action by using the <code>docker version</code> command to return
version information on the currently installed Docker client and daemon.</p>
<pre><code>$ docker version
</code></pre>
<p>This command will not only provide you the version of Docker client and
daemon you are using, but also the version of Go (the programming
language powering Docker).</p>
<pre><code>Client version: 0.8.0
Go version (client): go1.2
Git commit (client): cc3a8c8
Server version: 0.8.0
Git commit (server): cc3a8c8
Go version (server): go1.2
Last stable version: 0.8.0
</code></pre>
<h2 id="get-docker-command-help">Get Docker command help</h2>
<p>You can display the help for specific Docker commands. The help details the
options and their usage. To see a list of all the possible commands, use the
following:</p>
<pre><code>$ docker --help
</code></pre>
<p>To see usage for a specific command, specify the command with the <code>--help</code> flag:</p>
<pre><code>$ docker attach --help
Usage: docker attach [OPTIONS] CONTAINER
Attach to a running container
--help=false Print usage
--no-stdin=false Do not attach stdin
--sig-proxy=true Proxy all received signals to the process
</code></pre>
<blockquote>
<p><strong>Note:</strong>
For further details and examples of each command, see the
<a href="/userguide/userguide/reference/commandline/cli/">command reference</a> in this guide.</p>
</blockquote>
<h2 id="running-a-web-application-in-docker">Running a web application in Docker</h2>
<p>So now we&rsquo;ve learnt a bit more about the <code>docker</code> client let&rsquo;s move onto
the important stuff: running more containers. So far none of the
containers we&rsquo;ve run did anything particularly useful, so let&rsquo;s
change that by running an example web application in Docker.</p>
<p>For our web application we&rsquo;re going to run a Python Flask application.
Let&rsquo;s start with a <code>docker run</code> command.</p>
<pre><code>$ docker run -d -P training/webapp python app.py
</code></pre>
<p>Let&rsquo;s review what our command did. We&rsquo;ve specified two flags: <code>-d</code> and
<code>-P</code>. We&rsquo;ve already seen the <code>-d</code> flag which tells Docker to run the
container in the background. The <code>-P</code> flag is new and tells Docker to
map any required network ports inside our container to our host. This
lets us view our web application.</p>
<p>We&rsquo;ve specified an image: <code>training/webapp</code>. This image is a
pre-built image we&rsquo;ve created that contains a simple Python Flask web
application.</p>
<p>Lastly, we&rsquo;ve specified a command for our container to run: <code>python app.py</code>. This launches our web application.</p>
<blockquote>
<p><strong>Note:</strong>
You can see more detail on the <code>docker run</code> command in the <a href="/userguide/userguide/reference/commandline/cli/#run">command
reference</a> and the <a href="/userguide/userguide/reference/run/">Docker Run
Reference</a>.</p>
</blockquote>
<h2 id="viewing-our-web-application-container">Viewing our web application container</h2>
<p>Now let&rsquo;s see our running container using the <code>docker ps</code> command.</p>
<pre><code>$ docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bc533791f3f5 training/webapp:latest python app.py 5 seconds ago Up 2 seconds 0.0.0.0:49155-&gt;5000/tcp nostalgic_morse
</code></pre>
<p>You can see we&rsquo;ve specified a new flag, <code>-l</code>, for the <code>docker ps</code>
command. This tells the <code>docker ps</code> command to return the details of the
<em>last</em> container started.</p>
<blockquote>
<p><strong>Note:</strong>
By default, the <code>docker ps</code> command only shows information about running
containers. If you want to see stopped containers too use the <code>-a</code> flag.</p>
</blockquote>
<p>We can see the same details we saw <a href="/userguide/userguide/userguide/dockerizing">when we first Dockerized a
container</a> with one important addition in the <code>PORTS</code>
column.</p>
<pre><code>PORTS
0.0.0.0:49155-&gt;5000/tcp
</code></pre>
<p>When we passed the <code>-P</code> flag to the <code>docker run</code> command Docker mapped any
ports exposed in our image to our host.</p>
<blockquote>
<p><strong>Note:</strong>
We&rsquo;ll learn more about how to expose ports in Docker images when
<a href="/userguide/userguide/userguide/dockerimages">we learn how to build images</a>.</p>
</blockquote>
<p>In this case Docker has exposed port 5000 (the default Python Flask
port) on port 49155.</p>
<p>Network port bindings are very configurable in Docker. In our last example the
<code>-P</code> flag is a shortcut for <code>-p 5000</code> that maps port 5000 inside the container
to a high port (from <em>ephemeral port range</em> which typically ranges from 32768
to 61000) on the local Docker host. We can also bind Docker containers to
specific ports using the <code>-p</code> flag, for example:</p>
<pre><code>$ docker run -d -p 80:5000 training/webapp python app.py
</code></pre>
<p>This would map port 5000 inside our container to port 80 on our local
host. You might be asking about now: why wouldn&rsquo;t we just want to always
use 1:1 port mappings in Docker containers rather than mapping to high
ports? Well 1:1 mappings have the constraint of only being able to map
one of each port on your local host. Let&rsquo;s say you want to test two
Python applications: both bound to port 5000 inside their own containers.
Without Docker&rsquo;s port mapping you could only access one at a time on the
Docker host.</p>
<p>So let&rsquo;s now browse to port 49155 in a web browser to
see the application.</p>
<p><img src="/userguide/userguide/userguide/webapp1.png" alt="Viewing the web application" />
.</p>
<p>Our Python application is live!</p>
<blockquote>
<p><strong>Note:</strong>
If you have used the <code>boot2docker</code> virtual machine on OS X, Windows or Linux,
you&rsquo;ll need to get the IP of the virtual host instead of using localhost.
You can do this by running the following outside of the <code>boot2docker</code> shell
(i.e., from your comment line or terminal application).</p>
<pre><code>$ boot2docker ip
The VM's Host only interface IP address is: 192.168.59.103
</code></pre>
<p>In this case you&rsquo;d browse to <a href="http://192.168.59.103:49155">http://192.168.59.103:49155</a> for the above example.</p>
</blockquote>
<h2 id="a-network-port-shortcut">A network port shortcut</h2>
<p>Using the <code>docker ps</code> command to return the mapped port is a bit clumsy so
Docker has a useful shortcut we can use: <code>docker port</code>. To use <code>docker port</code> we
specify the ID or name of our container and then the port for which we need the
corresponding public-facing port.</p>
<pre><code>$ docker port nostalgic_morse 5000
0.0.0.0:49155
</code></pre>
<p>In this case we&rsquo;ve looked up what port is mapped externally to port 5000 inside
the container.</p>
<h2 id="viewing-the-web-application-s-logs">Viewing the web application&rsquo;s logs</h2>
<p>Let&rsquo;s also find out a bit more about what&rsquo;s happening with our application and
use another of the commands we&rsquo;ve learnt, <code>docker logs</code>.</p>
<pre><code>$ docker logs -f nostalgic_morse
* Running on http://0.0.0.0:5000/
10.0.2.2 - - [23/May/2014 20:16:31] &quot;GET / HTTP/1.1&quot; 200 -
10.0.2.2 - - [23/May/2014 20:16:31] &quot;GET /favicon.ico HTTP/1.1&quot; 404 -
</code></pre>
<p>This time though we&rsquo;ve added a new flag, <code>-f</code>. This causes the <code>docker
logs</code> command to act like the <code>tail -f</code> command and watch the
container&rsquo;s standard out. We can see here the logs from Flask showing
the application running on port 5000 and the access log entries for it.</p>
<h2 id="looking-at-our-web-application-container-s-processes">Looking at our web application container&rsquo;s processes</h2>
<p>In addition to the container&rsquo;s logs we can also examine the processes
running inside it using the <code>docker top</code> command.</p>
<pre><code>$ docker top nostalgic_morse
PID USER COMMAND
854 root python app.py
</code></pre>
<p>Here we can see our <code>python app.py</code> command is the only process running inside
the container.</p>
<h2 id="inspecting-our-web-application-container">Inspecting our web application container</h2>
<p>Lastly, we can take a low-level dive into our Docker container using the
<code>docker inspect</code> command. It returns a JSON hash of useful configuration
and status information about Docker containers.</p>
<pre><code>$ docker inspect nostalgic_morse
</code></pre>
<p>Let&rsquo;s see a sample of that JSON output.</p>
<pre><code>[{
&quot;ID&quot;: &quot;bc533791f3f500b280a9626688bc79e342e3ea0d528efe3a86a51ecb28ea20&quot;,
&quot;Created&quot;: &quot;2014-05-26T05:52:40.808952951Z&quot;,
&quot;Path&quot;: &quot;python&quot;,
&quot;Args&quot;: [
&quot;app.py&quot;
],
&quot;Config&quot;: {
&quot;Hostname&quot;: &quot;bc533791f3f5&quot;,
&quot;Domainname&quot;: &quot;&quot;,
&quot;User&quot;: &quot;&quot;,
. . .
</code></pre>
<p>We can also narrow down the information we want to return by requesting a
specific element, for example to return the container&rsquo;s IP address we would:</p>
<pre><code>$ docker inspect -f '{{ .NetworkSettings.IPAddress }}' nostalgic_morse
172.17.0.5
</code></pre>
<h2 id="stopping-our-web-application-container">Stopping our web application container</h2>
<p>Okay we&rsquo;ve seen web application working. Now let&rsquo;s stop it using the
<code>docker stop</code> command and the name of our container: <code>nostalgic_morse</code>.</p>
<pre><code>$ docker stop nostalgic_morse
nostalgic_morse
</code></pre>
<p>We can now use the <code>docker ps</code> command to check if the container has
been stopped.</p>
<pre><code>$ docker ps -l
</code></pre>
<h2 id="restarting-our-web-application-container">Restarting our web application container</h2>
<p>Oops! Just after you stopped the container you get a call to say another
developer needs the container back. From here you have two choices: you
can create a new container or restart the old one. Let&rsquo;s look at
starting our previous container back up.</p>
<pre><code>$ docker start nostalgic_morse
nostalgic_morse
</code></pre>
<p>Now quickly run <code>docker ps -l</code> again to see the running container is
back up or browse to the container&rsquo;s URL to see if the application
responds.</p>
<blockquote>
<p><strong>Note:</strong>
Also available is the <code>docker restart</code> command that runs a stop and
then start on the container.</p>
</blockquote>
<h2 id="removing-our-web-application-container">Removing our web application container</h2>
<p>Your colleague has let you know that they&rsquo;ve now finished with the container
and won&rsquo;t need it again. So let&rsquo;s remove it using the <code>docker rm</code> command.</p>
<pre><code>$ docker rm nostalgic_morse
Error: Impossible to remove a running container, please stop it first or use -f
2014/05/24 08:12:56 Error: failed to remove one or more containers
</code></pre>
<p>What happened? We can&rsquo;t actually remove a running container. This protects
you from accidentally removing a running container you might need. Let&rsquo;s try
this again by stopping the container first.</p>
<pre><code>$ docker stop nostalgic_morse
nostalgic_morse
$ docker rm nostalgic_morse
nostalgic_morse
</code></pre>
<p>And now our container is stopped and deleted.</p>
<blockquote>
<p><strong>Note:</strong>
Always remember that deleting a container is final!</p>
</blockquote>
<h1 id="next-steps">Next steps</h1>
<p>Until now we&rsquo;ve only used images that we&rsquo;ve downloaded from
<a href="https://hub.docker.com">Docker Hub</a>. Next, let&rsquo;s get introduced to
building and sharing our own images.</p>
<p>Go to <a href="/userguide/userguide/userguide/dockerimages">Working with Docker Images</a>.</p>
</article>
</section>
</div>
<div id="toc" class="large-3 columns toc ">
On this page:
<nav id="TableOfContents">
<ul>
<li><a href="#working-with-containers">Working with containers</a>
<ul>
<li><a href="#get-docker-command-help">Get Docker command help</a></li>
<li><a href="#running-a-web-application-in-docker">Running a web application in Docker</a></li>
<li><a href="#viewing-our-web-application-container">Viewing our web application container</a></li>
<li><a href="#a-network-port-shortcut">A network port shortcut</a></li>
<li><a href="#viewing-the-web-application-s-logs">Viewing the web application&rsquo;s logs</a></li>
<li><a href="#looking-at-our-web-application-container-s-processes">Looking at our web application container&rsquo;s processes</a></li>
<li><a href="#inspecting-our-web-application-container">Inspecting our web application container</a></li>
<li><a href="#stopping-our-web-application-container">Stopping our web application container</a></li>
<li><a href="#restarting-our-web-application-container">Restarting our web application container</a></li>
<li><a href="#removing-our-web-application-container">Removing our web application container</a></li>
</ul></li>
<li><a href="#next-steps">Next steps</a></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>