Docker Raises $95M Series D Round for Its Container Platform
techcrunch.com
techcrunch.com
Docker seems to be much closer to Atlassian. Which could well be their biggest competitor one day.
Betting $100M+ needs real return. xD
My tiny company pays them for private repositories as part of our deployment process. (Push to Github, Docker Hub makes automated build, built Docker image gets sent to AWS ElasticBeanstalk). It's worth the $7 a month for the convenience of not doing the builds and hosting the images ourselves.
Not saying it's going to turn into a business model that will justify that valuation, just that it does at minimum provide a value I'm willing to pay a small amount for.
Docker is simply amazing. I'm currently using Grunt to manage the images/containers, but Docker Compose will replace some of that in the future.
That being said, here are what you should expect:
1. It's not a VM. What work in DEV will not work in PRODUCTION. Be ready for some nasty debugging.
2. It's better to use the same OS (e.g. Centos) for both DEV and PRODUCTION.
3. Image sizes are not really small. Docker is consuming around 4GB of space for 6 containers.
4. Sometimes it breaks. I just need to destroy the whole thing and start clean. But that's Grunt ReRerun. And it works nicely.
5. I can update the code base, data, the applications, the whole OSes structure with Grunt ReRun. Takes a couple minutes.
I was resistant to it at first as they'd just started using it in the company when I arrived, but the devs kept talking about how wow it was. Fast forward to today, and not a single dev has it installed on their machine. None of them are interested.
Docker solves problems for developers, and soon it might solve problems in production. But for large deployments, that day is not today.
Binding to a physical interface is required if any of your apps will share port numbers on a host. If you don't have network ACLs that control traffic between VLANs, and you have a discovery service to manage rendezvous, then maybe you can get away without it. But many of us cannot.
I think that your use case is a lot more complex than ours or I'm misunderstanding some part, are you using bare metal servers in your own data center? I'm trying to grasp what's your architecture like so I can see what parallel can I make to ours.
Honestly, the only issue when it comes to image size is the initial developer pull either when they onboard to a team or when they bork their boot2docker install (which, disturbingly, happens way too often).
docker -d -p 80:8000 repo/container
isn't this good enough? Can you give more detailed example?It's a little overkill if you're running it on a single machine, but in a real production environment, it's a pretty lightweight solution.
Compared to VMs we adopted a lot more of a "this is disposable" mindset, we persist any data that must not be destroyed in a failure in an external volume and treat the instance and service as something unreliable, pretty much it's always "Game Day", before deploying something we've already tried to cover the basics of HA (what happens if this service suddenly stops? How is the rest of the system behave? How do we make it automatically restart or reprovision?).
As I said, most of our issues regarded CoreOS (especially running with btrfs, getting out of space for metadata was a pain in the ass for months) but right now, after moving to ext4 + overlayfs we've been running without issues for a combined 28,800 hours of instance time (roughly NO issue in half a month in an environment running 30+ deploys a day).
I've not stated that we're perfect, very far from it, but Docker itself has not been a pain in production. Our private registry is currently running in an Ubuntu-based instance for more than 6 months non-stop (and we push/pull a lot of data from it everyday).
There is nothing particularly magical about Docker that means you can't consider VMs equally as disposable. It's a mindset change about how you build your product, not something inherent to Docker. It's the original concept behind AWS's EC2 - treat your VMs as disposable, and store state elsewhere.
We've had to write (and continue to write) a lot of code to work around limitations and bugs. We've replaced the registry with custom code, written a lot of code to "manage" the Docker daemon, had to do some funny business to make logging work, are constantly integrating other components (such as weave) to work around Docker limitations, and my God the bugs...
I can deal with the limitations. It's the fundamentals that are the real problem (bugs, memory leaks, descriptor problems, aufs issues, the fucking registry). Docker, Inc. keep chasing new features over fixing the fundamentals. That's their choice, but it's unfortunate for us because, well, I have to go restart a few Docker daemons now because of that memory leak, yet again.
I expect these issues to be resolved eventually and there isn't a better alternative (the ones that exist have their own issues) so we take the pain and wait patiently for things to get better.
The usability of Docker gets so much worse as soon as you get outside the happy examples, too. Like, the one that most recently bit us: Docker is considered a "1.x product" and I have to hardcode a registry URI into the Dockerfile instead of something sane like a host-level search path--like all package managers have done for forevers now-and the suggested option by a Docker developer (and I'm not slagging him, he tried to help and I really appreciate that, it's not his fault this is stupid) was to muck around with DNS to redirect a single hostname to different places within my environment.
Couple the constant friction of usage with the security questions throughout the system (single giant garbage executable that needs root for absolutely everything instead of principle of least privilege, and--oh!--looks like user namespaces slipped to 1.7, awesome!) and I'm not feeling confident in my use of Docker. I feel like they'd rather market than fix.
- I am reminded of this article, and the dismissive replies by the author (a Docker employee and committer) here on HN: https://blog.jessfraz.com/posts/docker-containers-on-the-des... https://news.ycombinator.com/item?id=9086751
That said, this is a hard problem and it is going to take some time for all the issues to shake themselves out. Rocket also has a long way to go before they are production ready. I'm hopeful they'll provide a nice alternative in the long run, but today their platform is just as sketchy.
When I say the bugs will be fixed, I mean they will be fixed, but not necessarily by Docker, Inc. The larger community will have its way as it always does.
Sure there is. Systemd will actually do this for you.
Docker recently eschewed LXC, and I'm still not sure I understand exactly why, but even after the move to libcontainer, systemd is capable of handling this.
If you mean a scenario where Docker launches systemd, we don't do that. In my view Docker is just a packaging system; each container's pid 1 is the app we're deploying.
No, systemd is actually capable of running Docker containers directly (even without Docker).
I definitely wouldn't recommend running systemd inside a container unless you're using systemd to launch the container (instead of Docker), since Docker doesn't handle init systems very well, whereas systemd has this built-in. Though you can also go with the one-app-process-per-container approach as well with systemd, which also works.
http://www.freedesktop.org/software/systemd/man/machinectl.h...
Granted I can go without it, but currently it makes lots of sense to use it since I need the ability to nicely handle dependencies.
I'm using Grunt for handling the creation, destruction and running of the containers. Docker Compose didn't exist back then.
he told me that the company still hasn’t spent most of its Series B funding yet
They raised a $15M Series B that they haven't even burned through, and yet they've raised a $40M Series C and another $95M D round? That is crazy.Raising money when the VCs are willing to throw it at you is a good strategy when you know you'll burn through alot.
Yes. Doesn't it also indicate that you are giving a lot of the company up at the current valuation? ie: you are betting that a (near-term) future valuation is lower, so you want to lock in the money now.
Or, you know, you think the money now effects the long-term valuation such that, if the current owners are giving up x proportion of the company in the proposed round, with v0 as the anticipated future value of the company if the round doesn't happen and v1 as the anticipated future value if it does, the owners think that v0 < v1×(1-x)
All of this was free. Setting up a private registry takes about thirty minutes. Orchestration via ansible is also free.
I'm "calling top" in the most cheeky way possible, so be need to get your back up. I love docker and use it heavily. It is a brilliant product, but the brilliance to me is also in the fact that you really don't need much else beyond the basics. And I realize that they are moving incredibly fast and there is potential to see something that will blow my mind and cause me to open my wallet.
If you're an enterprise user coming from Microsoft world, maybe paying for docker services makes sense. I prefer to just take an hour and do it myself for the cost of infrastructure.
- Those of you using it in production, how are you handling security?
- How secure has Docker proven to be in general?
It's an interesting phrase: 'to officially be used in production'. Who is the official that officially signs docker to be ready? ;-)
You can argue that the docker daemon itself (which is a big monolithic process running as root) is a security issue (RedHat certainly do). You can also argue that it makes security processes harder, as you dont have workflows in place to audit containers, make sure they are updated etc, but thats a different issue.
User namespaces are going to be really complicated to work with not really convinced they are the panacea people expect. Not running as root is much easier!
[0] https://github.com/docker/docker-registry/blob/0.9.1/Dockerf...
This distinction is important because it's why, in practice, Docker's current approach has proven to be more secure than user namespaces. User namespaces allow various operations that would be outright denied under a Docker container's very-real-but-very-limited root user.
However, yes, user namespaces are coming to Docker. It's a highly desired feature and eventually userns will mature.
Very little compared to hardware-assisted virtualization like KVM. Unfortunately LXC containers are not designed with security in mind and, together with the rest of the kernel, provide a big attack surface.
Might just be limited to my use case for Docker, but so far it's security agnostic.
So far I've perceived Docker to be like virtualenv for python - useful but orthogonal to any security practices.