Docker 1.3 is out
blog.docker.com
blog.docker.com
https://groups.google.com/forum/#!topic/docker-announce/aQoV...
For those wanting to avoid upgrading to a new boot2docker release you can patch the vulnerability with the following command from the boot2docker shell:
sudo sed -i "s/DOCKER_TLS:=''/DOCKER_TLS:=auto/g" /etc/init.d/docker && sudo /etc/init.d/docker restart
This will enable TLS by default and restart the docker daemon. Note that this will also kill all of your running containers.Isn't it quite normal for an "app" to consist of multiple processes? Maybe a web server, app server, database system, message queue, object store, cron jobs and the like.
Most of the time these processes only need the network to communicate with each other. When there is a legitimate reason for processes to share the same filesystem, process namespace or network address (for example for debugging), that's when `docker exec` becomes helpful.
Certainly, I think of an SOA app being composed of multiple services, and I'm pretty sure the thing you're suggesting that the thing you want one of in the container is what I'm calling a service.
But I thought the whole idea of Docker was I could download something like a "Wordpress image" from the Docker marketplace, and it would just work in a self-contained way. Unless there is some higher level tool to download multiple Docker images for different apps and configure them together to provide a service of some kind.
For now you need 3d-party tools to define their own multi-container constructs, like Fig or Kubernetes. Eventually Docker needs to implement a multi-container construct of its own, to avoid fragmentation (interoperable containers are not as useful if they're bundled in non-interoperable wrappers). Luckily, the authors of Fig work at Docker and we're working closely with the authors of Kubernetes. So if you use either of those tools, you will probably be familiar with the native Docker version :)
If you want to start multiple separate processes, then you'll need to use some sort of init system. This is not really any different than Linux itself.
* Feature preview of digitally signed images
* Process injection with `docker exec`
* More flexible container lifecycle with `docker create`
* Shared directories on Mac OS X thanks to boot2docker
* Fine-grained security options
https://github.com/docker/docker/blob/master/trust/trusts.go...
Ideally docker users could sign their own images and provide their own keys to do signature validations. What is the timeline on this work? With out this, "digitally signed images" means "locked into Docker, Inc- otherwise no security", and is very misleading.
A very basic implementation would be to read certs out of a directory on the filesystem and is how all other package managers handle this.
Edit: I missed the part in the post that even if the signature fails, the container still runs. The signatures do nothing. Got it. Preview.
The only reason we're starting with verification-only, and only for images produced by the official library maintainers, is because the other side of the tools (signing) are not yet ready to be merged in Docker. By releasing a subset now, we can start getting some feedback and ironing out the quirks, while the contributors finish their work on the signing tools, using the library maintainers as guinea pigs. Hope this helps.
PS. to state the obvious, all of this is taking place in the open on #docker-dev in Freenode. It is being designed by key contributors from multiple companies, and you are welcome to join the fun.
I can already see that `docker exec` and `docker create` will allow me to get rid of a number of admin and configurator containers.
When I started playing around with boot2docker, I was gagging for the ability to share directories with OS X. However, it turns out that I didn't really need that once I realised that caching means that building images is very fast.
I'd hesitate before calling it a "security problem" with Docker. It's a highly-requested security feature. The absence of it makes containers less secure, but does not make them vulnerable. There are use-cases for Docker without user namespaces, but user namespaces will make Docker better and will make containers more secure.
We do distinguish between the security of the Docker engine and the pieces of our ecosystem and the security of containers themselves. We seek to improve both.
Vulnerabilities such as the one fixed today in boot2docker 1.3 whereby either web browsers or containers may control the Docker daemon and perform remote code execution are serious issues in Docker itself and/or its ecosystem of products. Resolving such vulnerabilities is not, for me, less important than adding user namespaces.
"One release per month. Every first week of the month, we release a new version of Docker. For example, in the first week of March we will release 0.9."
looking at https://github.com/docker/docker/blob/master/CHANGELOG.md it does not fit very well
EDIT: Its slightly off, but still about one a month
Our other sites, including the Docker website and the Docker Hub already have relatively aggressive cipher suites and have disabled SSLv3, protecting it from POODLE.
(py)cmbpr:~ caleb$ boot2docker upgrade Downloading boot2docker ISO image... Latest release is v1.3.0 Success: downloaded https://github.com/boot2docker/boot2docker/releases/download... to /Users/caleb/.boot2docker/boot2docker.iso Waiting for VM and Docker daemon to start... .............................. Started. Writing /Users/caleb/.docker/boot2docker-vm/ca.pem: Writing /Users/caleb/.docker/boot2docker-vm/cert.pem: Writing /Users/caleb/.docker/boot2docker-vm/key.pem:
To connect the Docker client to the Docker daemon, please set: export DOCKER_HOST=tcp://192.168.59.103:2376 export DOCKER_CERT_PATH=/Users/caleb/.docker/boot2docker-vm
(py)cmbpr:~ caleb$ boot2docker version Client version: v1.2.0 Git commit: a551732 (py)cmbpr:~ caleb$
See: https://github.com/boot2docker/boot2docker-cli/issues/294
Is this really cheaper and more effective than cleaning up your code base so that it doesn't require complete ownership of the host environment in order to run?
Normally what I've seen is, develop on OSX and then push to Heroku (Linux) / <infrastructure provider of choice, running a Linux VM>. Why then wouldn't the natural progression be, develop in boot2docker and push to <docker PASS of preference>?
But almost always the module or service that you work on relies on other services and datastores. boot2docker can help you pull down an entire stack to your workstation and not rely on connecting to an external network. You can essentially work on Airplane mode.
They probably like OS X as a workstation OS, and want to use Docker for the DevOps benefits that they gain from it. boot2docker is just a lightweight solution for running Docker locally.