In detached mode (-d=true or just -d), all I/O should be done
through network connections or shared volumes because the container is
no longer listening to the command line where you executed docker run.
start the process in the container and attach the console to
the process's standard input, output, and standard error. It can even
pretend to be a TTY (this is what most command line executables expect)
and pass along signals.
For interactive processes (like a shell) you will typically want a tty
as well as persistent standard input (STDIN), so you'll use -i -t
together in most interactive cases.
The Docker server is a daemon that does all the heavy lifting: building and downloading images, starting and stopping containers, and the like. It exposes a REST API for remote management.
The Docker client is a command line program that communicates with the Docker server using the REST API.
interact with Docker by using the client to send commands to the server.
The machine running the Docker server is called the Docker host
Docker uses features only available to Linux, that machine must be running Linux (more specifically, the Linux kernel).
boot2docker is a “lightweight Linux distribution made specifically to run Docker containers.”
Docker server will run inside our boot2docker VM
boot2docker, not OS X, is the Docker host, not OS X.
Docker mounts volumes from the boot2docker VM, not from OS X
initialize boot2docker (we only have to do this once):
The Docker client assumes the Docker host is the current machine. We need to tell it to use our boot2docker VM by setting the DOCKER_HOST environment variable
All of these task runners (or build systems if you want to call them that) try to abstract some kind of task paradigm away into their own siloed incantations.
Gulp isn't the only culprit either; Jake, Broccoli, Brunch and Mimosa all require plugins to install as well, which means when using any of these task runners, you're essentially just installing 1 more dependency (the task runner) than if you had no task runner, and just used each of the projects own binaries
Etcd and Zookeeper provide essentially the same functionality. They are both a strongly consistent key/value stores that support notifications to clients of changes. These two projects are limited to service discovery
So lets say you had a client application that would talk to a node application that could be on any number of servers. What you could do is hard code that list into your application and randomly select one, in order to "fake" load balancing. However every time a machine went up or down you would have to update that list.
What Consul provides is you just tell your app to connect to "mynodeapp.consul" and then consul will give you the proper address of one of your node apps.
Consul and Skydock are both applications that build on top of a tool like Zookeeper and Etcd.
What a developer ideally wants to do is just push code and not have to worry about what servers are running what, and worry about failover and the like
What Flynn provides (if I get it), is a diy Heroku like platform
Another project that I believe may be similar to Flynn is Apache Mesos.
a self hosted Heroku
Google Omega is Google's answer to Apache Mesos
Omega would need a service like Raft to understand what services are currently available
Raft is a consensus algorithm for keeping a set of distributed state machines in a consistent state.
I want to use Docker, but it has no easy way to say "take this file that contains instructions and make everything". You can write Dockerfiles, but you can only use one part of the stack in them, otherwise you run into trouble.
" So lets say you had a client application that would talk to a node application that could be on any number of servers. What you could do is hard code that list into your application and randomly select one, in order to "fake" load balancing. However every time a machine went up or down you would have to update that list. What Consul provides is you just tell your app to connect to "mynodeapp.consul" and then consul will give you the proper address of one of your node apps."