Dotcloud becoming Docker
blog.docker.io
blog.docker.io
Clearly there's a diversion of resources away from the dotCloud PaaS to Docker, and that's going to have a toll somewhere. Despite the company's reassurances that everything is business as usual, I know that Docker [the project] is just too much of a beast and eventually the Docker [the company] will need to move on from the PaaS. (I should know, since I gave a talk about how "Docker is the future" just a few weeks after Docker was announced.) [0]
I'm not really sure what my choices are now, either; DigitalOcean, I guess? I don't want to manage servers myself, and I want to be able to pay on the memory-usage axis for my app instances (which Heroku doesn't allow). I wasn't super excited by DO last year, but maybe things have changed.
My current "light at the end of the tunnel" is hoping that the Docker-based PaaS ecosystem matures, but for now none of them seem like they're mature enough, and it's tough to keep up with all of them since it seems like another one pops up each week.
Here's my wishlist:
-- (1) command-line client for deployment via git repository and doing anything related to deployment (add new instances, remove instances, create new environments, assign domains to the PaaS router, etc.)
-- (2) clear pricing
-- (3) I can pay for more memory as I need it
-- (4) ability to specify environment variables in a configuration file that take effect on the container process
-- (5) web interface for administering the account
Anyone have any recommendations?
[0] http://spreecommerce.com/blog/spreeconf-DC-speaker-highlight...
I imagine it'll be easy-ish to migrate between Docker-based PaaS's, though; just upload the container and change the provider-specific config, right? So that's a little reassuring.
I struggle to find a PaaS as well, but I think we should have an appreciation of what the market is like, and what it takes to stand out and carve out a business for yourself these days.
Marco's thoughts on web hosting are probably still relevant on the subject of PaaS: http://www.marco.org/2013/10/15/godaddy-mt.
If you feel like you want to get ready for running on another platform, or using Docker as it matures, then I'd suggest the first step would be to move your databases to a neutral third party provider. With that in place, you can still run your code on the dotCloud PaaS, or anywhere else. As Docker and the ecosystem around it mature, there will be many more options.
I work for Docker Inc on the dotCloud PaaS and manage the support. If you have more private questions, you can reach us at support@dotcloud.com
/Andy
Still, my concern isn't about the quality of the dotCloud PaaS going down -- it's pretty high already, and I don't have any plans to move immediately.
Instead, I'm more concerned about the shift in general. You know as well as anyone that software that doesn't get love and care eventually rots, and the blog post explicitly says that the focus is now on Docker and away from the PaaS.
From that, I infer that the PaaS is eventually going to have to go away as is the natural order of things. Since my company depends critically on that piece of infrastructure, I need to make sure I'm covering my bases with an exit strategy if you do decide to turn out the lights on the PaaS, or at least make sure I've thought about what to do as an alternative.
I also hope you guys make a bajillion dollars on Docker. It's really an excellent idea whose time has come.
I would worry about an exit strategy too if I were in your shoes - but just know that your trust and success as a customer matters more to us than any bajillion of dollars we would stand to make if we betrayed it.
In fact I'm pretty sure we can "make a bajillion dollars" and continue to earn your trust :)
Thanks for doing business with us John! Docker is in part thanks to you.
I guess DO is good for that stuff (at the very least! - I'm sure they're good in general as well, I've actually been reading/discussing them a lot - mostly for hobby projects though).
EDIT: Forgot about dokku/flynn as a PaaS (plugin?). Also learned about other services in the thread which I'll be looking at.
"While Docker, Inc. will continue to offer PaaS services under the dotCloud brand, we will be devoting the vast majority of our resources towards growing Docker and the Docker ecosystem, and have fundamentally re-oriented our business model towards Docker-related products and services."
dotCloud is quite stable and mature, so running and maintaining it at the quality standards of our customers (including support, 24/7 ops, bug fixes, etc.) requires surprisingly little resources. Little enough that we can "devote the vast majority of our resources towards growing Docker" while continuing to offer a quality product.
My argument to support this is that we have actually been doing this for 6 months, and so far there hasn't been any kind of exodus - in fact we have many more paid customers than we had 6 months ago :)
I think this is one of the reasons the public PaaS market is difficult: at the end of the day, past the excitement of developing a new app, people will pay for a reliable service that doesn't get in their way - not for the bells and whistles. It is very difficult to differentiate a paas on features.
It is kind of a strange situation. You're clearly the leader in hosted Docker PaaS at the moment. However, you're also promoting an ecosystem where all these Docker based startups are springing up, like deis.io. Why won't you be out innovating them? I fear you'll be moving down the stack, and letting others fill the PaaS role. It isn't clear to me how you're going to make money out of Docker (perhaps it isn't to you either).
I say this as someone who was going to be deploying my first Django app in a couple of weeks. I have a dotcloud account, and had messed around a little. That was my deployment plan. However, I spent tonight reading the Heroku docs. It seems at some level you realize you've lost out to Heroku, and have pivoted to this shiny thing that is getting lots of traction. That's great, and I'm sure that is the right path to take business wise. However, it doesn't sound like your current dotcloud customers will get any particular benefits from the great Docker fueled future.
I've been trying out digitalocean, but they make me nervous about reliability. Twice in 2 weeks I've gotten nonsensical abuse notifications (spamming, copyright infringement). One of the complaints was only 10 minutes after I spun up a droplet - my deploy script hadn't even finished. Makes me very nervous that DO will shut off all my droplets due to complaints about what the guy who previously owned the IP address did.
MPAA-based failure is far harder to plan for than disk failure.
> cd app/production > vagrant up --provider=digital_ocean
?
If you're just looking to deploy a single application on Digital Ocean or some other VPS, the digitalocean plugin for knife will really help out (https://github.com/rmoriz/knife-digital_ocean).
EDIT: In regards to Stackato...
-- (1) command-line client for deployment via git repository and doing anything related to deployment (add new instances, remove instances, create new environments, assign domains to the PaaS router, etc.)
We have a CLI for doing this, as well as a web API and a Python library for communicating with the API (see https://github.com/bacongobbler/python-stackato)
-- (2) clear pricing
We have a clear memory-based pricing plan. This allows users to scale out their infrastructure to as many nodes as they like, and only have to manage their total memory in their clusters to figure out pricing.
-- (3) I can pay for more memory as I need it
It's on your own hardware. EC2/Rackspace/VMWare pricing depends on their model.
-- (4) ability to specify environment variables in a configuration file that take effect on the container process
We have a couple of default env vars in the application container, as well as letting users configure their own envvars. See http://docs.stackato.com/reference/environment.html and http://docs.stackato.com/reference/stackatoyml.html
-- (5) web interface for administering the account
We have both the CLI, the API, and a web interface. Check out our YouTube channel at http://www.youtube.com/user/ActiveStateSoftware for tutorials around the Stackato console, or just take a look at http://docs.stackato.com/ :)
Disclaimer: I work as a product manager for ActiveState, working on Stackato. We'd love to have you over here! We're also on Freenode, channel #stackato if anyone is interested in this stuff :)
If your app/service is architected to make spinning up a new 1G or 2G instance when your 512M one is running short of resources, "faking" 3 would work. I'm not sure where I'd start looking if I needed a web interface for it all though…
I also want to confirm that, yes, the trust and satisfaction of our customers matters more to us than any amount of money. You can always make more money later, but once trust is gone, it's gone. So expect us to work ourselves to exhaustion to continue to earn the trust of our paas customers, no matter how crazy things get with Docker (and I can tell you it's only going to get crazier!)
Instead, they are taking something they built that is really interesting to a lot of people and building a business around it. As someone who is quite interested in docker, I'm glad that they are turning it into a real business. This benefits pretty much everyone who wants to see docker succeed.
Also, it's really smart that they are keeping dotCloud alive. It would be incredibly irresponsible for them to kill that business just to push faster on docker.
Because, at least in my humble opinion, it's actually better than Heroku?
Because, at a minimum, cutting it off at the knees would engender tons and tons of bad will amongst their current customers?
Because the customers deserve a couple of 'writing on the wall' style posts like this to begin thinking about migrating to alternatives before the cutoff is actually announced, forcing their hand in what could be 'too short a time period' to get migrated?
The more time they buy their existing customers before dismantling what works, and what people are paying them for, the better.
That said, this is the 'writing on the wall' that people should be looking for alternatives, at the barest minimum.
But we'll see, I guess.
Frankly, docker could be (and probably is) a great marketing tool for them to basically say, "Docker is great, and if you are looking for a cloud hosting, check out dotCloud." Even if docker related services don't make a lot of money right away, dotCloud is something that is making them money today.
This statement occurs in the docker README[0]. If at all possible, one would want to keep such channeling of potentially offensive government policy out of an open source software project's public documentation. For one thing, there are many enthusiastic open source programmers residing in the above list of countries.
The NOTICE[1] document explains that
Like all software products that utilize cryptography, the export and use of Docker is subject to the U.S. Commerce Department's Export Administration Regulations (EAR) because it uses or contains cryptography (see http://www.bis.doc.gov/index.php/policy-guidance/encryption). Certain free and open source software projects have a lightweight set of requirements, which can generally be met by providing email notice to the appropriate U.S. government agencies that their source code is available on a publicly available repository and making the appropriate statements in the README.
I'm not familiar with seeing other open source projects from American organizations state that they may not be downloaded in the above list of countries. Is the use of cryptography in docker different in a way that makes the docker organization more at risk from legal challenges from the federal government in this regard, or are docker being anal and xenophobic in blithely displaying this notice?
[0] https://github.com/dotcloud/docker/blob/master/README.md
IANAL, but it seems prudent to acknowledge that the crypto work was done in the USA and therefore falls under the export policy that ALL exportable software falls under. My company has to include this warning on its software and we even have two different versions (domestic and export) to deal with this issue.
I know it's unpopular, but why make Docker answer for it? Take it up with the USG if it makes you that unhappy.
Better yet, strip out all the non-exportable code, replace it with code written from outside the USA and presto-changes, you've solved a problem for the whole world.
But we triple-checked with our legal counsel and they confirmed it's the only way to stay unambiguously out of trouble. As un-tasteful as it is, it's better than causing unnecessary legal trouble for docker contributors down the road.
If you're interested in the subject here's an edifying expose of the situation: http://harpers.org/blog/2013/08/andrew-cockburn-on-the-failu...
Coincidentally we just tweaked the language to match Apache and OpenSSL. It's pretty similar, but doesn't specifically name countries - it just refers to "whatever the rules happen to be under US regulation".
https://github.com/dotcloud/docker/commit/b48fc9657976091ff3...
I'd like to ask one question though - It seems that it's possible to limit the amount of cpu and memory of each container, but not so with the filesystem. I know this is some issue related to AUFS being used internally. But I would really like to know whether there is _any_ hack that allows us to limit the size of the filesystem, or whether it's in the pipeline?
Take a look at how I built tryrethink.info (which covers this topic and more) -> http://nick.stinemat.es
Docker 0.7 will let you do that, since each container will have its own (thin) block device, and therefore have a default size limit (which can be trivially bumped up if needed, of course).
Now to anticipate your next question (assuming it is "when will Docker 0.7 be available?"), the answer would be "pretty soon", since the core team is ironing out the last issues before merging to master and releasing :-)
In general, Docker encapsulates and runs your processes and file systems in an exactly repeatable way, and in a format that you can replicate across a wide variety of machines.
What does it add over linux containers?
Ecosystem - more and more people every day are integrating with their tools, building business around Docker, or extending support of existing business to Docker.
It's an great thing to point to when a startup doesn't want to invest any time into getting their fundamental product right and just want to hack together using existing and known technologies.
Only months ago at PyCon Solomon Hykes was showing off Docker to the public for the first time:
http://www.youtube.com/watch?feature=player_embedded&v=wW9CA...
But i think in the next months many new PaaS services will rise, thanks to docker ;-)
And i hope many new without amazon (amazon is not bad, but expensive).