28 comments

[ 6.3 ms ] story [ 72.8 ms ] thread
Docker's really making a hard PR push huh? They're everywhere lately.
Believe it or not we (docker team) are not behind 80% of that PR - we wake up in the morning and find the stuff on HN just like you :)

Not that I don't appreciate it - I just hope we can deliver on the high expectations!

It seems like they are on HN every day, yes. And I am getting lost. Docker, Dokku, Strider...

I am interested in one thing: continuous deployment of apps that wait until old versions of apps die off (using an IPC channel). Heroku seems to just time out after x minutes. Can someone more knowledgeable than me say how/if the Docker eco system handles this? I am interested in Node.js only.

I'd love to talk about this more. Can you elaborate or point me to the closest version to that reality?
It seems they've hit some sweet spot that helps people get creative ..
There's one thing I don't understand well about docker: I saw people making Graphite containers and the like, but won't all data be erased when you close the container? It seems to me that any sort of persistent data storage on docker is very inconvenient.
But if you are putting something like a database in a Docker container, wouldn't you point the storage of the data files at something a little more permanent?

And for everything else that is just data processing in the stack, ephemeral storage isn't a bad thing (stops developers writing things to disk when they shouldn't).

> But if you are putting something like a database in a Docker container, wouldn't you point the storage of the data files at something a little more permanent?

Of course, but how? Can a docker container somehow write to the host fs? It couldn't, a few weeks ago.

Ah, you see this is what I haven't yet done... but I figured you'd just mount some network attached storage and use that for the data files.

Which may or may not be the host machine, and most likely would be the machine you configure to be next door with more focus on SSDs than CPU.

I also figured, but haven't checked, that Docker will eventually support Vagrant-style shared folders. But maybe this breaks the philosophical design of a container.

Yeah, but that's for production. For staging/dev machines it's not very convenient, and I really don't like special-casing things all the time depending on where I have to deploy... It adds a lot of complexity.

As LoonyPandora said below, apparently they added shared folders recently, so I'll play with that today.

> ...but won't all data be erased when you close the container?

No, containers aren't ephemeral:

  $ docker run -i -t base /bin/bash
  root@d675bee3cbdb:/# echo 'Hello, world!' > /foo   
  root@d675bee3cbdb:/# exit
  $ docker restart d675bee3cbdb
  d675bee3cbdb
  $ docker attach d675bee3cbdb
  root@d675bee3cbdb:/# cat /foo
  Hello, world!
  root@d675bee3cbdb:/#
Weird, they were for me. I guess I was probably starting the base image again? Where do you get the modified id from?
> Weird, they were for me.

Were you using volumes? Currently a container's volumes are reset when the container is restarted. That's fixed in master.

> Where do you get the modified id from?

In this case I just copied it from the container's command prompt. It's also available via docker ps -a:

  $ docker run base sleep 1
  $ docker ps -a
  ID                  IMAGE               COMMAND             CREATED             STATUS              PORTS
  041d889d7bd8        base:latest         sleep 1             5 seconds ago       Exit 0                                
  $
Hmm, no, I wasn't using volumes. I was doing "docker ps", but didn't notice (or didn't know to use) an id, so I just did "docker run Ubuntu etc".
Apparently I don't know how to use docker. You are right, I was just starting the base image every time. Starting it creates a new container which you can find with "ps -a", and you can start/attach to it later the way you said. Thanks for the tip, I need to find a good tutorial or write one.
Is there a "container" system that does not entail a significant performance penalty from using VirtualBox etc?
What are you trying to ask? Docker is using LXC when running on Linux, and LXC is a container system that does not entail a significant performance penalty.

VirtualBox etc. only comes into the picture if you want to run it on a non-Linux box.

Okay, so what about non-Linux then, e.g. Windows?

(Also, apprently LXC guidance is only offered for Ubuntu & Archlinux: http://www.docker.io/gettingstarted/)

I also thought the point was to be able to deploy anywhere. Considerable performance penalty on some platform may hurt the point significantly.

Docker runs on linux only because it uses LXC/cgroups/AUFS, all of which are unique to Linux. FreeBSD Jails and Solaris Zones have the same core concepts that docker uses.
Nitpick: Why use a whale as the logo when the tagline says that it's a "lightweight" container system?
Thank you Nick. I will check it out. In particular I will be interested in how the load balancing happens with zero downtime for already connected clients.