Docker Betas for AWS, Azure, Mac, and Windows
blog.docker.com
blog.docker.com
This is mostly because turn-key kubernetes on GCE is light years ahead of what ECS provides. It almost makes amazon's offering seem like a joke.
This might level the playing field a bit by having Docker itself provide the infrastructure management software instead of it being tied to a particular service.
Just having Docker won't give you the same that you can get from AWS RDS, S3, Glacier, Redshift, Route 53, etc.
While native Docker clustering is cool in theory, I think the vast amount of complexity around networking makes it unsuitable for production deployments at this time. If stability is more important than bells and whistles, ECS is great choice. Docker's production story, outside of simply running containers, has a lot to be desired.
DNS + a load balancer is proven and stable. We have 65,536 available ports on linux, and doing port mapping to prevent conflicts across containers is trivial (Empire handles this for us). Client side service discovery is usually unnecessary for most Docker use cases (stateless services), where a load balancer is a better fit (why push load balancing to clients? Would you expect your browser to have to load balance when visiting google.com?).
I'm sure there are cases where networking overlays are a good fit, I just haven't found one yet.
> I'm assuming you're referring to instabilities in Docker networking
I don't know... whichever instabilities you were thinking of when you said "If stability is more important than bells and whistles..."http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create...
one nick against beanstalk is that it could be faster doing all those things, but it's tolerable considering alternatives.
- Elastic Beanstalk does not provide a native Docker experience. You're forced to use AWS own way of defining services and dependencies (Dockerrurn.aws.json, which comes in two versions). This means you cannot longer use docker-compose, and not all of the options from `docker run` are available (logging driver, privileged containers, though I think the ability to run privileged containers was recently added).
- From my personal experience deployment times can be unacceptable long ranging from 5 - 20 mins. They get longer as you add more instances to the environment or if the instances are not powerful enough.
I think Elastic Beanstalk makes a good choice for starters or for not so mission-critical applications.As a result of the points explained above I'm now looking into more Docker-centric solutions such Rancher/Kubernete or Docker's UCP.
After further review, they don't seem to have a product similar to SNS, looks like I might be able to do most of the same things with Pub/Sub though.
The K is for Kubernetes :)
Similar from what I can tell with CloudSearch being superceded by Elasticsearch Service. Although their version of elasticsearch is ~2 years old and hasn't been updated since they launched the service, so this may be a case where neither are getting any attention.
The worst part is, AWS support is so tight-lipped in the forums and over web support that there's no way to tell what is still fully supported and what's being silently put out to pasture. You have to look for hints based on what products they're doing webinars about, looking at the momentum of what products they're making tweaks to in the weekly update emails, etc.
Interested to know because we're considering cloud providers.
Isn't there usually some sort of "disclosure: I work for Google"? Your post-history seems very one-sided. :)
I could make a long list with such issues... If the price is the most important factor and you need basic cloud features and you are fine with a beta label GCP may work for you, otherwise you should look elsewhere.
https://news.spotify.com/us/2016/02/23/announcing-spotify-in...
Also a ton of third-party tools and documentation are built with aws support in mind.
Under the hood Docker is made of many small components which you can use separately if you want: containerd, runC, libnetwork, SwarmKit, HyperKit, VPNKit, DataKit, Compose, Machine, Notary, etc.
The 'docker' cli gives you a nicely integrated interface to all these components but you can use them separately too.
The thing I would be concerned about is bloat. I enjoy and leverage dockers' fast boot up and lightweight containers. I hope they stay focused on this.
It's also one that "source code control systems" have followed on Unix for 40+ years [1],[2].
The UNIX philosophy is fine, it's just slowly escaping from the people who misunderstood it. (Oddly enough UNIX kernels have always been fine, partly because of the bikeshed principle, and partly because experimentally, doing a bunch of tiny things well doesn't actually get you a working OS.)
edit - Ah, I think I've just seen the other docker announcement this might be about.
You can use something like Glusterfs and distribute your files or it can hook in to your clod provider and create persistent storage automatically on something like EBS.
A bunch of plugins have been implemented[2], but I haven't personally heard any real success stories of people using them, which doesn't necessarily mean such stories don't exist.
On a separate note, many other teams run stateful services that can handle the complete loss of a node's data. For example, it seems popular to run Elasticsearch in Docker, though again I'm still learning about this, pattern, too.
[1] https://docs.docker.com/engine/extend/plugins_volume/
[2] https://github.com/docker/docker/blob/master/docs/extend/plu...
- If you don't actually need files, design around database instead
- If you need to store files redundantly, you can use a distributed filesystem like HDFS or GridFs
- If you need to store files redundantly, you can use an IaaS like Amazon S3
- If you need to store actual files (like for hard-linking), (redundancy optional), you can use network mounted storage
- If periodic backups of the data is ok, you can run backups that ship to S3 or glacier
Just a few, offhand, I'm sure there are a number of other techniques.
That is fine if your target is eg AWS - but if you want all your infrastructure in docker, the db needs persistent storage...
Even with docker you still need roles for servers; your DB class of servers will have a cloud-config that inits the correct mount points.
Our goal for this project was to keep it as simple as possible. We tried to only use standard AWS features (CloudFormation, EC2, Autoscaling groups, VPC, ELB, etc) and we are using Docker 1.12 out of the box, with no changes.
All of the scheduling is handled in the docker engine itself, so we didn't need to add anything outside of that.
This version is pretty much an MVP, and we hope that the beta testers will help us test it out, and guide the future direction of the project.
Me, I'd rather use what's available than self-host more often than not, but depends on the use-case.
Docker Swarm is not yet proven at such scale. They have run perf tests at 1k nodes, which is high enough for most use cases, but not for truly warehouse-scale computing. 1k nodes is also where Kubernetes tops out at (though expect that to be higher in Kubernetes 1.3, which should be released in the coming weeks).
On the other hand, if you're trying to run Docker container workloads, it's going to be easier in a Docker-first cluster orchestrator like Docker Swarm or Kubernetes; Mesos has Docker support but it's not as tightly integrated, and doesn't implement the full Docker management API.
One other general problem I've had is the time it takes to launch a container. I would expect containers to be an improvement over VMs in terms of how quickly you can launch, but that doesn't seem to be my experience so far.
I would wait a while longer before I would consider their container services for production workloads.
Many large organisations are going to be tied to Windows 7 for a good while yet...
Same thing on Mac OS X, they have migrated to the hypervisor API.
Love the tech, hate all this marketing runaround.
EDIT to add: either your beta is ready or it ain't. I understand a gentle initial seed to verify it's not an utter catastrophe but no need to play nanny with my bits across 20+ beta releases. I'm a grown up. Make a disclaimer and let me assess the risk. Your corporate logo looks like a 1970s Carvel ice cream cake--I know what I'm getting myself into.
Just wanted to offer an alternate point of view or maybe some context on this. There was over 70,000 people that signed up for the Docker for Mac & Windows beta. So, using an invite system was more of a self preservation measure, and not waiting to expose tons of people to bugs, as the beta was refined (through roughly twenty iterations). If a bad update rolls out across all these people, that would not be good, as you can imagine. So, much more self preservation measure, and wanting to catching things quickly in smaller batches, than wanting to market to you.
Here is the direct link to download Docker for Mac without a key https://www.docker.com/products/docker#/mac
Disclaimer: Working for Docker but this is my own thought.
No messages (and I applied via two accounts for two different platforms). No message telling me "go get the bits!" today. And nothing in spam folders.
But yet another blog post asking me to sign up for yet another private beta... ugh.
EDIT to add: As polite feedback--two separate requests, two separate Docker accounts, one Gmail and one corporate email address, and I did not receive any invite during the private beta nor notification today when it went public.
Not sure what you mean about no message telling me to go get the bits today. There was no email saying that docker for mac/windows was made public, it was announced during the keynote at DockerCon (this morning), and a blog post went out.
Before we made it public, everyone who had signed up for the beta had an invite sent to them, and there was no one left in the queue.
Kernel Version: 4.4.13-moby
Operating System: Alpine Linux v3.4
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.954 GiB