title: Deploy a Docker image without using a repository
body: <p>I'm building a Docker image on my build server (using TeamCity). After the build is done I want to take the image and deploy it to some server (staging, production).</p>
  
  <p>All tutorials i have found either</p>
  
  <ul>
  <li>push the image to some repository where it can be downloaded (pulled) by the server(s) which in small projects introduce additional complexity</li>
  <li>use Heroku-like approach and build the images "near" or at the machine where it will be run</li>
  </ul>
  
  <p>I really think that nothing special should be done at the (app) servers. Images, IMO, should act as closed, self-sufficient binaries that represent the application as a whole and can be passed between build server, testing, Q&amp;A etc.</p>
  
  <p>However, when I <code>save</code> a standard NodeJS app based on the official <code>node</code> repository it has <strong>1.2 GB</strong>. Passing such a file from server to server is not very comfortable.</p>
  
  <p><strong>Q: Is there some way to export/save and "upload" just the changed parts (layers) of an image via SSH without introducing the complexity of a Docker repository?</strong> The server would then pull the missing <em>layers</em> from the public <code>hub.docker.com</code> in order to avoid the slow upload from my network to the cloud. </p>
  
  <p>Investingating the content of a <code>save</code>d tarfile it should not be difficult from a technical point of view. The <code>push</code> command does basically just that - it never uploads layers that are already present in the repo.</p>
  
  <p><strong>Q2:</strong> Do you think that running a small repo on the docker-host that I'm deploying to in order to achieve this is a good approach?</p>