title: Docker image versioning and lifecycle management
body: <p>I am getting into Docker and am trying to better understand how it works out there in the "real world".</p>
  
  <p>It occurs to me that, in practice:</p>
  
  <ul>
  <li>You need a way to version Docker images</li>
  <li>You need a way to tell the Docker engine (running on a VM) to stop/start/restart a particular container</li>
  <li>You need a way to tell the Docker engine which version of a image to run</li>
  </ul>
  
  <p>Does Docker ship with built-in commands for handling each of these? If not what tools/strategies are used for accomplishing them? Also, when I build a Docker image (via, say, <code>docker build -t myapp .</code>), what file type is produced and where is it located on the machine?</p>