Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Docker Jumpstart (github.com/odewahn)
167 points by laex on June 7, 2015 | hide | past | favorite | 41 comments


The short introduction on that tutorial is much better than that actual docker site and 10-15 min interactive tutorial on what docker actually is and what it can be used for. A note to other developers, it's a good idea to not use some language without first defining the word... Especially if it's an overloaded term.


Agreed, it's a nice intro. I still think the hardest part is understanding how docker fits into the bigger picture. I think I've more or less figured it out on my own, but I struggled with e.g. do I want my source built in the image or mounted as a volume?


If you're loading the source from outside, aren't you losing the advantages of immutability of the Docker container? Suddenly the same image may have different behaviours depending on the state of the code outside.


That's why you want to use volumes for mutable data such as your source code repo - you isolate the changing parts and keep the containers static.


But if the source is mutable data, what isn't? Everything eventually mutates - dependencies have updates, configurations change, etc. Isn't the point of images that you "freeze" a static release that can be deployed everywhere?

It seems that by that point you've lost the advantage of using images; if parts of the system must be loaded outside of the container, it seems you might as well simply use a configuration manager to install the stuff and then run LXC/LXD containers instead of using images at all.


I know, I'm a little late to this party, but just in case anyone is still around... :)

For me, mounting my local app files as a volume is useful during development since it keeps the workflow fast. I don't have to rebuild the image every time I want to try the app out, I get to use the new code without delay.

If I were deploying as a container, I presume my build process would check the app out of git and build the image based on that fresh checkout. I'm just using Docker as a convenient way of simulating my production environment (dev'ing on Ubuntu 15.04, but deploying to Debian 7), and still be able to iterate rapidly.


Ah, fair enough, I was really thinking about shared, deployable images. I suppose this use case makes sense.


The introduction on this PDF is a good complement: https://d0.awsstatic.com/whitepapers/docker-on-aws.pdf


When I want to understand in a few lines some business or software, I normaly avoid their web site because it's usually just riddled with buz words and a sales funnel to force you to register or get some trial without even understanding what it is or how it costs.

For a good 2-3 sentences description I go on Wikipedia when available.


For some reason I found docker very unintuitive, even writing a simple build script was confusing. I agree, this book would have done a much better job of introduction than the docker site.


Out of interest, what did you find confusing/unintuitive? I'm writing a book on Docker so am interested in where the pain points are.


It was mostly how we wanted to use it at my company. It didn't seem clear whether docker should just set up the system (apt-get, pip install) or also checkout the code. To add to the complexity, we have a puppet script we run on the machine to install dependencies. I had no idea how Docker who supposed to fit into this pipeline. So basically, I didn't know what docker was supposed to be good at, i.e. do better than other tools.


Interesting.

You might be interested in my blog and book:

http://zwischenzugs.wordpress.com/

There are links through there to my book, where the first chapter is free to download, and may help. Let me know if you have any feedback.


What's the overloaded term you're talking about?


Yes, this is extremely helpful.


I never really got to play extensively with Docker mainly because I have found the setup of OS X not quite friendly. While I understand the value of Docker, basically booting up a VMware/VirtualBox image was faster for my own use.

I'll have to give boot2docker a try to see if it is changing things. Having a good guide will definitely help.


Give Docker Machine a try https://docs.docker.com/machine/

  Machine makes it really easy to create Docker hosts on your
  computer, on cloud providers and inside your own data center.
  It creates servers, installs Docker on them, then configures
  the Docker client to talk to them.
Kitematic is another option https://kitematic.com


For some reason, when using docker machine on a mac, the VM always fails to start and freezes at the "VM starting" phase. For this reason, I've had to switch back to boot2docker.


Super sorry to hear - we've had some issues with VirtualBox around networking and some setups we didn't anticipate -- Would be really appreciative if you'd give the latest 0.3.0 release candidate a whirl and see if it fixes the issue for you: https://github.com/docker/machine/releases.


Yes, It looks like it has been fixed. I tried creating multiple VMS ( dev, staging ) a few times, and It worked properly. Thanks.

Edit: I tried v0.3.0-rc2


along with docker-machine (I haven't actually used it yet), docker-compose is nice too! https://docs.docker.com/compose/


When you start playing around with docker and come to the area where you start to see that many things that should be very easy start to be really complicated, then you should take a look at lxc and the upcoming lxd and compare.


Huh, the "Images and layers" section is 404'ing.

Edit: ah, here it is - https://github.com/odewahn/docker-jumpstart/blob/master/publ...

Edit: filed a PR


Is docker ready for production? Is someone using it on real production environments? Most recipes at Docker Registy are a mess, and with plenty of bugs


I guess it depends on what you want to do.. I stopped caring and looking at docker after reading this: http://iops.io/blog/docker-hype/

Using btrfs as cow is not ready for production (yet and likely not in the near future) - believing otherwise made the last few feeks quite miserable.


Using btrfs as cow is not ready for production

Yes, but it's not like they don't warn people. From the Docker docs:

"This backend is pretty fast, however btrfs is still maturing and is not considered production ready for heavy write loads. Mounting /var/lib/docker on a different filesystem than the rest of your system is recommended in order to limit the impact of filesystem corruption. You would also want to mount the volume directory /var/lib/docker/vfs/ on a standard XFS or EXT4 filesystem to ensure container data is protected."


Yep. Using it with Deis in production though I don't use Docker Registry images. Baidu is probably one of the largest production user.


We have been running hundreds of instances for the last couple of years, and so far, no big issues.


Anybody wanting to try out Docker + GoLang + AWS Beanstalk, I've made a sample app / guide here - https://github.com/OrganicCoffeeNepal/DockerBeanstalkSample


Thanks for the link.

Is Beanstalk worth it? Is it cheaper than an ec2 instance?


I haven't done any systematic comparison to tell which one's cheaper. AWS allows 1 year of free tier service, so I'm using that. What I like about Beanstalk is that it's extremely easy to deploy updates. Just commit the changes and execute eb deploy. Setting up a new environment via. CLI is also a breeze.


The new Nitrous Pro (https://pro.nitrous.io) has a docker template you can use if you don't feel like installing boot2docker locally.

There's also a bunch of advanced docker options you can check out:

http://docs.nitrous.io/v1.0/docs/advanced-container-manageme...

Would be a good compliment to the docker jumpstart manual.


There is some outdated information on this site for boot2docker on Mac OS X.

1. You need to set more than just tcp://ip:2376. You need to run

$ eval $(boot2docker shellinit)

to also set vars for DOCKER_CERT_PATH

2. In order to get proper forwarding from your host Mac OS X to your boot2docker-vm, you use -P as a command line option for any containers you 'run'.

Bonus docker gotcha:

docker containers can't make fsync() calls on shared folders between your Mac and the boot2docker-vm. This means a lot of database software can't use a shared folder to store a database.


It's all a little outdated - 9 months is a long time in the Docker world.


9 months is a 1/3 of its lifetime!


"Unlike a true VM, a docker container does not also require a host OS"

Shouldn't that be guest OS?


Yes. The one thing it does require is a host OS!


Docker on bare metal would be pretty nice though.


Probably the closest you'll get is this: http://rancher.com/rancher-os/


Docker doesn't actually use LXC anymore.


[deleted]


A topic specific forum, stackoverflow or google-groups is a better place for Q/A troubleshooting.

We try to keep this thread relevant to the article.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: