25 ms·
Docker 0.7 runs on all Linux distributions
- shykes 13y agoA few details on the "standard linux support" part. To remove the hard dependency on the AUFS patches, we moved it to an optional storage driver, and shipped a second driver which uses thin LVM snapshots (via libdevmapper) for copy-on-write. The big advantage of devicemapper/lvm, of course, is that it's part of the mainline kernel. If your system supports AUFS, Docker will continue to use the AUFS driver. Otherwise it will pick lvm. Either way, the image format is preserved and all images on the docker index (http://index.docker.io http://index.docker.io) or any instance of the open-source registry will continue to work on all drivers. It's pretty easy to develop new drivers, and there is a btrfs one on the way: https://github.com/shykes/docker/pull/65 https://github.com/shykes/docker/pull/65 If you want to hack your own driver, there are basically 4 methods you need to implement: Create, Get, Remove and Cleanup. Take a look at the graphdriver/ package: https://github.com/dotcloud/docker/tree/master/graphdriver https://github.com/dotcloud/docker/tree/master/graphdriver As usual don't hesitate to come ask questions on IRC! #docker/freenode for users, #docker-dev/freenode for aspiring contributors.
- andyl 13y agodoes this mean that docker will run on 32 bit systems ?
- shykes 13y agoNot yet, but that's coming very soon. We've been artificially limiting the number of architectures supported to limit the headache of managing cross-arch container images. We're reaching the point where that will no longer be a problem - meanwhile the Docker on Raspberry Pi community is growing restless and we want to make them happy :)
- k__ 13y agoSo the software in a container runs on the host-OS and there is no extra OS installed in the container?
- TkTech 13y agoThis is correct. It uses features of the kernel and modern filesystems for efficient isolation.
- gcr 13y agoThere's a sleight of hand going on here. The boundary between "kernel" and "libraries like libc" is very stable and doesn't change often. That means that often, the kernel distributed by Arch can work reasonably well in an Ubuntu system, and vice versa. With that in mind: The "ubuntu" image ships the "ubuntu-glibc" and "ubuntu-bash" and "ubuntu-coreutils" and so on, but they continue to work on your Arch host because the system calls don't ever change. You can't link (say) ubuntu-glibc into arch-bash though, which is why containers are built off of a "base ubuntu image" in the first place.
- k__ 13y agoah, so only the host-kernel is used and I have to add (distribution specific) libraries to the container?
- gcr 13y agoPretty much. Containers come with their libraries though; you don't have to "add" anything. You'd just apt-get it within the container and it would pull down its dependencies.
- deleted 13y ago[deleted]
- salient 13y agoFor your sake, you better hope there won't be another ARMv7 and also ARMv8 version of Raspberry Pi, too :)
- deserted 13y agoDocker already runs fine on 32 bit systems if you compile it yourself and remove the check for 64-bit-ness.
- andyl 13y agoDidn't know that - I'll try it! What happens if you put a 64bit executable in a container they try to run the container on a 32bit machine? Or a Rasberry/Arm device?
- peterwwillis 13y agoWhen you try to run an executable on an architecture it wasn't designed for, it does not run. But this has nothing to do with docker or Linux.
- shykes 13y agoThis, by the way, is the reason we artificially prevent docker from running on multiple archs. If half of the containers you download end up not running on your arch, and there's no elegant way for you to manage that by filtering your results, and producing the same build for multiple archs (and what does it even mean to do that?) - then all of sudden using docker would become much more frustrating.
- peterwwillis 13y agoThis sounds like a clothing manufacturer who only makes clothes in black because trying to match colors would be too frustrating for customers. At the end of the day, lots of people have multiarch networks, and don't want to have to choose between using a tool or supporting just one platform. Removing functionality does not make their lives easier.
- mateuszf 13y agoDoes the LVM part mean that the partition/disk used to store/run Docker images has to use LVM?
- shykes 13y agoNo, docker sets up its own partition in a loop-mounted sparse file. There is a slight performance tradeoff, but in production you should assume the copy-on-write layer is too slow anyway and use volumes for your performance-critical directories: http://docs.docker.io/en/master/use/working_with_volumes/ http://docs.docker.io/en/master/use/working_with_volumes/ In the future the drivers should support using actual lvm-enabled devices if you have them.
- DannoHung 13y agoIs there a document on the relative costs and benefits of the two drivers?
- knitatoms 13y agoAny drawbacks to using lvm comapared to AUFS? I'd like to switch to Debian from Ubuntu - will I notice any performance differences or other restrictions?
- shykes 13y agoThere is a slight performance overhead with lvm, but nothing dramatic. The other advantage of the AUFS driver is that it is more proven. If you have a way to get aufs on your system (and I believe debian does), my pragmatic ops advice would be to use that and give the other drivers some time to get hardened. Of course my advice as a maintainer is that all of them are equally awesome :)
- sandGorgon 13y agohow would you compare aufs/lvm performance vs with the upcoming btrfs support? That is the one that I presume will have the most long term continuity because of btrfs becoming the default sooner than later (isnt it already for opensuse/fedora ?)
- shykes 13y agobtrfs will probably compare favorably to lvm.. But it's just an educated guess at this point.
- nl 13y agoLVM would use more disk space, wouldn't it?
- dgregd 13y agoWhen it will be "production ready"? It seems that the schedule in "GETTING TO DOCKER 1.0" post is outdated.
- igl 13y agoi like docker \o/
- Edmond 13y agogetting excited about docker and lxc in general..
- shimon_e 13y agoThe links feature will make deploying sites a million times easier.
- speeq 13y agoDoes anyone know if it is possible to set a disk quota on a container?
- geku 13y agoInterested in that too.
- veidr 13y agoMe 3.
- rbadaro 13y agoFWICT, storage limits are still not directly supported. You can however create a user per container and limit that user's quota. This is the relevant user comment (but the full discussion is insightful): https://github.com/dotcloud/docker/issues/471#issuecomment-22373948 https://github.com/dotcloud/docker/issues/471#issuecomment-2...
- larsmak 13y agoI'd be interested in this as well. The workarounds mentioned seems to require a bit to much hacking for my liking. Are there any actual plans for implementing simple disk-usage (and perhaps network) limiting?
- unwind 13y agoAnnoying typo in the submission's title, it would be awesome if someone could fix that. It's just s/distrubtions/distributions/, obviously.
- zrail 13y agoFixed. Sorry about that.
- linvin 13y agoAlso, when writing about -p option (e.g. -p 8080:8080), you could choose different port numbers for container and host, so we know the latter is for the host and former is for container.
- shykes 13y agoThat's a good point, thanks. Note: the author and HN poster are 2 different people, but evidently we both check comments :)
- neals 13y agoI see docker come around every now and then here. I'm a smalltime developer shop, small team, small webspps. What can docker do for me? Can this reduce the time it takes me to put up and Ubuntu installation on Digital Ocean? Is this more for larger companies ?
- mateuszf 13y agoYou will be able to have multiple Ubuntu servers running on one Ubuntu VPS on Digital Ocean. Each of them may have some initial state (installed some software, configuration) that you will be able to spawn as separate virtual machine. The "inside" machine will consume mnimal amount of memory (for running applications) and not for whole OS as in case of "real virtual machine". Also, you will be able to spawn and destroy new VMS very fast (under 1s).
- jebblue 13y agoIs it an easier to use chroot? Because I'd just use chroot if I wanted that or maybe openvz. Or just spin up a virtual node dedicated to the task I need it to perform.
- shykes 13y agoIt is definitely designed to be easier in several ways. One way is that it defines a format for portable container images, and an infrastructure for moving images around machines and sharing them with others. See http://www.docker.io/gettingstarted/ http://www.docker.io/gettingstarted/ for an online tutorial and https://index.docker.io https://index.docker.io for the index of all community images.
- dman 13y agoWhat does the vm abstraction buy you vs processes? If one entity "owns" all the servers what is the draw in seperating the servers out in their own VM?
- mateuszf 13y ago
- gexla 13y agoSo, I assume that if you aren't using AUFS then you don't have to deal with potentially bumping up against the 42 layer limit? Or does this update also address the issue with AUFS?
- shykes 13y agoThe 42 layer limit is still there... But not for long! There is a fix underway to remove the limitation from all drivers, including aufs. Instead of lifting the limit for some drivers first (which would mean some images on the index could only be used by certain drivers - something we really want to avoid), we're artificially enforcing the limit on all drivers until it can be lifted altogether. If you want to follow the progress of the fix: https://github.com/shykes/docker/pull/66 https://github.com/shykes/docker/pull/66 (This pull request is on my personal fork because that's where the storage driver feature branch lived until it was merged. Most of the action is usually on the main repo).
- m_mueller 13y agoOne thing I've been wondering is whether the 42 limit was related to performance considerations. If yes, I actually somewhat like it - I'm a proponent to making systems behave in a way that they won't come around and bite you. Will a container based on, say, 200 layers still load and run with reasonable performance?
- alexlarsson 13y agoThat depends on the backend a bit i guess. devicemapper "flattens" each layer, so the depth should have zero effect on the performance. For aufs, I have no real data, but I assume that a 42 layer image is somewhat slower than a 1 layer image. The fix for going to > 42 layers is to recreate a full image snapshot (using hard links to share file data) every N layers, so the performance would be somewhere between the performance between 1 and 42 layers depending on how many AUFS layers you got.
- m_mueller 13y ago
- Sprint 13y agoI looked at it several times but never really got it. Can I use Docker to isolate different servers (think http, xmpp, another http on another port) on a server so that if one of them was exploited, the attacker would be constrained to inside the container? Or is it "just" of a convenient way to put applications into self-contained packages?
- zrail 13y ago> Can I use Docker to isolate different servers That's the idea. Docker is based on LXC which provides configurable isolation between process groups. So, you could run your http in one container, your database in another, and your application server in a 3rd and have reasonable confidence that they can only talk to each other the way you want them to.
- shykes 13y agoIt's both. Everyone using docker benefits from the "software distribution" feature. Some people using docker also benefit from the security and isolation features - it depends on your needs and the security profile of your application. Because the underlying namespacing features of the kernel are still young, it's recommended to avoid running untrusted code as root inside a container on a shared machine. If you drop privileges inside the container, use an additional layer of security like SELinux, grsec, apparmor etc. then it is absolutely possible and viable in production. It's only a matter of time before linux namespaces get more scrutiny and people grow more comfortable with them as a first-class security mechanism. It took a while for OpenVZ to get there, but not there are hosting providers using it for VPS offerings. On top of namespacing, docker manages other aspects of the isolation including firewalling between containers and the outside world (currently optional but soon to be mandatory), whitelisting of traffic between certain containers, etc.
- pradn 13y agoWhich namespacing features are still young? Is it still possible to evade LXC as described in this post? http://blog.bofh.it/debian/id_413 http://blog.bofh.it/debian/id_413
- apphrase 13y agoCan anyone please tell about the overhead of Docker, compared to no-container scenario (not against a fat vm scenario)? I am a "dev" not "ops", but we might make use of Docker in our rapidly growing service oriented backend... Thanks
- shykes 13y agoFor process isolation, the overhead is approximately zero. It adds a few milliseconds to initial execution time, then CPU and memory consumption of your process should be undistinguishable from a no-container scenario. For disk IO, as long as you use data volumes [1] for performance-critical directories (typically the database files), then overhead is also zero. For other directories, you incur the overhead of the underlying copy-on-write driver. That overhead varies from negligible (aufs) to very small (devicemapper). Either way that overhead ends up not mattering in production because those files are typically read/written very unfrequently (otherwise they would be in volumes). [1] http://docs.docker.io/en/master/use/working_with_volumes/ http://docs.docker.io/en/master/use/working_with_volumes/
- apphrase 13y agoVEry good answer, thank you. So in my scenario, I was thinking of packaging our service apps (which run on JVM) and if I make sure that the OS has jvm and all the needed stuff ready. Shipping a package and deploying the service, is just transferring the Docker container and run it. Which happens to be using the same process models as the OS itself. So in other terms, Docker is a convenience layer (a glorified FS abstraction). I am not saying this to undermine the utility, just trying to figure out if it solves more problems then the complexity it brings (which is one more moving part in your toolchain)
- T-zex 13y agoIs it possible to have multiple instances of the same app running in Docker containers and having readonly access to a "global" memory linked file? What I'm trying to achieve is having sand-boxed consumers having access to some shared resource.
- julien421 13y agoHave you try to use the mount option/instruction to do so?
- T-zex 13y agoHaven't tried anything yet. Just wondering if this is an idiomatic use case to grant container access to global resources.
- shykes 13y agoYes, it's idiomatic, but typically you will use shared filesystem access rather than shared memory. By default nothing is shared, and you can specify exceptions using shared directories called "volumes": http://docs.docker.io/en/master/use/working_with_volumes/ http://docs.docker.io/en/master/use/working_with_volumes/
- alexlarsson 13y agoUse the volumes feature to share a filesystem between multiple containers
- jfchevrette 13y agoUnfortunately it looks like the documentation has not been updated yet... So much for feature #7. Documentation should be part of the development/release process
- julien421 13y agoThe doc has been updated, but there was a problem while pushing it this morning. We are working on it.
- shykes 13y agoDocumentation is definitely part of the process :) Apparently the documentation service triggered an incorrect build overnight. Until we fix that you can browse the latest version of the docs from the master branch: http://docs.docker.io/en/master http://docs.docker.io/en/master
- shykes 13y agoQuick update: until we figure out what broke the build on our ReadTheDocs.org setup, we switched the default branch to master. So if you visit http://docs.docker.io http://docs.docker.io you will get the bleeding edge build of the documentation, which happens to be accurate since we released it this morning :) Sorry about that. One more lesson learned on our quest to ultimate quality!
- idupree 13y agoThe Arch Linux instructions are still wrong; they say that aufs3 is required but it isn't anymore. http://docs.docker.io/en/master/installation/archlinux/ http://docs.docker.io/en/master/installation/archlinux/ Is the warning "This is a community contributed installation path. The only ‘official’ installation is using the Ubuntu installation path. This version may be out of date because it depends on some binaries to be updated and published." still true? Fedora also has this warning (and no instructions). The "Look for your favorite distro in our installation docs!" link does not give me up-to-date instructions for any of my favorite Linux distros. I can't even see where in that installation documentation it says how to install from source code on generic Linux. What am I missing? (Of course I can get the source code and build it, but I want the documentation to be great :-D)
- sown 13y agoHey, docker newb here. Can I easily put my own software in it? I've got this c++ program that has a few dependencies in ubuntu.
- shykes 13y agoThe easiest way is to add a Dockerfile to your source repository, and use 'docker build' to create a container image from it. Documentation link: http://docs.docker.io/en/master/use/builder/ http://docs.docker.io/en/master/use/builder/
- sown 13y agoHmm. this is good. but my build environment is kind of wonky. Can I just hand it a .tar.gz and say, put it in /usr/asdf and let it run? What about python scripts? Maybe I just give it a location to an RPM? like in this document? http://docs.docker.io/en/master/examples/python_web_app/ http://docs.docker.io/en/master/examples/python_web_app/
- shykes 13y agoYou can use the ADD build instruction in the Dockerfile to upload any part of your source repo into the container. Then more RUN instructions to manipulate that, for example compile the code etc. Here are 2 examples: https://github.com/steeve/docker-opencv https://github.com/steeve/docker-opencv https://github.com/shykes/docker-znc https://github.com/shykes/docker-znc
- PetrolMan 13y agoI couldn't reply to your deeper comment so I'm going to do it here. You can use the Dockerfile to copy files from you local system onto the image and then run various commands on the image. You have access to a full linux environment inside the docker image so you can do anything on the image that you can do in your normal development environment.
- sown 13y ago
- Xelom 13y agoWill it be possible to run Docker containers on Android? I may be asking this incorrectly. So correct me if I have a mistake. My question might be "Will it be possible to run Docker containers on Dalvik VM?" or "Can I run an Android in Docker container?"
- shykes 13y agoI have not tried personally, but I think it should be possible. People already do crazy things with Docker :) For example: http://resin.io/docker-on-raspberry-pi/ http://resin.io/docker-on-raspberry-pi/
- justincormack 13y agoYou cant "run docker on Dalvik VM" as it runs on Linux not on a JVM. You also can't run Android on a Docker container as Android needs some system calls not in a standard Linux kernel, although there may be some ways around that. You might be able to run docker on Android though, but you may need to compile a kernel with containers (namespace) support as I don't know that Android ships with them (I forget).
- Nux 13y agoEL6 users (RHEL, CentOS, SL), I've just learned Docker is now in EPEL (testing for now, but will hit release soon): yum --enablerepo=epel-testing install docker-io PS: make sure you have "cgconfig" service running
- SEJeff 13y agoThanks for paying it forward :)
- klaruz 13y agoVery nice, I can stop updating my fork of the other rpm spec that's on github. Any info on how it sets up networking? I see -b none in the startup... Is there some other tool that does it on EL6? Do you know where devel talks for this rpm are happening? I did not see any mention of it in the EPEL list archives.
- Nux 13y agoI am a newbie at this, but from what I'm reading you need to create a bridge called lxbr0, assign some IP on it and docker should be able to figure out IPs to use for the containers.
- jackielii 13y agoHmm. Thanks for this, but I couldn't find package "docker-io" in epel-testing. Could you post a detailed instruction? Thanks a lot!
- oskarhane 13y agoHmm, not sure I'm understanding #1 correct. Can I install it on, let's say, Debian without Vagrant/Virtualbox now? I can't find the info in the docs.
- chc 13y agoThey don't have a package repository for Debian yet, but I think you should just be able to make/install it.
- deleted 13y ago[deleted]
- jeffheard 13y agoThis is crazy talk of course, but I wonder if there'd be some way to use rsync or git to support distributed development of images the way git does with code? I mean, it'd be neat to be able to do a "pull" of diffs from one image into another related image. Merge branches and so on. I don't know, possibly this would be just too unreliable, but I would have previously thought that what docker is doing right now would be too unreliable for production use, and lo and behold we have it and it's awesome.
- shykes 13y agoIt wouldn't be the craziest thing people do with docker: http://blog.bittorrent.com/2013/10/22/sync-hacks-deploy-bittorrent-sync-with-docker/ http://blog.bittorrent.com/2013/10/22/sync-hacks-deploy-bitt... http://blog.docker.io/2013/07/docker-desktop-your-desktop-over-ssh-running-inside-of-a-docker-container/ http://blog.docker.io/2013/07/docker-desktop-your-desktop-ov... There has been discussion of taking the git analogy further. We actually experimented with a lot of that early on (https://github.com/dotcloud/cloudlets https://github.com/dotcloud/cloudlets) and I can tell you it's definitely possible to take the scm analogy too far :) I do think we can still borrow a few interesting things from git. Including, potentially, their packfile format and cryptographic signatures of each diff. We'll see! Here's a relevant discussion thread: https://groups.google.com/forum/#!msg/docker-user/CWc5HB6kANA/oHyw-rgjJoYJ https://groups.google.com/forum/#!msg/docker-user/CWc5HB6kAN...
- dmunoz 13y agoNice to see Docker 0.7 hit with some very useful changes. I see lots of people are getting some generic Docker questions answered in here, and want to ask one I have been wondering about. What is the easiest way to use dockers like I would virtual machines? I want to boot an instance, make some changes e.g. apt-get install or edit config files, shutdown the instance, and have the changes available next time I boot that instance. Unless I misunderstand something, Docker requires me to take snapshots of the running instance before I shut it down, which takes an additional terminal window if I started into the instance with something like docker run -i -t ubuntu /bin/bash. I know there are volumes that I can attach/detach to instances, but this doesn't help for editing something like /etc/ssh/sshd_config.
- MoosePlissken 13y agoThere's no need to manually take snapshots, docker does this automatically every time you run a process inside a container. In your example of running /bin/bash, after you exit bash and return to the host machine docker will give you the id for the container which has your changes. You can restart the container or run a new command inside it and your changes will still be there. If you want to access it more easily later, you can run 'docker commit' which will create an image from the container with a name you can reference. You can also use that new image as a base for other containers. This is great for development or playing around with something new, but the best practice for creating a reusable image with your custom changes would be to write a Dockerfile which describes the steps necessary to build the image: http://docs.docker.io/en/latest/use/builder/ http://docs.docker.io/en/latest/use/builder/
- dmunoz 13y agoYes, my goal here is ease of playing around with something new. I would setup a dockerfile after I knew exactly what setup I wanted. You're right, I misunderstood what docker was doing when shutting down the container. Seems like I can start and reattach just fine. Here is an example workflow for anyone curious: root@chris-VM:~# docker run -i -t ubuntu /bin/bash root@0a8f96822140:/# cd /root root@0a8f96822140:/root# ls root@0a8f96822140:/root# vim shouldStayHere bash: vim: command not found root@0a8f96822140:/root# apt-get install -qq vim ...<snipped>... Setting up vim (2:7.3.429-2ubuntu2) ... root@0a8f96822140:/root# vim shouldStayHere ...Not exactly necessary, but I added a line to the file so I could identify it... root@0a8f96822140:/root# exit root@chris-VM:~# docker ps ID IMAGE COMMAND CREATED STATUS PORTS root@chris-VM:~# docker ps -a ID IMAGE COMMAND CREATED STATUS PORTS 0a8f96822140 ubuntu:12.04 /bin/bash About a minute ago Exit 0 root@chris-VM:~# docker attach 0a8f96822140 2013/11/26 10:29:41 Impossible to attach to a stopped container, start it first root@chris-VM:~# docker start 0a8f96822140 0a8f96822140 root@chris-VM:~# docker attach 0a8f96822140 ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin selinux srv sys tmp usr var root@0a8f96822140:/# cd /root root@0a8f96822140:/root# ls shouldStayHere root@0a8f96822140:/root# cat shouldStayHere Hello World! root@0a8f96822140:/root# So, if I did some heavylifting to set something up and wanted to keep this as a base for later work, now I would do e.g. docker commit a8f96822140 <some identifier>
- neumino 13y agoYou guys are awesome, just awesome! I was pretty sure that the requirement for AUFS would stick for a long time -- I was resigned to use a special kernel. But again, you folks surprise me! You guys just rock!
- Legion 13y agoCould someone explain the logistics of Docker in a distributed app development scenario? I feel like I am on the outskirts of understanding. My goal is having a team of developers use Docker to have their local development environments match the production environment. The production environment should use the same Docker magic to define its environment. Is the idea that developers define their Docker environment in the Dockerfile, and then on app deployment, the production environment builds its world from the same Dockerfile? How does docker push/pull of images factor into that, if at all? Or is the idea that developers push a container, which contains the app code, up to production? What happens when a developer makes changes to his/her environment from the shell rather than scripted in the Dockerfile? What about dealing with differences in configuration between production and dev? (Eg. developers need a PostgreSQL server to develop, but on production, the Postgres host is separate from the app server - ideally running PG in a Docker container, but the point being multiple apps share a PG server rather than each running their own individual PG instance). Is the idea that in local dev, the app server and PG are in two separate Docker containers, and then in deployment, that separation allows for the segmentation of app server and PG instance? I see the puzzle pieces but I am not quite fitting them together into a cohesive understanding. Or possibly I am misunderstanding entirely.
- cschmidt 13y agoSince no one has answered you, I'll take a stab. I haven't actually used Docker yet, but I've been lurking extensively. Hopefully someone will correct me if I get this wrong. A developer will use a Dockerfile to build the main dependencies that you need, and then save an image. Then to deploy code (or other frequently changing data), you pull that base image, add or update whatever else is needed, and save it again. (You can add layers to an image as often as desired.) Then this saved image is pushed into a production environment. It seems like configuration data is often saved in images, so they require zero configuration. However, you can pass as many command line parameters as desired to run the image in production, so you can keep your configuration separated (like http://12factor.net/config http://12factor.net/config) if you want.
- peterwwillis 13y ago> Could someone explain the logistics of Docker in a distributed app development scenario? Docker lets you build an environment (read: put together a bunch of files) for you to run an app in. It also has other features, like reducing space if lots of your apps [on the same host] use the same docker images, and networking stuff. > My goal is having a team of developers use Docker to have their local development environments match the production environment You run a container. You use images to distribute files. A Dockerfile is a loose set of instructions to build the images. The basic idea is that, any single program that you want to be able to run anywhere, you make into a container. You can run it here, you can run it there, you can run it anywhere. The whole "running it anywhere" concept comes from the idea that all of your containers are created based on the same images, so no matter what kind of crazy mix of machines you have, your containers will just work - because you're literally shipping them a micro linux distribution in which to run your application. And since all the applications are running in isolated little identical containers, you can run as many of them as you want, independent of each other, in whatever configuration you want. You'll have a PSQL container and an App container, and you'll manage them separately, even if they share images - the changes they make get saved off to a temp folder so they don't impact each other. Your environment stays the same only as long as the containers and images you're using are the same. There will always be differences between development and production. You have to focus on managing those differences so you have confidence that what you're shipping to production actually works. The only thing Docker really does there is make sure the files are basically the same.
- vpsserver 13y agoIt doesn't run on a typical OpenVZ VPS. Is there any alternative for separating apps on a single VPS?
- ecnahc515 13y agoThats because you can't really use the tools the kernel provides which docker uses while in an OpenVZ container.
- chr15 13y agoFor local development, I use Vagrant + Chef cookbooks to setup my environment. The same Chef cookbooks are used to provision the production servers. It's not clear to me how I can benefit from Docker given my setup above. Any comments?
- ecnahc515 13y agoDocker really replaces the need for Chef in a sense. You don't need Chef for configuration of your container, because ideally your container should be saved in an image which you use to deploy. This keeps things consistent between your dev environment, staging and production. Chef is based on re-running the same commands with various different options depending on the environment, and even without any thing in the cookbooks/attributes/environments changing, Chef still cannot guarantee that this run will produce the same results as a run that happened yesterday, simply because it isn't like an image.
- fosk 13y agoI'm new to these tools. Given your explanation, how does Docker replace a packaged Vagrant machine[0] with all the software already pre-installed (without using Chef)? [0] http://docs.vagrantup.com/v2/cli/package.html http://docs.vagrantup.com/v2/cli/package.html
- tbrock 13y agoMuch lighter weight. Instead of hosting an entire operating system you just host the application. Imagine spinning up your db instance vm, your web tier vm, your load balancer vm... etc. Unless you have a ton of ram it isn't going to happen. With docker you can run containers that mimick a very very large infrastructure on your laptop.
- vivab0rg 13y agoWhat about using Vagrant with the [vagrant-lxc plugin](http://fabiorehm.com/blog/2013/04/28/lxc-provider-for-vagrant/ http://fabiorehm.com/blog/2013/04/28/lxc-provider-for-vagran...)?
- kro0ub 13y agoCan someone please explain what docker does and brings to the table, what all the fuss seems to be about? I've looked into it several times and really can't tell from any of what I've found.
- saboot 13y agoI have heard / read about docker for quite some time, yet it is unclear still how this is useful. Let me ask a direct need I have, would docker allow me to use newer c++ compilers on redhat so I can code in c++11?
- binarnosp 13y agoIt looks like the Ubuntu packages are not there? (apt-get cannot find them)