Compare commits

...

926 Commits

Author SHA1 Message Date
Michael Crosby
cc3a8c8d8e Bump to version 0.8.0
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-02-04 16:08:57 -08:00
Andy Rothfusz
501d0499f8 Merge pull request #3928 from metalivedev/fixheadings
Fixes headings in Table of Contents, link from FAQ.
2014-02-04 14:59:24 -08:00
Andy Rothfusz
fa0afe89ad Merge pull request #3929 from ostezer/master
mac-installation-docs: Update the installation dir.
2014-02-04 14:51:05 -08:00
Michael Crosby
5a49fba15e Merge pull request #3927 from tianon/release-checklist-mention-contributors
Update RELEASE-CHECKLIST to mention how to get a decent contributors list
2014-02-04 14:46:41 -08:00
O.S.Tezer
aed37e70b9 mac-installation-docs: Update the installation dir.
Docker-DCO-1.1-Signed-off-by: O.S. Tezer <ostezer@gmail.com> (github: ostezer)
2014-02-05 00:44:55 +02:00
Andy Rothfusz
18b896e0f0 Fixes headings in Table of Contents, link from FAQ.
Docker-DCO-1.1-Signed-off-by: Andy Rothfusz <github@developersupport.net> (github: metalivedev)
2014-02-04 14:16:27 -08:00
Michael Crosby
9fbb134d87 Merge pull request #3926 from tianon/update-mailmap
Update .mailmap and AUTHORS
2014-02-04 13:33:41 -08:00
Tianon Gravi
bd85631ca5 Update .mailmap and AUTHORS
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-02-04 13:40:56 -07:00
Andy Rothfusz
3455c6f470 Merge pull request #3918 from ostezer/master
docs: Requirements And Installation on Mac OS X 10.6 Snow Leopard
2014-02-04 12:38:51 -08:00
Tianon Gravi
bac7e741bf Update RELEASE-CHECKLIST to mention how to get a decent contributors list
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-02-04 13:34:24 -07:00
O.S.Tezer
a9b325e5b0 docs: Installation on Mac OS X 10.6 Snow Leopard
Docker-DCO-1.1-Signed-off-by: O.S. Tezer <ostezer@gmail.com> (github: ostezer)
2014-02-04 22:26:06 +02:00
Guillaume J. Charmes
81b2940c89 Merge pull request #3254 from shykes/onbuild
New build instruction: ONBUILD defines a trigger to execute when extending an image with a new build
2014-02-04 11:38:27 -08:00
Solomon Hykes
ded9e0d6df builder: clearly display ONBUILD triggers during a build.
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-02-04 19:11:56 +00:00
unclejack
6ed7461eac Merge pull request #3557 from unclejack/improve_vagrantfile
improve the Vagrant VMs: bump RAM to 512 MB & correct forwarded ports
2014-02-04 10:23:52 -08:00
unclejack
495135b68a Merge pull request #3922 from jpoimboe/iptables-public-dest-port-fix
iptables: use dest_addr and dest_port for public port FORWARD rule
2014-02-04 10:06:43 -08:00
Andy Rothfusz
23959e6cf8 Merge pull request #3919 from SvenDowideit/missing-quote
missing quote quota
2014-02-04 10:03:26 -08:00
Josh Poimboeuf
ea63ade772 iptables: use dest_addr and dest_port for public port FORWARD rule
Docker-DCO-1.1-Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> (github: jpoimboe)
2014-02-04 11:32:50 -06:00
unclejack
297001f515 improve the Vagrant VMs
This bumps the VM memory and corrects forwarded ports when they're used
already.

Docker-DCO-1.1-Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com> (github: unclejack)
2014-02-04 12:26:14 +02:00
Tianon Gravi
3fda1819ee Merge pull request #3920 from SvenDowideit/hack-spelling
Fix hack/MAINTAINERS.md spelling problems
2014-02-03 21:34:51 -08:00
Sven Dowideit
df4682907d i was reading, and it sprang out at me :)
Docker-DCO-1.1-Signed-off-by: Sven Dowideit <SvenDowideit@fosiki.com> (github: SvenDowideit)
2014-02-04 15:32:19 +10:00
Sven Dowideit
64426c74f2 missing quote quota
Docker-DCO-1.1-Signed-off-by: Sven Dowideit <SvenDowideit@fosiki.com> (github: SvenDowideit)
2014-02-04 15:29:47 +10:00
Tianon Gravi
cb0ac55b5b Merge pull request #3897 from sandaya/master
Update mkimage-arch.sh to set proper permissions on rootfs directory
2014-02-03 18:42:58 -08:00
Samuel Andaya
736bf3f7e6 Update mkimage-arch.sh
mktemp creates a root directory ("/") with permissions set to 700. Default should be 755 so other users in the container can access its subdirs (e.g http user for nginx for /srv/http/test/index.html).

Docker-DCO-1.1-Signed-off-by: Samuel Andaya <samuel@andaya.net> (github: sandaya)
2014-02-03 21:26:47 -05:00
Solomon Hykes
9f994c9646 New build instruction: ONBUILD defines a trigger to execute when extending an image with a new build
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-02-04 01:31:19 +00:00
Solomon Hykes
a51f5a287b Builder: extract the execution of a single build step into buildFile.BuildStep
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-02-04 01:23:01 +00:00
unclejack
b5d6208ccf Merge pull request #3915 from crosbymichael/no-double-put
No no put put
2014-02-03 16:40:44 -08:00
Guillaume J. Charmes
b56440fa24 Merge pull request #3887 from proppy/detect-network-mtu
docker: detect defaultNetworkMtu from default route
2014-02-03 16:35:15 -08:00
unclejack
5fcd4efd26 Merge pull request #3188 from keyvanfatehi/vagrant-port-forwarding-list
Vagrantfile port forwarding made more flexible (w/ comments)
2014-02-03 16:29:47 -08:00
Michael Crosby
02fdc194fc Fix unmounts out of container export funcs
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-02-03 16:14:16 -08:00
Michael Crosby
d277a4c0f8 Do not call Put twice and do not call it on defer
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-02-03 16:14:02 -08:00
Andy Rothfusz
8beca66741 Merge pull request #3883 from metalivedev/fix-3879
Fixes #3879 by updating embedding of ascii.io (now asciinema.io)
2014-02-03 16:09:54 -08:00
Keyvan Fatehi
d8718e435d Vagrantfile port forwarding usages documented. Added usage via envvar FORWARD_PORTS for custom port or list of comma-separated ports
Docker-DCO-1.1-Signed-off-by: Keyvan Fatehi <keyvanfatehi@gmail.com> (github: keyvanfatehi)
2014-02-03 16:07:52 -08:00
Andy Rothfusz
fca2f3e742 Updated width to 815 per comment.
Docker-DCO-1.1-Signed-off-by: Andy Rothfusz <github@developersupport.net> (github: metalivedev)
2014-02-03 16:06:29 -08:00
Johan Euphrosine
ab1482e9c2 docs/cli: add mtu option
Docker-DCO-1.1-Signed-off-by: Johan Euphrosine <proppy@google.com> (github: google)
2014-02-03 16:01:38 -08:00
Johan Euphrosine
92e61f89aa docker/config: update -mtu flag default
Docker-DCO-1.1-Signed-off-by: Johan Euphrosine <proppy@google.com> (github: google)
2014-02-03 15:36:39 -08:00
Johan Euphrosine
1b9c5edc6c networkdriver: add ErrNoDefaultRoute
Docker-DCO-1.1-Signed-off-by: Johan Euphrosine <proppy@google.com> (github: google)
2014-02-03 14:27:59 -08:00
unclejack
4e9164ff5f Merge pull request #3908 from crosbymichael/fix-login-prompt
Fix login prompt on push and pull because of error message
2014-02-03 14:19:14 -08:00
Guillaume J. Charmes
a9860d8553 Merge pull request #3911 from crosbymichael/fix-remove-volume
Fix comparing binds and volume ids from other containers
2014-02-03 14:03:57 -08:00
Michael Crosby
720c5774e9 Fix comparing binds and volume ids from other containers
Currently comparing volume ids for binds and other containers are broken
Fixes #3749
Fixes #3885
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-02-03 13:18:10 -08:00
Michael Crosby
0fa9199f78 Fix login prompt on push and pull because of error message
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-02-03 11:38:34 -08:00
Tianon Gravi
88d66600b3 Merge pull request #3906 from tianon/unprefix-ubuntu
Remove stackbrew prefix on ubuntu images now that they're reasonably up-to-date and stable
2014-02-03 10:28:50 -08:00
Tianon Gravi
f4a7c43776 Remove stackbrew prefix on ubuntu images now that they're reasonably up-to-date and stable
Everyone probably wants to run `docker pull ubuntu` before building with this change.

Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-02-03 11:08:35 -07:00
Michael Crosby
6863145148 Merge pull request #3904 from alexlarsson/fix-docker-commit-output
Fix docker commit output
2014-02-03 10:00:53 -08:00
Michael Crosby
9431b8d503 Merge pull request #3893 from tianon/clean-up-btrfs-error-messages
Fix several btrfs driver error messages
2014-02-03 09:51:41 -08:00
Michael Crosby
fb796900fb Merge pull request #3892 from tianon/remove-btrfs-header-reference
Remove reference to <linux/btrfs.h>, and instead use <btrfs/ioctl.h> like we're supposed to (from btrfs-progs)
2014-02-03 09:41:11 -08:00
Tianon Gravi
f7f8e3c2b3 Fix several btrfs driver error messages
Several of the error messages were wrong, but not one of them was helpful, so this fixes them to include the important information (the actual error), and a correct description of which operation failed.

Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-02-03 09:12:18 -07:00
Tianon Gravi
62aa446101 Merge pull request #3899 from tianon/do-not-strip-binaries
Update PACKAGERS.md to explicitly talk about stripping
2014-02-03 07:08:49 -08:00
Alexander Larsson
b61c1d0d42 Fix docker commit output
The id is returned as Id, not ID, so print the right thing.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-02-03 14:59:09 +01:00
Tianon Gravi
7ffd2b0785 Update PACKAGERS.md to explicitly talk about stripping, quoting Dave Cheney from Golang upstream (who is very, very adamant about not stripping Golang compiled binaries)
While there, remove the now-outdated section about `CGO_ENABLED=0`

Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-02-02 22:47:42 -07:00
Tianon Gravi
6922f1be08 Remove reference to <linux/btrfs.h>, and instead use <btrfs/ioctl.h> like we're supposed to (from btrfs-progs)
This fixes compilation issues when btrfs.h isn't available (because we just need the relevant structs, which for userspace programs are supposed to come from btrfs-progs instead of the kernel headers).

Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-02-01 23:23:33 -07:00
Johan Euphrosine
4d0a026c98 docker: detect defaultNetworkMtu from default route
Docker-DCO-1.1-Signed-off-by: Johan Euphrosine <proppy@google.com> (github: google)
2014-02-01 03:46:37 -08:00
Victor Vieux
a446b34719 Merge pull request #3832 from jlhawn/3831-auth-tests-server-address
Prevent Tests from creating users on Prod Index
2014-01-31 18:34:13 -08:00
Guillaume J. Charmes
c9f6e446ee Merge pull request #3881 from crosbymichael/no-all-number
Do not generate all numberic truncated ids
2014-01-31 18:07:01 -08:00
Andy Rothfusz
b0f4ad431d Fixes #3879 by updating embedding of ascii.io (now asciinema.io)
Docker-DCO-1.1-Signed-off-by: Andy Rothfusz <github@developersupport.net> (github: metalivedev)
2014-01-31 18:02:45 -08:00
Guillaume J. Charmes
f9b4146ad4 Merge pull request #3868 from 1uptalent/3867-allow-pax-global-extended-headers-to-passthrough
FIX 3867 allow pax global extended headers to passthrough
2014-01-31 17:54:08 -08:00
Michael Crosby
9b7054fd0b Do not generate all numberic truncated ids
Fixes #3869
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-31 17:37:13 -08:00
Guillaume J. Charmes
87c1403948 Merge pull request #3880 from vieux/fix_docker_login
fix docker login
2014-01-31 17:31:27 -08:00
Victor Vieux
31ee45e6ae Merge pull request #3882 from vieux/fix_compat_api
fix api with old version
2014-01-31 17:25:39 -08:00
Victor Vieux
e43236c78a fix api with old version
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-02-01 01:24:39 +00:00
Guillaume J. Charmes
819c2e3eca Merge pull request #3872 from crosbymichael/network-driver
Remove networking out of core and into a driver
2014-01-31 17:22:37 -08:00
Victor Vieux
d22a39db26 fix docker login
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-02-01 01:14:59 +00:00
Victor Vieux
23815414ea Merge pull request #3878 from vieux/remove_REMOTE_TODO.md
remove REMOTE_TODO.md
2014-01-31 15:50:57 -08:00
Victor Vieux
bf1f655fa2 remove REMOTE_TODO.md
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-31 23:50:34 +00:00
Michael Crosby
6a1ee89d2d Merge pull request #3827 from vieux/mova_api_package
Move api into sub package
2014-01-31 15:39:33 -08:00
Victor Vieux
9eea7f28f0 Move serveapi to api/api.go
Remove api import from server.go
Rename initapi to init server

Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-31 23:06:00 +00:00
Victor Vieux
78189c9bcf Merge pull request #3876 from dotcloud/fix_panic_mflag
fix panic in mflag
2014-01-31 14:43:16 -08:00
Michael Crosby
cb3bd91689 Fix IP case for BridgeIP
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-31 12:18:45 -08:00
Michael Crosby
50fea89782 Fix links test to not accept bridge
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-31 12:07:51 -08:00
Michael Crosby
a11bee44d7 Update code from pr #3842 post rebase
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-31 12:04:44 -08:00
Michael Crosby
1d4de9ce1f Fix port mapping unit tests
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-31 12:04:44 -08:00
Michael Crosby
167403988d Move network aspect of links into driver as a job
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-31 12:04:44 -08:00
Michael Crosby
2df0166107 Implement requesting the name ip
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-31 12:04:44 -08:00
Michael Crosby
49b9813035 Fix integration tests
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-31 12:04:44 -08:00
Michael Crosby
2d8709696c Fix sending []byte in job env
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-31 12:04:44 -08:00
Michael Crosby
c712e74b45 Update core calls to network drivers
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-31 12:04:44 -08:00
Michael Crosby
90494600d3 Finish moving networking information into driver
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-31 12:04:44 -08:00
Michael Crosby
53ee1daa69 Merge pull request #3841 from alexlarsson/separate-base-fs
Separate out graphdriver mount and container root
2014-01-31 11:49:14 -08:00
Victor Vieux
523341d994 Merge pull request #3857 from creack/remove_darwin_files
Remove all darwin specific files and use more generic _unsupported with build tags.
2014-01-31 11:48:10 -08:00
Victor Vieux
65794a2c49 fix panic in mflag
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-31 11:39:29 -08:00
Michael Crosby
674ee1bc8e Merge pull request #3828 from tianon/add-user-email-to-dockerfile
Add dummy "user.email" setting in our Dockerfile for smooth in-container merge commits
2014-01-31 11:03:17 -08:00
Victor Vieux
b881a6c3c2 merge master
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-31 19:00:06 +00:00
Michael Crosby
f267938fb8 Merge pull request #3844 from clkao/lxc-kill-deprecation
Use lxc-stop -k instead of lxc-kill
2014-01-31 10:57:40 -08:00
Guillaume J. Charmes
ff6409382b Merge pull request #4 from tianon/cross-compile-and-release-linux-i386-and-arm-clients
Update/fix build tags, Dockerfile, and release.sh for proper building and releasing of linux/386 and linux/arm cross-compiled client binaries
2014-01-31 10:51:25 -08:00
Victor Vieux
51d280f944 merge master
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-31 18:43:34 +00:00
Michael Crosby
643c7dc25d Merge pull request #3829 from vieux/fix_api_regression
Fix ID -> Id api
2014-01-31 10:38:57 -08:00
Andy Rothfusz
70ab72ff32 Merge pull request #3864 from SvenDowideit/lxc-kill-script-workaround-doc
add a known issue for lxc-1.0.0.beta3 and beyond for removeal of lxc-kil...
2014-01-31 10:27:04 -08:00
Andy Rothfusz
feea1dda41 Merge pull request #3861 from metalivedev/fixkerneldeps
Fixed link to kernel dependencies.
2014-01-31 10:25:25 -08:00
unclejack
5258f833bc Merge pull request #3866 from crosbymichael/dont-allocate-1
Do not allocate networks first ip
2014-01-31 09:47:28 -08:00
unclejack
35ef0d37c2 Merge pull request #3800 from vieux/cleanup_jobs
Cleanup jobs
2014-01-31 06:55:12 -08:00
Abel Muiño
ce74c8b4d2 Ignore tar.TypeXGlobalHeader
Docker-DCO-1.1-Signed-off-by: Abel Muiño <amuino@gmail.com> (github: amuino)
2014-01-31 14:57:30 +01:00
Abel Muiño
7b2ec7fb2d Unit test ensuring that a tar.TypeXGlobalHeader does not cause an error
Docker-DCO-1.1-Signed-off-by: Abel Muiño <amuino@gmail.com> (github: amuino)
2014-01-31 14:57:18 +01:00
Tianon Gravi
065dd231dd Update/fix build tags, Dockerfile, and release.sh for proper building and releasing of linux/386 and linux/arm cross-compiled client binaries
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-31 03:16:42 -07:00
unclejack
59ec012efc Merge pull request #3125 from rjeczalik/master
vagrant: added PRIVATE_NETWORK env var
2014-01-31 01:06:47 -08:00
Tianon Gravi
b4604ae7cf Merge pull request #3822 from tianon/install-your-user
Make get.docker.io install directions slightly better by telling user exactly how to add themselves to the "docker" group
2014-01-31 00:56:30 -08:00
Tianon Gravi
56317c74f7 Merge pull request #3760 from tianon/better-nondocker-warning
Update hack/make.sh with slightly clearer output and a more precise "are we in the Docker container?" check
2014-01-31 00:54:44 -08:00
Tianon Gravi
d009cb0bed Merge pull request #3848 from tianon/fix-yaml-space-parsing
Fix fun Travis DCO check YAML parsing issues (especially with commit messages that start with any kind of whitespace, like this one intentionally does)
2014-01-31 00:53:47 -08:00
Michael Crosby
d86c1b064d Not not allocate networks first ip
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-30 23:10:19 -08:00
Victor Vieux
8fbdb7b59e add setSubEnv and getSubEnv
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-31 04:01:46 +00:00
Victor Vieux
24086fa75d job.error\* now return engine.StatusErr
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-31 04:01:46 +00:00
Victor Vieux
2b52d6e801 Remove api_params.go
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-31 03:59:14 +00:00
Victor Vieux
fc2f998822 remove some mkServerFromEngine
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-31 03:34:50 +00:00
Solomon Hykes
a0d82b17c7 Merge pull request #3863 from vieux/default_getint_0
changed default value of getenvint to 0. fix tests
2014-01-30 19:04:46 -08:00
Sven Dowideit
630459f2b8 add a known issue for lxc-1.0.0.beta3 and beyond for removeal of lxc-kill see #3844
Docker-DCO-1.1-Signed-off-by: Sven Dowideit <SvenDowideit@fosiki.com> (github: SvenDowideit)
2014-01-31 12:30:16 +10:00
Victor Vieux
1498cd4e05 use exists
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-31 02:21:59 +00:00
Victor Vieux
28b5ae8cc4 changed default value of getenvint to 0. fix tests
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-31 02:06:08 +00:00
Rafal Jeczalik
ce423cc9a8 vagrant: added PRIVATE_NETWORK env var
Docker-DCO-1.1-Signed-off-by: Rafal Jeczalik <rjeczalik@gmail.com> (github: rjeczalik)
2014-01-31 02:03:57 +01:00
Tianon Gravi
7ced204372 Merge pull request #3860 from vieux/integration_makefile
Add "make test-integration"
2014-01-30 16:10:27 -08:00
Andy Rothfusz
e64a9a3bad Merge pull request #3758 from metalivedev/2720-running
Fixes 2720
2014-01-30 16:09:19 -08:00
Andy Rothfusz
98518bbcad Fixed link to kernel dependencies. Wrapped long lines. Removed old tar dependency from list.
Docker-DCO-1.1-Signed-off-by: Andy Rothfusz <github@developersupport.net> (github: metalivedev)
2014-01-30 16:03:13 -08:00
Victor Vieux
e4b3b391d6 Merge pull request #3858 from vieux/fix_testexitcode
fix TestExitCode
2014-01-30 15:52:28 -08:00
Victor Vieux
4326e541f8 add make test-integration
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-30 23:50:23 +00:00
Guillaume J. Charmes
9ae51c7403 Merge pull request #3859 from rogaha/add_missing_attributes
- Fixed the last cli.call's parameter from CmdSearch
2014-01-30 15:44:36 -08:00
Roberto G. Hashioka
2655a108e1 - Fixed the last cli.call's parameter from CmdSearch
Docker-DCO-1.1-Signed-off-by: Roberto Hashioka <roberto.hashioka@docker.com> (github: rogaha)
2014-01-30 23:21:42 +00:00
Guillaume J. Charmes
45dd051e8e Remove all darwin specific files and use more generic _unsupported with build tags.
Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-30 23:10:56 +00:00
Victor Vieux
720f64af18 fix TestExitCode
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-30 22:59:21 +00:00
Victor Vieux
9481afa617 Merge pull request #3854 from vieux/fix_tests
remove TestAllocateTCPPortLocalhost faillure in tests
2014-01-30 13:59:32 -08:00
Victor Vieux
8e619e13ca remove TestAllocateTCPPortLocalhost faillure in tests
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-30 21:53:32 +00:00
Victor Vieux
0c8ddd502e Merge pull request #3833 from vieux/fix_env_conversion_issues
Fix env conversion issues in env
2014-01-30 13:31:25 -08:00
Victor Vieux
9261511aa5 refactor all *FromJob functions
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-30 20:45:32 +00:00
Tianon Gravi
c8d1596902 Fix fun Travis DCO check YAML parsing issues (especially with commit messages that start with any kind of whitespace, like this one intentionally does)
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-30 12:27:45 -07:00
Victor Vieux
0942e5c89c Merge pull request #3842 from jpoimboe/iptables-insert-masq
network: insert masq rule
2014-01-30 11:26:32 -08:00
Chia-liang Kao
b111fc3646 Use lxc-stop -k when lxc-kill is not found
lxc-kill was removed in lxc/lxc@33ddfc2

Docker-DCO-1.1-Signed-off-by: Chia-liang Kao <clkao@clkao.org> (github: clkao)
2014-01-31 03:22:22 +08:00
Andy Rothfusz
43b7667dcc Merge pull request #3836 from SvenDowideit/mint-cgroups-lite-docs
Add troubleshooting for missing cgroups on mint 16
2014-01-30 10:58:26 -08:00
Victor Vieux
c7b415d3b4 Merge pull request #3846 from tianon/unclejack-maintainer
Make unclejack the official Vagrantfile maintainer
2014-01-30 10:55:38 -08:00
Tianon Gravi
238dba831a Make unclejack the official Vagrantfile maintainer
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-30 11:51:25 -07:00
Michael Crosby
637a1dcab6 Merge pull request #3718 from alexlarsson/btrfs
Add btrfs support to docker
2014-01-30 10:00:44 -08:00
Josh Poimboeuf
cc382ec628 network: insert masq rule
This fixes IP masquerading on systems with reject rules at the end of
the POSTROUTING table, by inserting the rule at the beginning of the
table instead of adding it at the end.

Docker-DCO-1.1-Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> (github: jpoimboe)
2014-01-30 11:06:28 -06:00
Alexander Larsson
fab19d197c Separate out graphdriver mount and container root
This separates out the directory as returned from the graphdriver (the
"base" fs) from the root filesystem of the live container. This is
necessary as the "diff" operation needs access to the base filesystem
without all the mounts that the running container needs (/.dockerinit,
volumes, etc).

We change container in the following way:

Container.RootfsPath() returns the the directory which will be used as
the root in a running container. It is always of the form
"/var/lib/docker/container/<id>/root" and is a private bind mount to
the base filesystem. It is only available while the container is running.

Container.BasefsPath() returns the raw directory from the graph driver
without the container runtime mounts. It is availible whenever the
container is mounted (in between a container.Mount()/Unmount() pair,
which are properly refcounted).

This fixes issue #3840

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-30 16:43:53 +01:00
Alexander Larsson
fc1169a220 pkg/mount: Add "private" flag
This allows "mount --make-private" functionallity.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-30 16:41:45 +01:00
Sven Dowideit
626a2e1112 Add troubleshooting for missing cgroups on mint 16 #3602
Docker-DCO-1.1-Signed-off-by: Sven Dowideit <SvenDowideit@fosiki.com> (github: SvenDowideit)
2014-01-30 20:53:27 +10:00
James Turnbull
41c10fb256 Merge pull request #3835 from thinkingbox/master
Fix typo
2014-01-29 23:55:36 -08:00
Piergiuliano Bossi
7d95ce6ddd Fix typo
Docker-DCO-1.1-Signed-off-by: Piergiuliano Bossi <pgbossi@gmail.com> (github: thinkingbox)
2014-01-29 23:07:23 -05:00
Tianon Gravi
ab50985ac9 Merge pull request #3834 from philips/fix-socket-activation-systemd
contrib: systemd: make socket-activation Restart same as the main service file
2014-01-29 17:46:25 -08:00
Brandon Philips
4dab34c204 contrib: systemd: make socket-activation Restart=always
Do as was done to f09a78cd21 in the
socket-activation example.

Docker-DCO-1.1-Signed-off-by: Brandon Philips <brandon.philips@coreos.com> (github: philips)
2014-01-29 17:42:32 -08:00
Tianon Gravi
de8480f656 Merge pull request #3531 from lsm5/docker-systemd
ExecStartPre commands updated in systemd service file
2014-01-29 17:38:10 -08:00
Josh Hawn
c914abaf15 Prevent Tests from creating users on Prod Index
The integration tests had previously used the environment variable
DOCKER_INDEX_URL but it was apparently removed several months ago.

Change the integration auth tests to specify the ServerAddress field
of the AuthConfig struct to use the staging deployment of the index.

Docker-DCO-1.1-Signed-off-by: Josh Hawn <josh.hawn@docker.com> (github: jlhawn)
2014-01-29 17:18:11 -08:00
Victor Vieux
187646127f fix convertion issues
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-30 00:56:42 +00:00
Victor Vieux
5b82a1b726 add tests
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-30 00:55:29 +00:00
Tianon Gravi
95dff84728 Merge pull request #3734 from stpierre/mkimage-yum
Added new mkimage-yum.sh script to create CentOS base images
2014-01-29 14:52:51 -08:00
Victor Vieux
54072dbbd6 fix ID -> Id api
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-29 20:31:49 +00:00
Tianon Gravi
94c5f51c4a Add dummy "user.email" setting in our Dockerfile for smooth in-container merge commits
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-29 13:13:32 -07:00
unclejack
6013cbdce8 Merge pull request #3810 from jpoimboe/iptables-forward-public-ports
network: add publicly mapped ports to FORWARD table
2014-01-29 11:53:26 -08:00
Victor Vieux
f556cd4186 move api to it's own package
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-29 19:26:54 +00:00
Michael Crosby
6fdc543443 Merge pull request #3819 from crosbymichael/move-port-mapper
Move port mapper out of core and into network drivers
2014-01-29 11:16:51 -08:00
Victor Vieux
7b7f7e4436 add setSubEnv and getSubEnv
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-29 18:53:43 +00:00
Victor Vieux
55d7aa1b49 job.error\* now return engine.StatusErr
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-29 18:52:55 +00:00
Victor Vieux
217ad5e5e6 Remove api_params.go
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-29 18:52:54 +00:00
Michael Crosby
c00cb1aca1 Merge pull request #3808 from alexlarsson/execdriver-get-pids-for-container
execdriver: Make GetPidsForContainer() a driver call
2014-01-29 10:38:10 -08:00
Michael Crosby
4a35146461 Merge pull request #3820 from vieux/remove_runtime_from_api
Remove runtime from api
2014-01-29 10:35:27 -08:00
Tianon Gravi
e1b210bee9 Merge pull request #3588 from tianon/debootstrap-tweaks
Add a few small tweaks to mkimage-debootstrap, especially to help with lucid
2014-01-29 08:42:14 -08:00
Lokesh Mandvekar
a9d0bbcfc6 remove ip fowarding from systemd (fixed: commit #3801)
Docker-DCO-1.1-Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com> (github: lsm5)
2014-01-29 11:06:23 -05:00
Lokesh Mandvekar
f09a78cd21 ExecStartPre commands updated
Docker-DCO-1.1-Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com> (github: lsm5)

systemd service no longer does '/bin/mount/ --make-rprivate /'.
Core issue fixed by Alex Larsson (commit 157d99a).

ip forwarding enabled.
2014-01-29 11:06:23 -05:00
Tianon Gravi
6cfe778c2c Make get.docker.io install directions slightly better by telling user exactly how to add themselves to the "docker" group
As a bonus, if the user has run this script the way we recommend (ie, without "sudo" or "su", run as their user), we can actually give them the exact command they'll need with their correct username substituted appropriately.

Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-29 00:10:39 -07:00
Andy Rothfusz
c82a2d1adf Merge pull request #3813 from jpoimboe/update-ip_forward-docs
docs: remove ip_forward enabling step
2014-01-28 18:08:22 -08:00
Andy Rothfusz
f3a032f27b Address feedback from @jamtur01.
Docker-DCO-1.1-Signed-off-by: Andy Rothfusz <github@developersupport.net> (github: metalivedev)
2014-01-28 17:32:05 -08:00
Victor Vieux
abd64a2b00 move warnings to the job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-29 01:17:55 +00:00
Michael Crosby
b3b12f0059 Move port mapper tests out of core and into portmapper
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-28 17:10:13 -08:00
Victor Vieux
d41844ed2d remove enableCors from the config and move it as a job arg
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-29 00:20:51 +00:00
Michael Crosby
99756ef11f Initial move of port mapper code into sub pkg
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-28 15:42:46 -08:00
Victor Vieux
fc697e3fd7 Merge pull request #3794 from vieux/fix_commands_error
check for errors in call, not readBody
2014-01-28 12:57:02 -08:00
Michael Crosby
2723133a69 Merge pull request #3105 from philips/add-socket-activation
Add socket activation
2014-01-28 11:38:25 -08:00
Guillaume J. Charmes
556091ef8b Merge pull request #3811 from jpoimboe/remove-ip_forward-warning
remove ip_forward warning
2014-01-28 11:37:13 -08:00
Josh Poimboeuf
aeb2f479fa docs: remove ip_forward enabling step
Now that docker sets /proc/sys/net/ipv4/ip_forward by default, remove
the step to enable it in the installation docs.

Docker-DCO-1.1-Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> (github: jpoimboe)
2014-01-28 13:29:27 -06:00
Josh Poimboeuf
ef6c0d5341 remove ip_forward warning
Now that docker sets /proc/sys/net/ipv4/ip_forward by default (unless
the user manually specifies "-ip-forward=false"), there's no need to
warn if its disabled.

Docker-DCO-1.1-Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> (github: jpoimboe)
2014-01-28 13:27:56 -06:00
Guillaume J. Charmes
4ab59179e7 Merge pull request #3801 from tianon/ip-forward
Add --ip-forward flag to daemon (enabled by default)
2014-01-28 11:17:45 -08:00
Josh Poimboeuf
db250f709a network: add publicly mapped ports to FORWARD table
Allow publicly mapped ports to be made public beyond the host.  This is
needed for distros like Fedora and RHEL which have a reject all rule at
the end of their FORWARD table.

Docker-DCO-1.1-Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> (github: jpoimboe)
2014-01-28 13:11:49 -06:00
Guillaume J. Charmes
d4ea6308fd Merge pull request #3759 from jpoimboe/links-iptables-cleanup
network: remove unnecessary links iptables rule for return traffic
2014-01-28 11:10:36 -08:00
Guillaume J. Charmes
13ee6d8eee Merge pull request #3807 from pwaller/fix-unclear-error
Fix unclear error message when deleting container
2014-01-28 10:35:09 -08:00
Michael Crosby
09ed7e8878 Merge pull request #3805 from alexlarsson/execdriver-drop-getexitcode
exexdriver: Make Command.GetExitCode an internal call
2014-01-28 10:34:00 -08:00
Alexander Larsson
9ad70528b7 exexdriver: Make Command.GetExitCode an internal call
This code only works for backends that directly spawn the child
via the Command. It will not work for the libvirt backend. So
we move this code into the individual backends that need it.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-28 19:20:35 +01:00
Alexander Larsson
335bc39c9a execdriver: Make GetPidsForContainer() a driver call
The current implementation is lxc specific.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-28 16:21:49 +01:00
Peter Waller
70c1781e07 Fix unclear error message when deleting container
I was getting the following error:

```
$ bundles/0.7.6-dev/binary/docker-0.7.6-dev run -rm -v=/var/run:/foo base echo hi
hi
2014/01/28 14:24:46 Error: container_delete: No such id: run
```

This commit makes the true origin of the error clearer. Issue #3806 is
tracking the cause of the error.

Docker-DCO-1.1-Signed-off-by: Peter Waller <p@pwaller.net> (github: pwaller)
2014-01-28 14:28:13 +00:00
Alexander Larsson
a1851a6d3e btrfs: Add comment to Put()
Document why we don't need to do anything in Put().

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-28 09:56:51 +01:00
Tianon Gravi
cabe624c82 Add --ip-forward flag to daemon (enabled by default) which automatically sets "net.ipv4.ip_forward" to 1
See also https://groups.google.com/d/topic/docker-dev/DCjF5Prx7HA/discussion

Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-27 21:35:05 -07:00
Brandon Philips
4e5859e830 fix(api): , _ removed to simplify code in range
Docker-DCO-1.1-Signed-off-by: Brandon Philips <brandon.philips@coreos.com> (github: philips)
2014-01-27 17:18:09 -08:00
Brandon Philips
7839350dd5 chore(coreos/go-systemd): copy to github.com/dotcloud/docker/systemd/pkg/activation
Via https://github.com/dotcloud/docker/pull/3105#issuecomment-32807547

Docker-DCO-1.1-Signed-off-by: Brandon Philips <brandon.philips@coreos.com> (github: philips)
2014-01-27 17:18:09 -08:00
Brandon Philips
def0952606 chore(systemd): use activation.Listeners instead of Files
Use this Listeners() API that was exposed to save a few more lines of
boiler plate code.

Docker-DCO-1.1-Signed-off-by: Brandon Philips <brandon.philips@coreos.com> (github: philips)
2014-01-27 17:18:09 -08:00
Brandon Philips
f82d1291cc vendor: bump github.com/coreos/go-systemd/activation
tests now work in the Docker tree with

`go test github.com/coreos/go-systemd/activation`

Docker-DCO-1.1-Signed-off-by: Brandon Philips <brandon.philips@coreos.com> (github: philips)
2014-01-27 17:18:09 -08:00
Brandon Philips
1603039a71 chore(*): go fmt
I noticed that travis was failing, go fmt to make it happy.

Docker-DCO-1.1-Signed-off-by: Brandon Philips <brandon.philips@coreos.com> (github: philips)
2014-01-27 17:18:09 -08:00
Brandon Philips
1f44921c51 fix(contrib/init/systemd): remove mount rprivate
Docker does this now via 157d99a727

Docker-DCO-1.1-Signed-off-by: Brandon Philips <brandon.philips@coreos.com> (github: philips)
2014-01-27 17:18:09 -08:00
Brandon Philips
2fe7588af7 fix(cli.rst): add missing underscores
As suggested by @metalivedev

Docker-DCO-1.1-Signed-off-by: Brandon Philips <brandon.philips@coreos.com> (github: philips)
2014-01-27 17:18:09 -08:00
Brandon Philips
7f9d3268bf Allow fd:// like unix:// and tcp://
Somthing like 20605eb310

Docker-DCO-1.1-Signed-off-by: Brandon Philips <brandon.philips@coreos.com> (github: philips)
2014-01-27 17:18:09 -08:00
Brandon Philips
566fb31c88 Move listenfd to utility package
Docker-DCO-1.1-Signed-off-by: Brandon Philips <brandon.philips@coreos.com> (github: philips)
2014-01-27 17:18:09 -08:00
Brandon Philips
6acc99889d fix(docs): add Systemd in front of socket activation
Suggested by SvenDowideit.

Docker-DCO-1.1-Signed-off-by: Brandon Philips <brandon.philips@coreos.com> (github: philips)
2014-01-27 17:18:09 -08:00
Brandon Philips
4a90f00ab7 docs: improve the socket activation cli docs
as suggested by SvenDowideit expand the docs to have more information on
socket activation.

Docker-DCO-1.1-Signed-off-by: Brandon Philips <brandon.philips@coreos.com> (github: philips)
2014-01-27 17:18:09 -08:00
Brandon Philips
cfeb1f0f65 fix(docs): fixup based on changes in master
Docker-DCO-1.1-Signed-off-by: Brandon Philips <brandon.philips@coreos.com> (github: philips)
2014-01-27 17:18:09 -08:00
Brandon Philips
87fb2c973d server: add socket activation
This adds the ability to socket activate docker by passing in
`-H fd://*` along with examples systemd configuration files.

The fastest way to test this is to run:

```
/usr/lib/systemd/systemd-activate -l 127.0.0.1:2001 /usr/bin/docker -d -H 'fd://*'
docker -H tcp://127.0.0.1:2001 ps
```

Docker-DCO-1.1-Signed-off-by: Brandon Philips <brandon.philips@coreos.com> (github: philips)
2014-01-27 17:17:07 -08:00
Brandon Philips
e996daeed0 vendor: add github.com/coreos/go-systemd/activation
Docker-DCO-1.1-Signed-off-by: Brandon Philips <brandon.philips@coreos.com> (github: philips)
2014-01-27 17:17:07 -08:00
Michael Crosby
ed12818f99 Merge pull request #3789 from pwaller/issue-3674
Fix for #3674 Can't `rm` containers when disk full
2014-01-27 17:00:16 -08:00
Michael Crosby
eaca205942 Merge pull request #3796 from tianon/dockerfile-btrfs
Update Dockerfile to be based on 13.10 instead of 12.04, add linux-libc-dev dep, remove s3cmd backports nonsense
2014-01-27 16:54:06 -08:00
Tianon Gravi
94566b748e Update Dockerfile to be based on 13.10 instead of 12.04 so that we can remove our s3cmd backports need, and so we can have the new linux-libc-dev dependency we need for compiling the btrfs driver without nasty APT hackery
In addition, we've now hard-coded LXC version 0.8 compiled from source so that we can have the most stable dev environment possible.

Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-27 17:18:33 -07:00
Guillaume J. Charmes
1ddd815191 Merge pull request #3798 from vieux/3777_fix
fix mflag import
2014-01-27 15:31:54 -08:00
Victor Vieux
abbae8f764 check for errors in call, not readBody
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-27 23:31:04 +00:00
Victor Vieux
c4e7b0e4d5 fix mflag import
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-27 23:29:56 +00:00
Andy Rothfusz
07c4eda46a Fix 2720 -- Expanded documentation for docker run.
Docker-DCO-1.1-Signed-off-by: Andy Rothfusz <github@developersupport.net> (github: metalivedev)
2014-01-27 14:44:24 -08:00
Peter Waller
c4c558d138 Add Peter Waller <p@pwaller.net> to AUTHORS
Docker-DCO-1.1-Signed-off-by: Peter Waller <p@pwaller.net> (github: pwaller)
2014-01-27 22:21:58 +00:00
Guillaume J. Charmes
77d4df1e0b Merge pull request #3787 from pwaller/issue-3786
Fix for issue #3786 `docker rm` unmounts in the wrong order
2014-01-27 13:41:14 -08:00
Victor Vieux
99dd387fd7 Merge pull request #3784 from 1uptalent/3783_release_push_lock
FIX #3783: Release the push lock after the image push is completed
2014-01-27 13:40:28 -08:00
Victor Vieux
f4b75e06bc Merge pull request #3790 from crosbymichael/move-port-allocators
Move port allocators into network driver
2014-01-27 13:36:33 -08:00
Peter Waller
6f3d8d3908 Fix for #3674 Can't rm containers when disk full
Rather than creating a new directory and moving it there before
deleting that new directory, just move the directory we intend to
delete.

In the old way, the Mkdirall could fail, which meant that you
couldn't delete containers when the disk was full.

Tested.

Docker-DCO-1.1-Signed-off-by: Peter Waller <p@pwaller.net> (github: pwaller)
2014-01-27 21:34:11 +00:00
Victor Vieux
91b11dd156 Merge pull request #3776 from fabiofalci/container_list_test
Improve test for container list `ps`
2014-01-27 13:32:23 -08:00
Andy Rothfusz
bbfc531b51 Merge pull request #3542 from SvenDowideit/curl-prepare-commit-msg
move the contributing hook into contrib, and use curl in the same way as the gofmt above
2014-01-27 12:09:03 -08:00
Andy Rothfusz
093531ddb7 Merge pull request #3781 from mattymo/patch-1
Clean up grammar on puppet.rst
2014-01-27 12:06:43 -08:00
Andy Rothfusz
adae0b248d Merge pull request #3773 from mnaberez/supervisord-apache2-example
Use exec to replace bash with apache2 after environment is set up
2014-01-27 12:01:59 -08:00
Andy Rothfusz
ef37fdd1a8 Merge pull request #3770 from aaronfeng/fix-image-name-pos
move image name into correct position
2014-01-27 11:56:36 -08:00
Victor Vieux
f9e9637a9f Merge pull request #3756 from crosbymichael/fix-register-nobridge
Refactor and fix register interface when bridge does not exist
2014-01-27 10:40:42 -08:00
Peter Waller
32753c3d24 Fix for issue #3786
This is a fix for the case that one mount is inside another mount and
docker can't then delete the resulting container.

Docker-DCO-1.1-Signed-off-by: Peter Waller <p@pwaller.net> (github: pwaller)
2014-01-27 17:31:25 +00:00
Abel Muiño
77a34920b2 Release the push lock at the end
Docker-DCO-1.1-Signed-off-by: Abel Muiño <amuino@gmail.com> (github: amuino)
2014-01-27 16:22:59 +01:00
mattymo
551e1a766c Update puppet.rst 2014-01-27 18:21:48 +03:00
mattymo
03d9984f17 Clean up grammar on puppet.rst 2014-01-27 15:13:17 +03:00
Fabio Falci
1ee1dc2340 Improve test for container list ps
Docker-DCO-1.1-Signed-off-by: Fabio Falci <fabiofalci@gmail.com> (github: fabiofalci)
2014-01-26 23:14:50 +00:00
Michael Crosby
5e69b3837b Fix issues from rebase on master
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-26 14:07:43 -08:00
Michael Crosby
da61b99b39 Simplify logic for registering ports
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-26 14:01:38 -08:00
Michael Crosby
ac2a4e6410 Refactor to support multiple ip addresses
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-26 14:01:38 -08:00
Guillaume J. Charmes
da30eb7c20 Remove std sort and use custom sort for performances
Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-26 14:01:38 -08:00
Michael Crosby
303ed3c830 Add port allocator and move ipset into orderedintset
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-26 14:01:38 -08:00
Tianon Gravi
b994c13159 Update hack/make.sh with slightly clearer output and a more precise "are we in the Docker container?" check
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-26 13:24:03 -07:00
Mike Naberezny
2ba2a8ae40 Use exec to replace bash with apache2 after environment is set up
Docker-DCO-1.1-Signed-off-by: Mike Naberezny <mike@naberezny.com> (github: mnaberez)
2014-01-26 11:53:22 -08:00
James Turnbull
ffdc2d2657 Merge pull request #3771 from srt32/patch-1
Update README.md typo
2014-01-26 09:07:00 -08:00
Aaron Feng
31e5958009 move image name into correct position
Docker-DCO-1.1-Signed-off-by: Aaron Feng <aaron.feng@gmail.com> (github: aaronfeng)
2014-01-26 08:11:30 -05:00
Simon Taranto
33ee78004f Update README.md
Docker-DCO-1.1-Signed-off-by: Simon Taranto <simon.taranto@gmail.com> (github: srt32)
2014-01-26 00:08:55 -07:00
Josh Poimboeuf
5c04f1bcc7 network: remove unnecessary links iptables rule for return traffic
Currently there are two iptables rules per port for each link: one to
allow the parent to connect to the child's port, and another one to
allow return traffic from the child back to the parent.  The second rule
shouldn't be needed because the "ctstate RELATED,ESTABLISHED" rule can
already allow all established traffic.

So this patch does the following:

1. Move the RELATED,ESTABLISHED rule to be _before_ the potential
   inter-container communication DROP rule so it will work for
   inter-container traffic as well.  Since we're inserting, everything
   is reversed chronologically so it should be inserted _after_ we
   insert the DROP.  This also has a small performance benefit because
   it will be processed earlier and it's generally one of the most
   commonly used rules.

2. Get rid of the unnecessary return traffic rule per link.

3. Also move the other "Accept all non-intercontainer outgoing packets"
   rule to earlier.  This gives a small performance benefit since it's
   also a commonly used rule, and it makes sense to logically group it
   next to the ctstate rule.

Docker-DCO-1.1-Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> (github: jpoimboe)
2014-01-24 21:20:34 -06:00
Guillaume J. Charmes
b1d26985d0 Update tests to have custom routes
Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-24 17:18:48 -08:00
Guillaume J. Charmes
eedaf08eb8 Merge branch 'fix-register-nobridge' of https://github.com/crosbymichael/docker into crosbymichael-fix-register-nobridge 2014-01-24 17:02:19 -08:00
Victor Vieux
e6ae8f6d21 Merge pull request #3757 from vieux/auth_job
move auth to a job
2014-01-24 16:54:48 -08:00
Victor Vieux
1f8b1bb84e move auth to a job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-24 16:51:02 -08:00
Victor Vieux
e2003fea3a Merge pull request #3728 from vieux/container_job
Move containers to a job
2014-01-24 16:10:46 -08:00
Victor Vieux
5ea2986ce5 Move containers to a job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-24 16:07:42 -08:00
Victor Vieux
748a009cc4 Merge pull request #3727 from vieux/push_job
push job
2014-01-24 15:42:22 -08:00
Victor Vieux
e8ee18fa29 push job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-24 15:34:08 -08:00
Victor Vieux
4a708f9f5b Merge pull request #3739 from vieux/events_jobs
move events to job
2014-01-24 15:32:25 -08:00
Victor Vieux
5cc6312bfc move events to job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-24 15:28:17 -08:00
Victor Vieux
59df776469 Merge pull request #3621 from vieux/inspect_job
Inspect job
2014-01-24 15:22:20 -08:00
Victor Vieux
5fd8aa02ba merge 2 jobs, no more buffer
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-24 15:13:30 -08:00
Victor Vieux
a7e9baaf89 update attach to use the new job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-24 15:11:38 -08:00
Victor Vieux
134435a79c move inspect to 2 jobs
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-24 15:11:38 -08:00
Victor Vieux
22fb3e0f38 Merge pull request #3645 from vieux/rmi_job
Move rmi to a job
2014-01-24 15:10:02 -08:00
Victor Vieux
f41e0cf048 fix error handling
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-24 14:59:46 -08:00
Victor Vieux
177f658882 remove buffer
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-24 14:57:18 -08:00
Victor Vieux
564e6bc780 Move docker rmi to a job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-24 14:55:11 -08:00
Victor Vieux
4a96c329c0 Merge pull request #3725 from vieux/pull_import_job
Pull import job
2014-01-24 14:47:40 -08:00
Victor Vieux
35641f0ec7 remove useless flush method
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-24 14:46:31 -08:00
Victor Vieux
90e9a2d85a fix flush
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-24 14:46:31 -08:00
Victor Vieux
9dcbdbc4b1 move pull and import to a job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-24 14:46:31 -08:00
Victor Vieux
9d44298c5e Merge pull request #3741 from vieux/build_job
move build to a job
2014-01-24 11:34:32 -08:00
Victor Vieux
56ec121925 Merge pull request #3726 from vieux/attach_stderr
don't user os.Stderr in attach
2014-01-24 10:55:55 -08:00
James Turnbull
f1fbf5f219 Merge pull request #3748 from metalivedev/fixarticles
Fix TOC for Articles
2014-01-24 10:01:54 -08:00
Andy Rothfusz
6cae33ca0f Fix TOC for Articles 2014-01-23 18:55:26 -08:00
Victor Vieux
641005777a Merge pull request #3747 from crosbymichael/move-networking
Move IP Allocator into sub package and out of the core
2014-01-23 16:43:21 -08:00
Victor Vieux
42e35ecff3 remove useless anonymous field mentions
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-23 16:20:51 -08:00
Victor Vieux
415379e45d move build to a job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-23 16:08:05 -08:00
Andy Rothfusz
a71e7fe8ab Merge pull request #3730 from SvenDowideit/JSON-RUN-format-docs
talk about the new exec form of RUN (Closes #3723) implemented by #3558
2014-01-23 15:54:00 -08:00
Victor Vieux
0dd856ee7f Merge pull request #3724 from creack/extract-lxc-phase-2
Refactor process to command
2014-01-23 15:28:45 -08:00
Victor Vieux
f948820d03 Merge pull request #3743 from pmorie/typo
Fix typo in comment in container.go
2014-01-23 15:15:18 -08:00
Paul Morie
2f57eb0410 Fix typo in container.go
Docker-DCO-1.1-Signed-off-by: Paul Morie <pmorie@gmail.com> (github: pmorie)
2014-01-23 18:10:33 -05:00
Michael Crosby
ec73c23231 Refactor and fix register interface when bridge does not exist
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-23 14:39:10 -08:00
Victor Vieux
1896934616 Merge pull request #3742 from vieux/update_todo
no more TODO
2014-01-23 12:57:00 -08:00
Victor Vieux
5d71ad8b19 no more TODO
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-23 12:55:58 -08:00
Victor Vieux
4e08bb5629 Merge pull request #3740 from tianon/fix-mflag-dyntest
Fix mflag test issue with "ResetForTesting"
2014-01-23 12:09:08 -08:00
Tianon Gravi
f60eee4894 Fix mflag test issue with "ResetForTesting" (which only showed up under dyntest for some odd reason)
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-23 13:03:17 -07:00
Victor Vieux
7687b3cec1 Merge pull request #3738 from vieux/update_todo
update REMOTE_TODO.md
2014-01-23 10:51:38 -08:00
Victor Vieux
4d4339c6de update REMOTE_TODO.md
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-23 10:50:11 -08:00
Chris St. Pierre
fd2403b830 fix shebang in mkimage-yum.sh
Docker-DCO-1.1-Signed-off-by: Chris St. Pierre <chris.a.st.pierre@gmail.com> (github: stpierre)
2014-01-23 12:01:24 -05:00
Michael Crosby
ea5b3e193b Finalize core changes with new package
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-23 05:22:32 -08:00
Chris St. Pierre
d419da7227 Added new mkimage-yum.sh script to create CentOS base images
mkimage-rinse.sh requires rinse, which is not readily available on
CentOS or Fedora.  Plus, creating a base image is trivial with yum
alone.

Docker-DCO-1.1-Signed-off-by: Chris St. Pierre <chris.a.st.pierre@gmail.com> (github: stpierre)
2014-01-23 07:09:44 -05:00
Michael Crosby
9d11db0f8c Update code for new test cases
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-23 02:22:13 -08:00
Michael Crosby
fccca3542b Move tests from core into ipallocator
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-23 01:31:38 -08:00
Michael Crosby
648357ffdf Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael) 2014-01-23 00:28:35 -08:00
Tianon Gravi
210db8e846 Merge pull request #3720 from therealprologic/master
Add script for building CRUX base images
2014-01-22 21:28:51 -08:00
Sven Dowideit
bfc1043f36 talk about the new exec form of RUN (Closes #3723) implemented by #3558
Docker-DCO-1.1-Signed-off-by: Sven Dowideit <SvenDowideit@fosiki.com> (github: SvenDowideit)
2014-01-23 14:00:16 +10:00
James Mills
d247b7d426 Added script for building Base Docker CRUX images
Docker-DCO-1.1-Signed-off-by: James Mills <prologic@shortcircuit.net.au> (github: therealprologic)
2014-01-23 13:53:19 +10:00
Michael Crosby
79bb8212e0 Implement pos for set and add unit tests
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-22 19:34:47 -08:00
Michael Crosby
6bc05899aa Finish implementation and begin working on tests
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-22 18:05:20 -08:00
Michael Crosby
78b3d89f87 Merge remote-tracking branch 'fork/stack_set' into move-networking
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-22 17:20:52 -08:00
Guillaume J. Charmes
3e3abdd770 Use int32 instead of string for ip set
Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-22 17:20:19 -08:00
Michael Crosby
9c29376fcb Merge remote-tracking branch 'fork/stack_set' into move-networking
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-22 17:13:13 -08:00
Guillaume J. Charmes
18df387bf8 Implement PullBack()
Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-22 17:12:28 -08:00
Michael Crosby
b58c1a6438 Merge remote-tracking branch 'fork/stack_set' into move-networking
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-22 16:24:55 -08:00
Michael Crosby
e048c28159 Merge remote-tracking branch 'fork/stack_set' into move-networking
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-22 16:13:59 -08:00
Guillaume J. Charmes
43bcbf06a6 Implement Containers in set
Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-22 16:13:28 -08:00
Michael Crosby
d32777f6b1 Implement get next ip
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-22 16:13:22 -08:00
Guillaume J. Charmes
63d18d875b Implement basic stack for ips
Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-22 16:00:53 -08:00
Victor Vieux
e7a9d23640 don't user os.Stderr in attach
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-22 15:54:22 -08:00
Michael Crosby
9e2e8a923c WIP for ip allocator
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-22 15:52:39 -08:00
Michael Crosby
8723a8a89e Populate command in ghost state to pass to RestoreCommand
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-22 14:05:01 -08:00
Michael Crosby
ba8ca59862 Compile driver interface changes
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-22 14:05:01 -08:00
Guillaume J. Charmes
75e0357d69 Populate Command self cointainer (toward Restore())
Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-22 14:04:55 -08:00
Alexander Larsson
e51af36a85 Add experimenta btrfs driver
This is an experimental btrfs driver. To use it you must have
/var/lib/docker mounted on a btrfs filesystem and explicitly
specify DOCKER_DRIVER=btrfs in the docker daemon environment.

It works by using subvolumes for the docker image/container layers.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-22 21:44:09 +01:00
Andy Rothfusz
700db10c85 Merge pull request #3716 from johngmyers/patch-1
Grammar fixes and wording improvements
2014-01-22 12:01:13 -08:00
Andy Rothfusz
9a2e673f4f Merge pull request #3713 from SvenDowideit/document-bind-mount-file
bind mounts work for files - give an example, as its very very useful.
2014-01-22 11:54:41 -08:00
Michael Crosby
2a6e93a6fb Merge pull request #3558 from tianon/buildfile-run-json
Add support for RUN [""] in Dockerfiles
2014-01-22 11:51:34 -08:00
Guillaume J. Charmes
f61a91f50a Merge pull request #3073 from alexlarsson/refcount-driver-mounts
Refcount driver mounts
2014-01-22 11:42:17 -08:00
Guillaume J. Charmes
44a0bab304 Merge pull request #3712 from plietar/kill-signal
Add a -s option to the kill command to specify a signal.
2014-01-22 11:38:16 -08:00
Michael Crosby
639d2ecd4f Merge pull request #3682 from alexlarsson/implement-tar
Implement tar in Go
2014-01-22 11:23:47 -08:00
Guillaume J. Charmes
4ccf423f42 Merge pull request #3695 from chazomaticus/3628-ignore-kernel-flavor
ignore non-numeric characters when parsing kernel version
2014-01-22 11:19:05 -08:00
Charles Lindsay
dea3c2655d Add comment about ignoring Sscanf error
Docker-DCO-1.1-Signed-off-by: Charles Lindsay <chaz@chazomatic.us> (github: chazomaticus)
2014-01-22 09:32:50 -08:00
Sven Dowideit
7c55cbd4c9 move the contributing hook into hack, and use curl in the same way as the gofmt above
and remove the fmt-check one we don't document

tianon tells me they're called GitHub, not Github :)

Docker-DCO-1.1-Signed-off-by: Sven Dowideit <SvenDowideit@fosiki.com> (github: SvenDowideit)

Docker-DCO-1.1-Signed-off-by: Sven Dowideit <SvenDowideit@home.org.au> (github: SvenDowideit)
2014-01-22 21:31:42 +10:00
Sven Dowideit
0f5ad430c4 change the documentation only - It looks like we have a number of cmdline params to completely update from the code version
Docker-DCO-1.1-Signed-off-by: Sven Dowideit <SvenDowideit@home.org.au> (github: SvenDowideit)
2014-01-22 21:29:05 +10:00
John Gardiner Myers
1c06a91964 Wording improvements
Docker-DCO-1.1-Signed-off-by: John Gardiner Myers <jgmyers@proofpoint.com> (github: johngmyers)
2014-01-21 22:40:33 -08:00
John Gardiner Myers
f3cb808e9d Grammar and punctuation fixes
Docker-DCO-1.1-Signed-off-by: John Gardiner Myers <jgmyers@proofpoint.com> (github: johngmyers)
2014-01-21 22:40:06 -08:00
Paul Lietar
1f75a0bf43 Add a --signal option to the kill command to specify a signal.
Docker-DCO-1.1-Signed-off-by: Paul Lietar <paul@lietar.net> (github: plietar)
2014-01-22 06:10:52 +00:00
Michael Crosby
3cb5bc5ae5 Merge pull request #3708 from creack/fix_run_exit_code
Fix issue with exit code in non-tty mode.
2014-01-21 18:15:01 -08:00
Guillaume J. Charmes
fd38de2818 Fix issue with exit code in non-tty mode.
Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-21 18:05:03 -08:00
Victor Vieux
4c1879f919 Merge branch 'add_missing_attributes' of https://github.com/rogaha/docker into rogaha-add_missing_attributes
Conflicts:
	api.go

Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-21 18:01:19 -08:00
Tianon Gravi
572002a715 Merge pull request #3707 from bkcsoft/fix-bash-hashbangs
Update bash shebangs to use "/usr/bin/env bash" for increased portability
2014-01-21 17:30:52 -08:00
Kim BKC Carlbacker
b1953baba2 This should make all bash-scripts run on pretty much any posix-system (with bash installed ofc...)
Docker-DCO-1.1-Signed-off-by: Kim BKC Carlbacker <kim.carlbacker@gmail.com> (github: bkcsoft)
2014-01-22 02:21:56 +01:00
Guillaume J. Charmes
cb33f739a1 Merge pull request #3705 from crosbymichael/fix-die-event
Fix die command when monitor returns
2014-01-21 17:13:29 -08:00
Michael Crosby
0b789ca844 Merge pull request #3706 from creack/fix_wait_stopped
Fix wait on stopped container (after docker restart) + add Unit test for that case
2014-01-21 17:03:35 -08:00
Guillaume J. Charmes
0376a69cb1 Fix wait on stopped container (after docker restart) + add Unit test for that case
Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-21 16:49:24 -08:00
Michael Crosby
980000071d Merge pull request #2655 from mpetazzoni/create-local-bind-dirs
Automatically create non-existent bind-mounted host directories
2014-01-21 16:27:20 -08:00
Michael Crosby
80f128a6ea Fix die command when monitor returns
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-21 16:18:57 -08:00
Maxime Petazzoni
47d1413d7a Documentation about automatic bind-mount dir creation
Docker-DCO-1.1-Signed-off-by: Maxime Petazzoni <max@signalfuse.com> (github: mpetazzoni)
2014-01-21 16:05:30 -08:00
Maxime Petazzoni
3e96f46b30 Automatically create non-existent bind-mounted directories on the host
Fixes #1279.

Docker-DCO-1.1-Signed-off-by: Maxime Petazzoni <max@signalfuse.com> (github: mpetazzoni)
2014-01-21 16:05:29 -08:00
Michael Crosby
b417f79c00 Merge pull request #3704 from vieux/json_api_return_valid
Switch back to the valid json format
2014-01-21 15:35:06 -08:00
Victor Vieux
be6aeda1e4 Merge pull request #3640 from proppy/networkgetroutes-add-default
netlink: add default Route to NetworkGetRoutes
2014-01-21 15:20:16 -08:00
Victor Vieux
e3461bc8d6 switch back to the valid json format
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-21 15:06:23 -08:00
Andy Rothfusz
62c4563987 Merge pull request #3688 from shykes/docs-simplify-basic-usage
Simplify basic usage docs
2014-01-21 11:41:32 -08:00
Guillaume J. Charmes
e56562c35e Merge pull request #3566 from tianon/fix-volume-symlinks
Fix symlink mounting issues
2014-01-21 11:37:05 -08:00
Victor Vieux
9164ba6516 Merge pull request #3686 from vieux/load_job
Load job
2014-01-21 11:29:15 -08:00
Victor Vieux
f2f44b91a8 move load to a job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-21 11:28:45 -08:00
Andy Rothfusz
ba4ae40445 Merge pull request #3690 from shykes/cleanup-maintainers
Cleanup maintainers
2014-01-21 11:18:23 -08:00
Michael Crosby
f98a596be9 Merge pull request #3698 from alexlarsson/fix-shared-root
Fix handling of shared roots
2014-01-21 11:09:36 -08:00
Andy Rothfusz
fb919137be Merge pull request #3687 from shykes/docs-intro
docs: harmonize intro paragraph with website
2014-01-21 11:02:55 -08:00
Andy Rothfusz
31274ffccb Merge pull request #3700 from jamtur01/fixedtoc
Fixed commandline/index warning in TOC
2014-01-21 10:52:13 -08:00
Tianon Gravi
678d76fa9c Merge pull request #3671 from tianon/completion-ignore-stderr
Update bash completion to ignore stderr output of docker binary
2014-01-21 10:40:23 -08:00
Charles Lindsay
cce099aa34 Re-add kernel Flavor tests
Docker-DCO-1.1-Signed-off-by: Charles Lindsay <chaz@chazomatic.us> (github: chazomaticus)
2014-01-21 09:56:53 -08:00
Tianon Gravi
b23e6e99b3 Merge pull request #3459 from Barthalion/master
Fix mkimage-arch.sh to generate cleaner Arch Linux images and do so with cleaner code
2014-01-21 07:11:57 -08:00
Bartłomiej Piotrowski
4137a0ea32 mkimage-arch: provide and use own pacman.conf
Docker-DCO-1.1-Signed-off-by: Bartłomiej Piotrowski <b@bpiotrowski.pl> (github: Barthalion)
2014-01-21 14:22:56 +01:00
James Turnbull
fabf96b8ff Fixed commandline/index warning in TOC
Docker-DCO-1.1-Signed-off-by: James Turnbull <james@lovedthanlost.net> (github: jamtur01)
2014-01-21 08:22:51 -05:00
Bartłomiej Piotrowski
787ff55283 mkimage-arch: use hash to check if command is available
Apart from having more predictable return codes on various operating
systems, it additionally caches the path to application.

Docker-DCO-1.1-Signed-off-by: Bartłomiej Piotrowski <b@bpiotrowski.pl> (github: Barthalion)
2014-01-21 14:22:47 +01:00
Bartłomiej Piotrowski
da4ba80733 mkimage-arch: don't generate ISO-8859-1 locale
Docker-DCO-1.1-Signed-off-by: Bartłomiej Piotrowski <b@bpiotrowski.pl> (github: Barthalion)
2014-01-21 14:22:39 +01:00
Bartłomiej Piotrowski
c6535d272c mkimage-arch: unify usage of brackets around variables
Docker-DCO-1.1-Signed-off-by: Bartłomiej Piotrowski <b@bpiotrowski.pl> (github: Barthalion)
2014-01-21 14:22:33 +01:00
Bartłomiej Piotrowski
a4e6e9bd41 mkimage-arch: remove $DEV instead of renaming it
Docker-DCO-1.1-Signed-off-by: Bartłomiej Piotrowski <b@bpiotrowski.pl> (github: Barthalion)
2014-01-21 14:22:26 +01:00
Bartłomiej Piotrowski
c138c335a5 mkimage-arch: use mktemp to create ROOTFS directory
Docker-DCO-1.1-Signed-off-by: Bartłomiej Piotrowski <b@bpiotrowski.pl> (github: Barthalion)
2014-01-21 14:21:43 +01:00
Alexander Larsson
f918fca3bf archive: Always end directory filenames in tars with /
This matches what tar does, and without it the tarsum created
by the registry will not match the docker one.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-21 12:52:05 +01:00
Alexander Larsson
5fe26ee426 aufs: Unmount inactive devices
This implements the new Put() operation such that
Get()/Put() maintains a refcount for each ID, mounting
only on first Get() and unmounting on the last Get().

This means we avoid littering the system with lots of mounts
and free resources related to them.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-21 11:26:11 +01:00
Alexander Larsson
886f650d9b devicemapper: Unmount inactive devices
This implements the new Put() operation such that
Get()/Put() maintains a refcount for each ID, mounting
only on first Get() and unmounting on the last Get().

This means we avoid littering the system with lots of mounts
and active devicemapper devices and free resources related
to them.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)

asdfljk
2014-01-21 11:26:11 +01:00
Alexander Larsson
191aa17d16 Remove container.EnsureMounted
This was deprecated already and all it did was call Mount().
The use of this was a bit confusing since we need to pair Mount/Unmount
calls which wasn't obvious with "EnsureMounted".

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-21 11:26:11 +01:00
Alexander Larsson
bcaf6c2359 Add Put() to graphdriver API and use it
This makes all users of Put() have a corresponding call
to Get() which means we will be able to track whether
any particular ID is in use and if not unmount it.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-21 11:25:37 +01:00
Alexander Larsson
bde2d3aef7 integration: Fix TestGetContainersExport
The tar changes made the name of the file in the tar archive
change from  "./test" to "test", update the test to the new name.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-21 10:41:08 +01:00
Alexander Larsson
08ab554195 Fix handling of shared roots
If rootIsShared() is detected we apply the shell stuff to early, before
the real command and arguments are added to the parameters. This
means they get passed on to unshare rather than docker-init, breaking
docker on e.g. fedora like:

goroutine 1 [running]:
runtime.panic(0x678340, 0x9b3fd7)
	/usr/lib64/golang/src/pkg/runtime/panic.c:266 +0xb6
github.com/dotcloud/docker/execdriver/lxc.func·001(0xc21000a1b0, 0xc21001eab0, 0x7fff24715faf)
	/home/alex/vcs/go/src/github.com/dotcloud/docker/execdriver/lxc/driver.go:41 +0x525
github.com/dotcloud/docker/sysinit.executeProgram(0xc21000a1b0, 0xc21000a1b0, 0xa)
	/home/alex/vcs/go/src/github.com/dotcloud/docker/sysinit/sysinit.go:34 +0xca
github.com/dotcloud/docker/sysinit.SysInit()
	/home/alex/vcs/go/src/github.com/dotcloud/docker/sysinit/sysinit.go:88 +0x791
main.main()
	/home/alex/vcs/go/src/github.com/dotcloud/docker/dockerinit/dockerinit.go:14 +0x1a

The fix is to construct the full params array before escaping it.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-21 10:22:13 +01:00
Solomon Hykes
fdf43f5de1 docs: harmonize intro paragraph with website
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-01-21 07:33:26 +00:00
Solomon Hykes
ae2af201f3 Docs: fix capitalization of "Docker"
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-01-21 07:27:55 +00:00
Charles Lindsay
b78ae3b652 Re-add Flavor to KernelVersionInfo
Docker-DCO-1.1-Signed-off-by: Charles Lindsay <chaz@chazomatic.us> (github: chazomaticus)
2014-01-20 21:26:23 -08:00
Charles Lindsay
5b97e00438 Use Sscanf instead of regexp
Docker-DCO-1.1-Signed-off-by: Charles Lindsay <chaz@chazomatic.us> (github: chazomaticus)
2014-01-20 21:02:37 -08:00
Roberto G. Hashioka
d16691e3ad - Ajusted server.go with gofmt
Docker-DCO-1.1-Signed-off-by: Roberto Hashioka <roberto.hashioka@docker.com> (github: rogaha)
2014-01-21 04:11:40 +00:00
Roberto G. Hashioka
2cfd696b9b Added missing attributes to api search calls:
- Added an argument to the call() method in order to control the auth sharing
- Enabled it only for search. Pulls and pushes were enabled already.
- Grouped a few variable declarations

Docker-DCO-1.1-Signed-off-by: Roberto Hashioka <roberto.hashioka@docker.com> (github: rogaha)
2014-01-21 04:06:19 +00:00
Charles Lindsay
14b2b2b7c2 Fix apparent typo
Docker-DCO-1.1-Signed-off-by: Charles Lindsay <chaz@chazomatic.us> (github: chazomaticus)
2014-01-20 19:49:40 -08:00
Charles Lindsay
d2c9c1036b Remove Flavor from KernelVersionInfo
Also change to parsing it with regexp to keep things simple.

Docker-DCO-1.1-Signed-off-by: Charles Lindsay <chaz@chazomatic.us> (github: chazomaticus)
2014-01-20 19:49:39 -08:00
Charles Lindsay
fc30346086 Add failing test for odd kernel version
Docker-DCO-1.1-Signed-off-by: Charles Lindsay <chaz@chazomatic.us> (github: chazomaticus)
2014-01-20 19:49:39 -08:00
Tianon Gravi
a37ffa4041 Merge pull request #3662 from tianon/add-udev-to-deb
Add udev rules file to our generated deb package
2014-01-20 19:44:05 -08:00
Solomon Hykes
c24d128bb5 Docs: move advanced topic "create your own base image" out of basic user guide
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-01-21 03:43:16 +00:00
Solomon Hykes
589e1a9bdc docs: "first steps with docker" is a better title than "learn basic commands"
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-01-21 03:43:16 +00:00
Solomon Hykes
76eee50a67 docs: add standard 'check your docker install' paragraph to the 'hello world' examples.
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-01-21 03:43:16 +00:00
Solomon Hykes
cf5504eed5 docs: move a sysadmin-focused topic out of the basic usage manual and into installation docs (setting up a user group for non-root access)
docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-01-21 03:43:16 +00:00
Solomon Hykes
cf17816083 docs: simplify basic usage doc, step 1: check your docker install
docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-01-21 03:43:16 +00:00
Solomon Hykes
1fe426641d Remove myself as sole maintainer of api reference docs.
Please still ping me before changing APIs :)

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-01-20 18:49:13 -08:00
Solomon Hykes
230554695a Remove Ken from docs maintainers (he's busy on other things)
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-01-20 18:48:59 -08:00
Andy Rothfusz
90b52b7e06 Reordering to make FAQ last 2014-01-20 17:11:03 -08:00
Andy Rothfusz
acf43b4da7 Merge pull request #3618 from shykes/docs-cleanup-install
Docs cleanup install
2014-01-20 17:10:02 -08:00
Andy Rothfusz
b38d3154c8 Merge pull request #3600 from SvenDowideit/ghost-status-doc
Ghost status doc
2014-01-20 16:51:47 -08:00
Victor Vieux
497e7d651a update todo
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-20 16:09:07 -08:00
Guillaume J. Charmes
12468f2bc8 Rename Process to Command
Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-20 16:05:07 -08:00
Victor Vieux
ffe78e82c3 Merge pull request #3442 from DevTable/master
Fix support for registry auth with Dockerfile build.
2014-01-20 15:50:14 -08:00
Jake Moshenko
6e6ff85362 Fix support for registry auth with Dockerfile build.
Docker-DCO-1.1-Signed-off-by: Jake Moshenko <jake@devtable.com> (github: jakedt)
2014-01-20 18:35:14 -05:00
Michael Crosby
37c1c7cf7a Merge pull request #3685 from pnasrat/3679-cgroups-outside-lxc
Move Resources into exec driver
2014-01-20 15:35:06 -08:00
Guillaume J. Charmes
c2501942cf Merge pull request #3684 from crosbymichael/push-multiple-tags
Push multiple tags for repository
2014-01-20 15:24:53 -08:00
Solomon Hykes
45e8d1f4c0 docs: reuse official dependencies list from packager's guide for custom binary install docs 2014-01-20 23:17:40 +00:00
Solomon Hykes
4e54dd245a docs: remove out-of-date kernel requirements document.
Requirements differ from platform to platform depending on the plugins used, and so should be documented separately for each target platform

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-01-20 23:11:30 +00:00
Solomon Hykes
dd786eefbb docs: instead of a top-level 'upgrading docker' doc, add an 'upgrades' paragraph to each installation target
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-01-20 23:11:30 +00:00
Solomon Hykes
29e6868cc3 docs: change topic of windows install docs to 'install docker on windows'
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-01-20 23:11:30 +00:00
Solomon Hykes
c56e3b8569 docs: move 'vagrant' install docs to the more accurate 'mac' install docs
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-01-20 23:11:30 +00:00
Solomon Hykes
d8a71635d4 docs: move security article to a new 'articles' section
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-01-20 23:11:30 +00:00
Paul Nasrat
71c1646ba3 Don't expose cgroups via the execdriver API.
Use Resources to represent container limits rather than a cgroup specific field.

Docker-DCO-1.1-Signed-off-by: Paul Nasrat <pnasrat@gmail.com> (github: pnasrat)
2014-01-20 17:06:24 -05:00
Michael Crosby
fbd374f30b Merge pull request #3681 from pnasrat/extract-cgroups-pkg
Extract cgroups into pkg sub dir
2014-01-20 14:00:44 -08:00
Andy Rothfusz
6dfbbaa4ff Merge pull request #3650 from tianon/fix-doc-man-generation
Fix docs man page generation and add Dockerfile man page
2014-01-20 13:44:01 -08:00
Michael Crosby
a2aab7757e Make sure new repositories can be pushed with multiple tags
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-20 13:39:35 -08:00
Alexander Larsson
8a4824d1ad hack: Remove GNU Tar requirement
We no longer call out to tar, so this is not needed.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-20 20:35:16 +01:00
Tianon Gravi
6ed9b06e07 Fix Travis build errors by bumping our python module versions to be newer
See also https://bitbucket.org/birkenfeld/sphinx/issue/1281/sphinx-113-not-build-proper-manpages

Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-20 12:30:18 -07:00
Alexander Larsson
5ea48aa7f8 Implement TarFilter in go, rather than calling out to tar
This uses a plain filepath.Walk + addTarFile to create a tar file,
optionially compressing it with gzip.

Unfortunately go only has gzip compression support, not bzip2 or xz.
However, this is not a regression, as docker currently uses *no*
compression for TarFilter(). The only compression of tarfiles
currently happens in utils/tarsum.go, and that manually does gzip
compression.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-20 20:26:20 +01:00
Alexander Larsson
bab8efbf05 Simplify addTarFile
We can use tar.FileInfoHeader to do much of the work.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-20 20:26:20 +01:00
Alexander Larsson
5b77e51e0a archive: Extract code from ExportChanges to addTarFile()
This is the code that takes a normal file and adds it to a TarWriter.
We extract it so that we can share it with Tar().

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-20 20:26:20 +01:00
Alexander Larsson
4fb1db7f74 archive: Remove unused features
This simplifies that code that calls out to tar by removing support
for now unused features.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-20 20:26:20 +01:00
Michael Crosby
03a25c0800 Merge branch 'fix-registry-push-tags' of https://github.com/codeaholics/docker into codeaholics-fix-registry-push-tags
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-20 11:23:09 -08:00
Paul Nasrat
2553029959 Extract cgroups pkg.
Initial move before enhancing cgroups package.

Docker-DCO-1.1-Signed-off-by: Paul Nasrat <pnasrat@gmail.com> (github: pnasrat)
2014-01-20 14:15:44 -05:00
Victor Vieux
69be8adb68 Merge pull request #3665 from vgeta/3450-fix
Fixes Issue #3450
2014-01-20 11:10:54 -08:00
Guillaume J. Charmes
b563c0c02b Merge pull request #3292 from alexlarsson/export-changes-manual
Don't shell out to tar for ExportChanges
2014-01-20 11:08:16 -08:00
Michael Crosby
0f0e582490 Merge pull request #3680 from pnasrat/extract-mount-pkg
Extract mount into pkg.
2014-01-20 11:04:16 -08:00
Paul Nasrat
2e094db639 Extract mount into pkg.
Mount is self contained and generic, it should be in pkg, to allow other pkg modules to use it.

Docker-DCO-1.1-Signed-off-by: Paul Nasrat <pnasrat@gmail.com> (github: pnasrat)
2014-01-20 13:59:29 -05:00
Guillaume J. Charmes
3aa27eb055 Merge pull request #3295 from alexlarsson/implement-untar
Implement UnTar via archive/tar
2014-01-20 10:54:42 -08:00
Guillaume J. Charmes
a431f1703d Merge pull request #3678 from creack/sysinfo_update
Add MAINTAINER and remove docker/utils dep from pkg/sysinfo
2014-01-20 10:39:37 -08:00
Michael Crosby
f87a67a3a8 Merge pull request #3649 from vieux/remove_buffers
refactor, remove useless buffers
2014-01-20 10:29:54 -08:00
Tianon Gravi
274863f221 Update Travis to also compile the man page(s) now that they compile properly again
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-20 11:29:24 -07:00
Tianon Gravi
1c152f443d Add Dockerfile man page generation from our Dockerfile reference page
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-20 11:29:07 -07:00
Tianon Gravi
10fc518fba Fix docs manpage generation
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-20 11:29:07 -07:00
Tianon Gravi
4fb507d756 Merge pull request #3656 from tianon/travis-test-docs
Update Travis to also test compiling the docs
2014-01-20 10:28:44 -08:00
Tianon Gravi
fe02d58927 Update Travis to also test compiling the docs
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-20 11:24:38 -07:00
Tianon Gravi
3bd36157a1 Merge pull request #3652 from tianon/fix-travis-on-non-master-prs
Fix Travis for PRs against non-master (like release, for example)
2014-01-20 10:21:50 -08:00
Guillaume J. Charmes
ff662446f7 Add MAINTAINER and remove docker/utils dep from pkg/sysinfo
Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-20 10:20:29 -08:00
Tianon Gravi
9152aab653 Update bash completion to ignore stderr output of docker binary
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-20 01:26:01 -07:00
Victor Vieux
cfd3d02737 Merge pull request #3669 from tianon/new-flags-completion
Update New Flags Completion
2014-01-20 00:12:40 -08:00
Tianon Gravi
7379a22a8d Fix symlink mounting issues by evaluating symlinks directly on the LHS of a bind-mount -v and by FollowSymlinkInScope on the RHS just before mounting
Tested successfully with variations around mounting /var/run and /var/run/docker.sock inside a "debian" container directly at /var/run/docker.sock where /var/run is a symlink to "/run" on both the host and in the container.

Fixes #3262

Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-20 00:38:54 -07:00
Tianon Gravi
fb981bdace Switch docker run --username to docker run --user which is more accurate (while we can still do so without breaking anyone's scripts)
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-20 00:28:55 -07:00
Tianon Gravi
c6e43154f1 Resync bash completion to include all flags defined in the code, and to autocomplete properly on all parameters that are reasonably possible to do so on today
This also includes several new minor features that are interesting, so do explore a little. :)

Finally, this also fixes a few bugs where commands would complete parameters that they won't necessarily accept.  We still have a few of these cases, but they're reduced to a minimum now.

Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-20 00:28:55 -07:00
vgeta
e45b87031c Fixes Issue# 3450
Docker-DCO-1.1-Signed-off-by: Gopikannan Venugopalsamy <gopikannan.venugopalsamy@gmail.com> (github: vgeta)
2014-01-19 17:48:54 -08:00
Sven Dowideit
b8cca8138b add a little info about ghosts
Docker-DCO-1.1-Signed-off-by: Sven Dowideit <SvenDowideit@home.org.au> (github: SvenDowideit)
2014-01-20 10:37:06 +10:00
Tianon Gravi
595b8f2986 Add udev rules file to our generated deb package
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-19 17:27:43 -07:00
Michael Crosby
a60f0a0754 Merge pull request #3256 from alexlarsson/blkdiscard
Discard all data on devicemapper devices when deleting them
2014-01-18 10:12:10 -08:00
Tianon Gravi
980e0bf52c Fix Travis for PRs against non-master (like release, for example)
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-18 10:41:37 -07:00
Victor Vieux
455495f7ca refactor, remove useless buffers
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-17 18:54:02 -08:00
Victor Vieux
dc359e07d3 Merge pull request #3638 from tianon/update-mailmap-authors
Update .mailmap and AUTHORS - we're up to 316 unique contributors by my count!
2014-01-17 18:19:41 -08:00
Guillaume J. Charmes
fec97e72db Merge pull request #3580 from crosbymichael/extract-lxc
Move LXC into a sub pkg and provide initial execution driver interface
2014-01-17 18:10:10 -08:00
Michael Crosby
d5112ffce6 Fix rebase for init error
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:58 -08:00
Michael Crosby
5c30c4379a Add todos for driver changes
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:58 -08:00
Michael Crosby
97c8450705 Make sure drivers are registerd within sysinit
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:58 -08:00
Michael Crosby
cdfebc2a20 Change drvier name to append version
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:58 -08:00
Michael Crosby
70a5cb95b3 Move lxc template into lxc driver
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:58 -08:00
Guillaume J. Charmes
9e9f4b925b Rename Capabilities in sysinfo and move it to its own subpackage
Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)

Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: crosbymichael)
2014-01-17 17:42:58 -08:00
Michael Crosby
ca8dd73fbf Small fixes to type names
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Guillaume J. Charmes
889b4b10ae Cleanup + add Info to driver in order to have specific IsRunning()
Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)

Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Guillaume J. Charmes
f7684ea7f6 Move docker init into drivers functions
Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)

Docker-DCO-1.1-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
d3bae131d6 Make sure proc is umounted for chroot driver within init
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
8c9f62d037 Improve wait for lxc and driver interface
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
c2b602b2ac Use utils.Go to get error from monitor
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
e765c67b47 Add json tags and comments to exedriver types
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
f3f2456b04 Simplify chroot wait, address code review issues
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
8a38ead219 Move setup pty and standard pipes to funcs
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
1e81387edc Remove SysinitPath from process
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
f846ecdc77 Make exec driver run a blocking command
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
92e6db7beb Improve chroot driver by mounting proc
Add -driver flag to dockerinit

Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
8e0741f5e4 Add chroot driver for testing
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
1d8455e683 Move RootIsShared to lxc driver
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
93ead2fe78 Update with lxc unconfined changes
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
66782730b8 Fix network disabled for container
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
77936ba1a1 Fix race in set running
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
381d593d04 Fix race in cleanup
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
ad9710685c Fix race in TestRun
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
8b60273f76 Update with container specific waitLock
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
8e87835968 Rework monitor and waitlock inside of driver
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:22 -08:00
Michael Crosby
5a3d9bd432 WIP complete integration test run
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:21 -08:00
Michael Crosby
1c1cf54b0a Fix tty set issue for ioctl error
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:21 -08:00
Michael Crosby
5573c744e4 Embed exec.Cmd on Process
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:21 -08:00
Michael Crosby
25a2697717 Keep state in core on container
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:21 -08:00
Michael Crosby
f2680e5a5b Integrate process changes in container.go
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:21 -08:00
Michael Crosby
203b69c8c9 Implement lxc driver
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:21 -08:00
Michael Crosby
1ceb049118 Initial driver changes proposal
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 17:42:21 -08:00
Victor Vieux
a823d7967f Merge pull request #3647 from vieux/refactor_registers
refactor registers
2014-01-17 17:39:54 -08:00
Victor Vieux
1776046618 Merge pull request #3322 from vieux/new_flags
new --flags
2014-01-17 17:35:18 -08:00
Victor Vieux
e71dbf4ee5 update commands.go
update docker.go

move to pkg

update docs

update name and copyright

change --sinceId to --since-id, update completion and docs

Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor@docker.com> (github: vieux)
2014-01-17 17:33:15 -08:00
Victor Vieux
3ff5f2374c refactor registers
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-17 16:57:43 -08:00
Johan Euphrosine
77d9fd2628 netlink: make darwin happy
Docker-DCO-1.1-Signed-off-by: Johan Euphrosine <proppy@google.com> (github: proppy)
2014-01-17 16:55:42 -08:00
Johan Euphrosine
dadd54dba3 netlink: move Route type to common arch file
Docker-DCO-1.1-Signed-off-by: Johan Euphrosine <proppy@google.com> (github: proppy)
2014-01-17 14:04:11 -08:00
Andy Rothfusz
ebaa92b208 Merge pull request #3620 from jamtur01/refman
Added Reference Manual
2014-01-17 13:42:22 -08:00
James Turnbull
89ff488b55 Added Reference Manual
Docker-DCO-1.1-Signed-off-by: James Turnbull <james@lovedthanlost.net> (github: jamtur01)
2014-01-17 15:29:32 -05:00
Guillaume J. Charmes
941d4ffa3e Merge pull request #3641 from gfrey/fix_compression
detect compressed archives in API /build call
2014-01-17 12:02:54 -08:00
Michael Crosby
2f066aef49 Merge pull request #3632 from crosbymichael/stream-cp
Stream the cp operation on the client
2014-01-17 11:29:51 -08:00
Johan Euphrosine
a886fbfa4a network: exclude default routes from checkRouteOverlaps
Docker-DCO-1.1-Signed-off-by: Johan Euphrosine <proppy@google.com> (github: proppy)
2014-01-17 11:09:53 -08:00
Johan Euphrosine
26726dc9ff netlink: add default Route to NetworkGetRoutes
Docker-DCO-1.1-Signed-off-by: Johan Euphrosine <proppy@google.com> (github: proppy)
2014-01-17 11:09:50 -08:00
Michael Crosby
95df957f73 Replace creating buffer
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 11:02:44 -08:00
Michael Crosby
fdd8d4b7d9 Stream the cp operation on the client
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-17 10:51:29 -08:00
Victor Vieux
b4e5bfbf6f Merge pull request #3637 from crosbymichael/no-panic-on-exec
Return error and not panic when cannot exec in dockerinit
2014-01-17 10:42:46 -08:00
Victor Vieux
6188d7ef66 Merge pull request #3635 from vieux/top_job
move Top to a job
2014-01-17 10:19:28 -08:00
Gereon Frey
4f53722dee detect compressed archives in API /build call
AFAIK in some previous version it was possible to give a compressed docker file
to the API's build command and that was handled properly (aka compression was
detected and archive uncompressed accordingly). Fails with at least 0.7.5.

Fixed this using the DecompressStream method from the archive package.

Docker-DCO-1.1-Signed-off-by: Gereon Frey <me@gereonfrey.de> (github: gfrey)
2014-01-17 12:21:26 +01:00
Alexander Larsson
ba52130873 Fix cross compile
stat.Rdev and time.* is 32bit on OSX, which breaks cross builds with eg:
cannot use stat.Rdev (type int32) as type uint64 in function argument

We fix this with an extra conversion to uint64.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-17 11:01:28 +01:00
Tianon Gravi
2f6fb41dd1 Update .mailmap and AUTHORS - we're up to 316 unique contributors by my count!
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-16 20:13:51 -07:00
Michael Crosby
11ef2f0db4 Return error and not panic when cannot exec in dockerinit
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-16 18:31:21 -08:00
Michael Crosby
d6b810c32e Merge pull request #3624 from tianon/vendor-maintainers
Symlink vendor/MAINTAINERS over to hack/MAINTAINERS
2014-01-16 17:58:28 -08:00
Tianon Gravi
59fe36623b Merge pull request #3599 from tianon/fix-install-sed
Fix release.sh sed of install.sh so we preserve tests against 'https://get.docker.io/'
2014-01-16 16:54:39 -08:00
Victor Vieux
93ce4d2c0b Merge pull request #3625 from tianon/cleanup-vendor-sh
Clean and simplify vendor.sh while making it easier to maintain as well
2014-01-16 16:42:52 -08:00
Victor Vieux
8cbabf2c3e clean up test log
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-16 16:07:42 -08:00
Victor Vieux
812798a7d6 move top job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-16 16:07:42 -08:00
Victor Vieux
3155ef5cbc Merge pull request #3616 from vieux/job_changes
move changes to a job
2014-01-16 15:52:57 -08:00
Andy Rothfusz
2cdbc719c5 Merge pull request #3583 from metalivedev/3497-copyright
Update docs/NOTICE copyrights to 2014
2014-01-16 12:18:34 -08:00
Tianon Gravi
40b40cffb1 Clean and simplify vendor.sh while making it easier to maintain as well
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-15 22:20:51 -07:00
Tianon Gravi
98111a4a94 Symlink vendor/MAINTAINERS over to hack/MAINTAINERS (since it depends explicitly on hack/vendor.sh)
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-15 22:12:32 -07:00
Victor Vieux
90ec5de430 move changes to a job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-15 17:13:45 -08:00
Victor Vieux
20f36f088c Merge pull request #3615 from vieux/search_job
move search to a job
2014-01-15 17:13:07 -08:00
Victor Vieux
1669b802cc move search to a job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-15 17:12:48 -08:00
Victor Vieux
0b7d4c855d Merge pull request #3512 from vieux/attach_job
move attach to a job
2014-01-15 17:12:14 -08:00
Victor Vieux
e1d8543c78 move attach to a job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-15 17:11:44 -08:00
Victor Vieux
c4b0eedc92 Merge pull request #3617 from dotcloud/fix_insert_display
fix docker insert display
2014-01-15 16:14:59 -08:00
Victor Vieux
2edcebc027 fix docker insert display
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-15 15:41:57 -08:00
Victor Vieux
44b8d8addf Merge pull request #3559 from vieux/insert_job
move insert to a job
2014-01-15 15:18:02 -08:00
Victor Vieux
a33bc3018b use the same 'Used' method as before
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-15 14:52:58 -08:00
Victor Vieux
0fb8a55753 move insert to a job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-15 14:52:58 -08:00
Victor Vieux
52ec95f363 Merge pull request #3560 from vieux/copy_job
move copy to a job
2014-01-15 14:48:51 -08:00
Victor Vieux
e2fa3f56df move copy to a job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-15 14:48:31 -08:00
Victor Vieux
f213e2dd6c Merge pull request #3613 from vieux/deprecated_viz_job
move viz to a job
2014-01-15 14:47:56 -08:00
Victor Vieux
a98e40fa73 update TODO
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-15 14:47:35 -08:00
Victor Vieux
7fbc315aa9 move viz to a job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-15 13:52:35 -08:00
Andy Rothfusz
cdea7d3b5f Merge pull request #3598 from tianon/fix-vieux-docs-errors-again
Fix odd issues with "make docs", add "make docs-shell", and canonicalize...
2014-01-15 13:42:28 -08:00
Andy Rothfusz
0113c087b2 Merge pull request #3593 from dotcloud/fix_doc
fix doc, load and get
2014-01-15 13:33:00 -08:00
Victor Vieux
78138344a4 Merge pull request #3606 from jpallen/1319-fix-race-condition-in-truncindex
Add RWMutex lock into TruncIndex to fix race condition when inserting values
2014-01-15 11:41:51 -08:00
Victor Vieux
7e00ba03ec fix doc, load and get
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-15 11:12:05 -08:00
Victor Vieux
ad5d675553 Merge pull request #3582 from vieux/history_job
move history to a job
2014-01-15 11:06:54 -08:00
Victor Vieux
7898dca8b3 fix tests & small code improvment
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-15 11:06:00 -08:00
Guillaume J. Charmes
5a91781ef9 Merge pull request #3608 from crosbymichael/merge_release_v0.7.6
Merge release v0.7.6 to master
2014-01-15 10:41:43 -08:00
Michael Crosby
3ef777ecbe Merge branch 'release' into merge_release_v0.7.6
Conflicts:
	VERSION
	hack/make/ubuntu

Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-15 09:54:06 -08:00
Michael Crosby
4934c35aa1 Merge pull request #3597 from crosbymichael/bump_v0.7.6
Bump to version v0.7.6
2014-01-15 09:40:43 -08:00
James Allen
37fcbfa1f4 Add RWMutex lock into TruncIndex to fix race condition when inserting values
The idx.index array is overwritten when a new value is inserted to the index.
When two containers are created concurrently, their ids are inserted to the
index and one can overwrite the other leaving one of ids missing from the
index. Adding a RWMutex lock around read/write operations fixes this.

Docker-DCO-1.1-Signed-off-by: James Allen <jamesallen0108@gmail.com> (github: jpallen)
2014-01-15 17:30:00 +00:00
Tianon Gravi
dbf249e239 Merge pull request #3508 from tutumcloud/seccomp
Add capabilities needed by new sysinit to mkseccomp.pl sample list
2014-01-14 18:55:53 -08:00
Tianon Gravi
221454f315 Fix release.sh sed of install.sh so we preserve tests against 'https://get.docker.io/'
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-14 19:29:02 -07:00
Tianon Gravi
eaa9c85511 Fix odd issues with "make docs", add "make docs-shell", and canonicalize our docs Dockerfile a bit more
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-14 19:23:30 -07:00
Michael Crosby
bc3b2ec062 Bump to version v0.7.6
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-14 17:53:20 -08:00
Tianon Gravi
d103b6f6df Add more specific lvm2 version to PACKAGERS document
I personally tested this using our container, and this was the lowest version that compiles and runs properly.

Docker-DCO-1.0-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)

Docker-DCO-1.1-Signed-off-by: Tianon Gravi <admwiggin@gmail.com> (github: crosbymichael)
2014-01-14 17:29:25 -08:00
Tianon Gravi
07b50a90a8 Inline the test.docker.io fingerprint in the install.sh script as well
As long as we're doing it, we ought to do it for all the "official" Docker properties at least

Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)

Docker-DCO-1.1-Signed-off-by: Tianon Gravi <admwiggin@gmail.com> (github: crosbymichael)
2014-01-14 17:27:51 -08:00
Tianon Gravi
75293b12b3 Add ca-certificates to our package Recommends
It's only in "Recommends" because it's only required for all but the esoteric configurations (since you can't "docker pull" from the index without it, but that's about it).

Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)

Docker-DCO-1.1-Signed-off-by: Tianon Gravi <admwiggin@gmail.com> (github: crosbymichael)
2014-01-14 17:27:34 -08:00
Fabio Falci
734b4566df Use https to get the latest docker version
To avoid unexpected results since docker was using http.
For instance, my broadband doesn't return not found when it's down but
a html page saying that the internet is down. Docker was showing that
html instead of ignoring it.

Fix #3570

Docker-DCO-1.1-Signed-off-by: Fabio Falci <fabiofalci@gmail.com> (github: fabiofalci)

Docker-DCO-1.1-Signed-off-by: Fabio Falci <fabiofalci@gmail.com> (github: crosbymichael)
2014-01-14 17:27:12 -08:00
Michael Crosby
8d19b2caa0 Add remount for bind mounts in ro
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-14 17:26:34 -08:00
Tianon Gravi
42fed841d3 Fix "foo: no such file or directory" test failure, and normalize creation of custom error to always depend on if os.IsNotExist(err) so we don't hide other errors that might crop up in these tests
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)

Docker-DCO-1.1-Signed-off-by: Tianon Gravi <admwiggin@gmail.com> (github: crosbymichael)
2014-01-14 17:25:35 -08:00
Tianon Gravi
ad69836247 Stop ADD from following symlinks outside the context when passed as the first argument
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)

Docker-DCO-1.1-Signed-off-by: Tianon Gravi <admwiggin@gmail.com> (github: crosbymichael)
2014-01-14 17:25:26 -08:00
Victor Vieux
152c956719 Merge pull request #3594 from crosbymichael/add-bind-remount
Add remount for bind mounts in ro
2014-01-14 16:57:55 -08:00
Michael Crosby
f231539e99 Add remount for bind mounts in ro
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-14 15:20:21 -08:00
Tianon Gravi
bfc256f6c9 Merge pull request #3581 from tianon/deb-xz-utils
Add xz-utils to our deb-recommends since it's necessary for some images
2014-01-14 12:07:10 -08:00
Guillaume J. Charmes
12d00d19bb Merge pull request #3592 from tianon/fix-travis-vendor
Fix Travis to not check gofmt on vendor/*
2014-01-14 11:52:08 -08:00
Tianon Gravi
feb3f98418 Merge pull request #3567 from tianon/dockerfile-add-symlink
Stop ADD from following symlinks outside the context when passed as the first argument
2014-01-14 11:48:54 -08:00
Andy Rothfusz
be44bf8170 Merge pull request #3585 from tianon/remove-uid-ns-reference
Remove reference to nonexistent CONFIG_UID_NS
2014-01-14 11:37:00 -08:00
Andy Rothfusz
da78dd0eb8 Merge pull request #3586 from flavio/add_openSUSE_installation_docs
Added document explaining openSUSE installation
2014-01-14 11:36:15 -08:00
Victor Vieux
bea6dd3888 move history to a job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-14 10:52:42 -08:00
Tianon Gravi
7a6255efbc Fix "foo: no such file or directory" test failure, and normalize creation of custom error to always depend on if os.IsNotExist(err) so we don't hide other errors that might crop up in these tests
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-14 11:42:03 -07:00
Fernando
32565a4451 added capabilities needed by new sysinit
Docker-DCO-1.1-Signed-off-by: Fernando Mayo <fernando@tutum.co> (github: fermayo)
2014-01-14 19:27:31 +01:00
Tianon Gravi
f700aa1570 Fix Travis to not check gofmt on vendor/*
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-14 11:07:18 -07:00
Victor Vieux
bdcd1cfba5 Merge pull request #3591 from tianon/fix-vendor
Un-gofmt ./vendor
2014-01-14 10:06:11 -08:00
Michael Crosby
a49efa975e Merge pull request #3534 from philips/reformat-DCO
CONTRIBUTING.md: wrap DCO to 78 chars per line
2014-01-14 10:00:14 -08:00
Tianon Gravi
e8ffc2eee0 Un-gofmt ./vendor
We can't be modifying this except to update from upstream.

Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-14 10:54:19 -07:00
Michael Crosby
b68ddcec21 Merge pull request #3570 from fabiofalci/3569-validate-docker-version
Fetch docker version over https
2014-01-14 09:36:18 -08:00
James Turnbull
7d702ef501 Merge pull request #3587 from tianon/fix-gentoo-typo
Fix docs typo: "Gento" -> "Gentoo"
2014-01-14 09:22:58 -08:00
Flavio Castelli
3a1ce011a0 Added document explaining openSUSE installation
Added a new documentation page explaining how to install Docker on
openSUSE.

Docker-DCO-1.1-Signed-off-by: Flavio Castelli <fcastelli@suse.com> (github: flavio)
2014-01-14 16:26:18 +01:00
Tianon Gravi
5a3fa3c901 Add a few small tweaks to mkimage-debootstrap, especially to help with lucid
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-14 04:20:27 -07:00
Tianon Gravi
c7dcd19b28 Fix docs typo: "Gento" -> "Gentoo"
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-14 04:18:51 -07:00
Alexander Larsson
a4868e233c Implement UnTar via archive/tar
This replaces the shelling out to tar with a reimplementation of untar
based on the archive/tar code and the pre-existing code from ApplyLayer
to create real files from tar headers.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-14 11:21:29 +01:00
Alexander Larsson
710d5a48fb archive: Extract createTarFile() from ApplyLayer
This way we can reuse it for Untar()

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-14 11:21:07 +01:00
Tianon Gravi
658f57fdfa Remove reference to nonexistent CONFIG_UID_NS
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-13 23:32:21 -07:00
Andy Rothfusz
fe6c9e8fd7 Merge pull request #3584 from tianon/fix-docs-dockerfile
Fix docs Dockerfile to install correctly again
2014-01-13 17:42:20 -08:00
Tianon Gravi
4087a643ea Fix docs Dockerfile to install correctly again
Previously we've been getting:

```
Step 6 : RUN pip install Sphinx==1.1.3
 ---> Running in 397eab32f57a
 Wheel installs require setuptools >= 0.8 for dist-info support.
 pip's wheel support requires setuptools >= 0.8 for dist-info support.
 Storing debug log for failure in /.pip/pip.log
 2014/01/13 18:01:34 The command [/bin/sh -c pip install Sphinx==1.1.3] returned a non-zero code: 1
 make: *** [docs] Error 1
```

This fixes that by telling pip not to use sudo to install (since we're already root).

Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-13 18:22:23 -07:00
Andy Rothfusz
a92699ab6c Fixes 3497
Docker-DCO-1.1-Signed-off-by: Andy Rothfusz <github@developersupport.net> (github: @metalivedev)
2014-01-13 17:12:53 -08:00
Victor Vieux
9792df2080 Merge pull request #3575 from shykes/engine-get-images
move `docker images` to a job
2014-01-13 16:25:23 -08:00
Victor Vieux
16ca6a1c12 move legacy stuff outside the job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-13 16:20:05 -08:00
Victor Vieux
aca1270104 add legacy compat
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-13 15:50:20 -08:00
Victor Vieux
3a610f754f Add compat 1.8
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-13 15:50:20 -08:00
Solomon Hykes
17a806c8a0 Port 'docker images' to the engine API
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
2014-01-13 15:49:33 -08:00
Tianon Gravi
1004c2d3d8 Add xz-utils to our deb-recommends since it's necessary for some images
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-13 16:25:23 -07:00
Fabio Falci
89bed4337d Use https to get the latest docker version
To avoid unexpected results since docker was using http.
For instance, my broadband doesn't return not found when it's down but
a html page saying that the internet is down. Docker was showing that
html instead of ignoring it.

Fix #3570

Docker-DCO-1.1-Signed-off-by: Fabio Falci <fabiofalci@gmail.com> (github: fabiofalci)
2014-01-13 20:37:29 +00:00
Andy Rothfusz
6652416f4c Merge pull request #3544 from SvenDowideit/build-image-cache
add info and example of image cache in use when building
2014-01-13 11:10:29 -08:00
Alexander Larsson
93e120e7d6 Discard all data on devicemapper devices when deleting them
This works around the fact that deleting a device in a thin pool
doesn't discard the free space. Unfortunately even this is not perfect,
as it seems discards are respected only for blocks that has never been
shared in the thin device code. However, this has been fixed in the
upstream kernel device-mapper tree:

http://git.kernel.org/cgit/linux/kernel/git/device-mapper/linux-dm.git/commit/?h=for-next&id=0ab1c92ff748b745c1ed7cde31bb37ad2c5f901a

When this hits the kernel I belive this will fully return space
for removed images/containers to the host FS. For now it only
helps partially (which is better than nothing).

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-13 13:41:04 +01:00
Alexander Larsson
d54ce8087a Don't shell out to tar for ExportChanges
This changes ExportChanges to use the go tar support so we can
directly create tar layer files. This has several advantages:

* We don't have to create the whiteout files on disk to get them
  added to the layer

* We can later guarantee specific features (such as xattrs) being
  supported by the tar implementation.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
2014-01-13 13:36:11 +01:00
Sven Dowideit
f30ca8935d add info and example of image cache in use when building
Docker-DCO-1.1-Signed-off-by: Sven Dowideit <SvenDowideit@home.org.au> (github: SvenDowideit)

Docker-DCO-1.0-Signed-off-by: Sven Dowideit <SvenDowideit@home.org.au> (github: SvenDowideit)
2014-01-13 22:17:47 +10:00
Tianon Gravi
07f62f199f Merge pull request #3554 from tianon/ubuntu-dep
Add ca-certificates to our package Recommends
2014-01-11 15:07:50 -08:00
Tianon Gravi
7273b33e86 Merge pull request #3551 from tianon/test-docker-io-gpg-fingerprint
Inline the test.docker.io fingerprint in the install.sh script as well
2014-01-11 15:07:06 -08:00
James Turnbull
ba90fcfc08 Merge pull request #3539 from jeandalido/patch-1
Update docker_remote_api_v1.8.rst
2014-01-11 13:29:56 -08:00
Tianon Gravi
fb63cfa9a5 Stop ADD from following symlinks outside the context when passed as the first argument
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-11 05:46:11 -07:00
Tianon Gravi
f65706aaeb Merge pull request #3500 from tianon/lvm2-version
Add more specific lvm2 version to PACKAGERS document
2014-01-11 03:39:01 -08:00
Tianon Gravi
fd78128870 Add support for RUN [""] in Dockerfiles for greater specificity in what is actually executed
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-11 04:00:52 -07:00
Tianon Gravi
cb314b9752 Merge pull request #3555 from jordansissel/patch-1
Update Ubuntu packaging script to use 'fpm -s empty' instead of 'mkdir empty && fpm -s dir -C empty'
2014-01-10 22:46:30 -08:00
Jordan Sissel
a02450d048 Use '-s empty' instead of '-s dir'
This *should* have the same effect as the previous strategy: Instead of
'mkdir empty; fpm -s dir -C empty ...' we can simply do 'fpm -s empty'

Docker-DCO-1.1-Signed-off-by: Jordan Sissel <jls@semicomplete.com> (github: jordansissel)
2014-01-10 22:36:58 -08:00
Victor Vieux
b61570b521 Merge pull request #3490 from vieux/image_export_job
Move image_export to a job
2014-01-10 15:58:47 -08:00
Victor Vieux
5264914e57 Move image_export to a job
Docker-DCO-1.0-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-10 15:54:44 -08:00
Victor Vieux
6dde20c0c5 Merge pull request #3180 from vieux/job_container_delete
Move container_delete to job
2014-01-10 15:53:38 -08:00
Victor Vieux
ad162b75a0 Merge pull request #3476 from vieux/restart_job
Move restart to a job
2014-01-10 15:52:42 -08:00
Victor Vieux
15689b56c8 Move restart to a job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-10 15:51:48 -08:00
Victor Vieux
aa3339cf39 move container_delete to job
handle error

remove useless errStr

Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor@docker.com> (github: vieux)
2014-01-10 15:34:10 -08:00
Tianon Gravi
459e0aa2c1 Merge pull request #3543 from EvanKrall/gzip_debs
Use gzip compression in Ubuntu packages to make it possible to install on Lucid
2014-01-10 15:29:22 -08:00
Tianon Gravi
e5189b5dd2 Add ca-certificates to our package Recommends
It's only in "Recommends" because it's only required for all but the esoteric configurations (since you can't "docker pull" from the index without it, but that's about it).

Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-10 13:06:53 -07:00
Evan Krall
c2a59dfe48 Use gzip compression in Ubuntu packages to make it at least possible to install on Lucid.
Docker-DCO-1.1-Signed-off-by: Evan Krall <krall@yelp.com> (github: EvanKrall)
2014-01-10 11:45:00 -08:00
Tianon Gravi
051e7a0bef Inline the test.docker.io fingerprint in the install.sh script as well
As long as we're doing it, we ought to do it for all the "official" Docker properties at least

Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-10 10:20:31 -07:00
Jean-Baptiste Dalido
2fd4c39c86 Update docker_remote_api_v1.7.rst and non-versionned
Docker-DCO-1.1-Signed-off-by: Jean-Baptiste Dalido <jbdalido@gmail.com> (github: jeandalido)
2014-01-10 11:35:25 +01:00
Jean-Baptiste
d69cf2986e Update docker_remote_api_v1.8.rst
Docker-DCO-1.1-Signed-off-by: Jean-Baptiste Dalido <jbdalido@gmail.com> (github: jeandalido)
2014-01-10 11:27:21 +01:00
Guillaume J. Charmes
7985125602 Merge pull request #3537 from crosbymichael/merge_release_v0.7.5
Merge release v0.7.5
2014-01-09 11:39:35 -08:00
Michael Crosby
c3c89abfd6 Change version to v0.7.5
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-09 11:36:30 -08:00
Michael Crosby
1fcbd36cb2 Merge branch 'release' into merge_release_v0.7.5
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-09 11:36:14 -08:00
Michael Crosby
845b816686 Merge pull request #3532 from crosbymichael/bump_v0.7.5
Bump to v0.7.5
2014-01-09 11:33:57 -08:00
Guillaume J. Charmes
fc14e81bf9 Merge pull request #3533 from crosbymichael/run-rm-remove-volumes
Remove volumes on docker run -rm
2014-01-09 10:47:28 -08:00
Michael Crosby
c348c04fdf Bump to version v0.7.5
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-09 10:34:50 -08:00
Michael Crosby
5ca0fedffc Merge pull request #3535 from plietar/3457-git-build
Don't compress the archive made from git's output.
2014-01-09 10:32:28 -08:00
Paul Lietar
562a235763 Don't compress the archive made from git's output.
Commit 894d4a23fb made BuildFile use TarSum, which doesn't support
compressed tar archives.
This breaks builds from git url, which compressed it with bzip2.
Instead, just pass it uncompressed.

Docker-DCO-1.0-Signed-off-by: Paul Lietar <paul@lietar.net> (github: plietar)
2014-01-09 18:23:19 +00:00
Brandon Philips
e4af8b2ddc CONTRIBUTING.md: wrap DCO to 78 chars per line
The DCO is a bit hard to read on Github right now because there is lots
of horizontal scrolling. Reformat it to 78 chars per line like the rest
of the file.

Example: http://imgur.com/LtJEIsl

Docker-DCO-1.1-Signed-off-by: Brandon Philips <brandon.philips@coreos.com> (github: philips)
2014-01-09 10:08:52 -08:00
Michael Crosby
14acf6883d Remove volumes on docker run -rm
If we don't care about the container then we don't care about any
volumes created with the run of that container

Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-09 09:58:40 -08:00
Guillaume J. Charmes
eb131250aa Merge pull request #3530 from creack/update_dco_doc
Update DCO git hook example
2014-01-09 09:23:35 -08:00
Guillaume J. Charmes
9ec29fddf8 Merge pull request #3528 from tianon/update-travis-dco
Update Travis to check for new 1.1 DCO version
2014-01-09 09:23:23 -08:00
Guillaume J. Charmes
d015d31b1c Merge pull request #3527 from keeb/add-dco
Amend DCO
2014-01-09 09:23:11 -08:00
Guillaume J. Charmes
f6292ab8d0 Merge pull request #3522 from bantic/fix-misspelled-names
Fix misspelled Hawkings -> Hawking, Archimede -> Archimedes, Euclide -> Euclid
2014-01-09 09:12:05 -08:00
Guillaume J. Charmes
c3f2597546 Update DCO git hook example 2014-01-09 09:02:56 -08:00
Tianon Gravi
a4f3cd62a3 Update Travis to check for new 1.1 DCO version
Docker-DCO-1.1-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-09 09:52:17 -07:00
Nick Stinemates
11d61ec77f Bump DCO version 2014-01-09 08:47:03 -08:00
Nick Stinemates
40c90796e9 Fix layout 2014-01-09 08:35:47 -08:00
Nick Stinemates
7fb55f7725 Removed the 5th clause
Removed clause which states contributions should be relicensed
2014-01-09 08:35:06 -08:00
Cory Forsyth
7a7c3d87d8 Fix misspelled Hawkings -> Hawking, Archimede -> Archimedes, Euclide -> Euclid
Docker-DCO-1.0-Signed-off-by: Cory Forsyth <cory.forsyth@gmail.com> (github: bantic)
2014-01-09 10:02:55 -05:00
Guillaume J. Charmes
42df36b6fc Merge pull request #3515 from crosbymichael/no-host-name-without-networking
Do not add hostname when networking is disabled
2014-01-08 17:22:24 -08:00
Michael Crosby
0354c3a95c Do not add hostname when networking is disabled
Docker-DCO-1.0-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-08 16:57:56 -08:00
Victor Vieux
189c40597f Merge pull request #3511 from bantic/fix-misspelled-feynman
Fix misspelling of Richard Feynman's last name
2014-01-08 16:29:59 -08:00
Cory Forsyth
98193a397e Fix misspelling of Richard Feynman's last name
Docker-DCO-1.0-Signed-off-by: Cory Forsyth <cory.forsyth@gmail.com> (github: bantic)
2014-01-08 19:02:15 -05:00
Andy Rothfusz
c45cd9174e Merge pull request #3460 from tsaavik/patch-1
Fixed error in group add example
2014-01-08 15:45:23 -08:00
Michael Crosby
ee65633620 Merge pull request #3446 from tianon/update-checklist
Update release checklist with more information, more commands, and more ...
2014-01-08 15:37:49 -08:00
Guillaume J. Charmes
3be2ea021d Merge pull request #3417 from Sjord/use-most-recent-cache-image
Fix issue #3375 - Return most recent image from the cache
2014-01-08 15:30:36 -08:00
Guillaume J. Charmes
1d0d093d0b Merge pull request #3464 from vieux/fix_error_wait
fix error on docker wait
2014-01-08 15:06:54 -08:00
Guillaume J. Charmes
38a49951b3 Merge pull request #3493 from SvenDowideit/commit-signoff-location
give more specific advice on setting up signing
2014-01-08 15:04:00 -08:00
Guillaume J. Charmes
772765c404 Merge pull request #3510 from creack/hotfix-add_caching
Hotfix add caching
2014-01-08 15:00:18 -08:00
Victor Vieux
71e89fdc75 Merge pull request #3514 from vieux/update_REMOTE_TODO
update REMOTE_TODO.md
2014-01-08 14:51:35 -08:00
Victor Vieux
5530cc29b2 update REMOTE_TODO.md
Docker-DCO-1.0-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
2014-01-08 14:50:52 -08:00
Tianon Gravi
82aed48bbc Merge pull request #3494 from tianon/makefile-use-branch-tag
Update Makefile to use "docker:GIT_BRANCH" as the generated image name
2014-01-08 14:47:41 -08:00
Guillaume J. Charmes
0fd9c98de3 Make sure the remote ADD are cached properly
Docker-DCO-1.0-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-08 14:22:49 -08:00
Guillaume J. Charmes
762a0cc472 Cleanup utils.Download
Docker-DCO-1.0-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-08 14:22:49 -08:00
Guillaume J. Charmes
e24e9c09f8 Make sure file are cached correctly during build
Docker-DCO-1.0-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-08 14:22:49 -08:00
Frank Macreery
93ff70a3e7 Potential fix for ADD .
Docker-DCO-1.0-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-08 14:22:24 -08:00
Guillaume J. Charmes
c6350bcc24 Disable compression for build. More space usage but much faster upload
Docker-DCO-1.0-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-08 14:21:13 -08:00
Andy Rothfusz
9a6333466b Merge pull request #3503 from gertvv/patch-1
Hello World: fix detach behavior
2014-01-08 11:44:26 -08:00
Andy Rothfusz
187eed7da5 Merge pull request #3501 from proppy/patch-1
google-compute-engine: fix typos
2014-01-08 11:40:30 -08:00
Victor Vieux
368e308971 Merge pull request #3499 from tianon/typos
Fix a few miscellaneous typos (Unkown -> Unknown, Recieve -> Receive)
2014-01-08 10:37:00 -08:00
Victor Vieux
149156a272 Merge pull request #3402 from manuel-woelker/3345-add-content-type-header-to-version-remote-api
Fix for #3345: Add Content-Type Header "application/json" to GET /version response in remote API
2014-01-08 10:15:22 -08:00
Gert van Valkenhoef
8298a200ce Add the customary bold 2014-01-08 18:45:06 +01:00
Danny Yates
c4535c833d gofmt
Docker-DCO-1.0-Signed-off-by: Danny Yates <danny@codeaholics.org> (github: codeaholics)
2014-01-08 10:37:22 +00:00
Danny Yates
145501bee3 Fix indentation to match rest of file (tabs, not spaces)
Docker-DCO-1.0-Signed-off-by: Danny Yates <danny@codeaholics.org> (github: codeaholics)
2014-01-08 10:14:30 +00:00
Danny Yates
df4ea946a6 Further simplification
Docker-DCO-1.0-Signed-off-by: Danny Yates <danny@codeaholics.org> (github: codeaholics)
2014-01-08 10:14:25 +00:00
Danny Yates
6b48761ce9 Remove unneeded DependencyGraph
Docker-DCO-1.0-Signed-off-by: Danny Yates <danny@codeaholics.org> (github: codeaholics)
2014-01-08 10:14:14 +00:00
Danny Yates
5aa304f969 Fix registry pushing/tagging
* docker push host:port/namespace/repo wouldn't push multiple tags for
  the same image
* getImageList was unnecessarily complex returning a nested array of
  ImgData when a correctly ordered list of images was sufficient
* removed various bits of redundancy

Docker-DCO-1.0-Signed-off-by: Danny Yates <danny@codeaholics.org> (github: codeaholics)
2014-01-08 10:13:14 +00:00
Gert van Valkenhoef
c9cebf3a73 Hello World: fix detach behavior
The hello world example relies on being able to exit the container attachment using Control-C without stopping it. According to this thread (and my own experience), this doesn't work anymore:

https://groups.google.com/forum/#!msg/docker-user/nWXAnyLP9-M/kbv-FZpF4rUJ

Added -sig-proxy=false to the attach command.
2014-01-08 10:58:55 +01:00
Manuel Woelker
53a01aebd6 Fix for #3345: Add Content-Type Header "application/json" to GET /version and /info responses in remote API
Docker-DCO-1.0-Signed-off-by: Manuel Woelker <github@manuel.woelker.org> (github: manuel-woelker)
2014-01-08 09:17:20 +01:00
Sjoerd Langkemper
46c8b11f24 Fix issue #3375 - Return most recent image from the cache
ImageGetCached searches for an image from the cache. Instead of returning the
first image it finds, it should return the most recently created image. When a
build with --no-cache then adds a new image with the same parameters, it is
used instead of the old, existing image.

Docker-DCO-1.0-Signed-off-by: Sjoerd Langkemper <sjoerd@byte.nl> (github: Sjord)
2014-01-08 09:15:45 +01:00
Sjoerd Langkemper
10b794b332 Revert "Make sure the cache lookup returns always the same result"
This reverts commit 1d4b7d8fa1.

Docker-DCO-1.0-Signed-off-by: Sjoerd Langkemper <sjoerd@byte.nl> (github: Sjord)
2014-01-08 09:14:31 +01:00
Johan Euphrosine
a3ee36b747 google-compute-engine: fix typos 2014-01-08 00:11:06 -08:00
Tianon Gravi
7626e9fd64 Add more specific lvm2 version to PACKAGERS document
I personally tested this using our container, and this was the lowest version that compiles and runs properly.

Docker-DCO-1.0-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-08 00:27:50 -07:00
Tianon Gravi
e525ad3f9b Fix a few miscellaneous typos (Unkown -> Unknown, Recieve -> Receive)
Docker-DCO-1.0-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-07 22:15:53 -07:00
Michael Crosby
322a42b8a2 Merge pull request #3496 from creack/disable_build_compression
Disable compression for build. More space usage but much faster upload
2014-01-07 18:57:18 -08:00
Guillaume J. Charmes
90ea81433f Merge pull request #3498 from crosbymichael/merge_release_v0.7.4
Merge release v0.7.4
2014-01-07 18:44:03 -08:00
Michael Crosby
d7f26c93d9 Change version to v0.7.4-dev
Docker-DCO-1.0-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-07 18:41:06 -08:00
Michael Crosby
d4e61b48eb Merge branch 'release' into merege_release_v0.7.4
Docker-DCO-1.0-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-07 18:40:54 -08:00
Michael Crosby
1a6fc02348 Merge pull request #3495 from crosbymichael/bump_v0.7.4
Bump v0.7.4
2014-01-07 18:35:44 -08:00
Michael Crosby
010d74ec2f Bump to v0.7.4
Docker-DCO-1.0-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
2014-01-07 18:06:20 -08:00
Guillaume J. Charmes
1137ecf7d1 Disable compression for build. More space usage but much faster upload
Docker-DCO-1.0-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-07 17:46:04 -08:00
Tianon Gravi
a25a80b2d3 Merge pull request #3361 from zimbatm/gpg-key-secure-best
Makes sure the GPG fingerprint is inlined in the doc everywhere.
2014-01-07 17:43:04 -08:00
Tianon Gravi
a95712899e Update Makefile to use "docker:GIT_BRANCH" as the generated image name for increased versatility
... and other minor Makefile improvements :)

Docker-DCO-1.0-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-07 18:38:07 -07:00
Tianon Gravi
b57051a724 Update release checklist with more information, more commands, and more correct flow (test, upload to test.docker.io, test, upload to get.docker.io, THEN tag&merge)
Docker-DCO-1.0-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-07 18:28:07 -07:00
Guillaume J. Charmes
bb76985d39 Merge pull request #3474 from creack/fix_add_cache_issue
Fix ADD caching issue with . prefixed path
2014-01-07 17:24:18 -08:00
Guillaume J. Charmes
28ec47c441 Merge pull request #3492 from unclejack/3449-fix_docker_build_on_devicemapper
#3449 - fix `docker build` on devicemapper
2014-01-07 17:12:31 -08:00
zimbatm
94c803e9f0 Fixes key installation for other target urls in hack/install.sh
Docker-DCO-1.0-Signed-off-by: Jonas Pfenniger <zimbatm@zimbatm.com> (github: zimbatm)
2014-01-08 01:08:14 +00:00
zimbatm
13ebc68636 Makes sure the GPG key fingerprint is inlined in the doc everywhere.
Instead of `curl $url | apt-get add -` use the ubuntu keyserver and a full
fingerprint to retreive the key. This makes the distribution of the GPG key
more secure an less likely to change even if 3rd party gains access to the
packages repository.

Docker-DCO-1.0-Signed-off-by: Jonas Pfenniger <zimbatm@zimbatm.com> (github: zimbatm)
2014-01-08 01:07:04 +00:00
unclejack
d003cfea25 Revert "Add -S option to tar for efficient sparse file handling"
This reverts commit 733bf5d3dd.

This is needed to fix "no such file" errors `docker build` errors for
devicemapper.

This fixes issue #3449.

Docker-DCO-1.0-Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com> (github: unclejack)
2014-01-08 02:58:39 +02:00
Guillaume J. Charmes
f3103e5c91 Fix issue with file caching + prevent wrong cache hit
Docker-DCO-1.0-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-07 16:53:55 -08:00
Sven Dowideit
0eb5f233d6 give more specific advice on setting up signing
Docker-DCO-1.0-Signed-off-by: Sven Dowideit <SvenDowideit@fosiki.com> (github: SvenDowideit)
2014-01-08 10:19:44 +10:00
Guillaume J. Charmes
ef7e000a13 Make vfs error more explicit
Docker-DCO-1.0-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
2014-01-07 16:02:41 -08:00
Guillaume J. Charmes
811341423b Fix ADD caching issue with . prefixed path
Docker-DCO-1.0-Signed-off-by: Guillaume J. Charmes <charmes.guillaume@gmail.com> (github: creack)
2014-01-07 16:02:20 -08:00
Andy Rothfusz
b3addb5fb8 Merge pull request #3430 from lsm5/fedora-official-image
install instructions use unprefixed fedora image
2014-01-07 15:12:37 -08:00
Andy Rothfusz
00ee6d1925 Merge pull request #3483 from lukaspustina/patch-1
Missing redirect in line 85
2014-01-07 15:11:02 -08:00
Andy Rothfusz
6f8a79c23c Merge pull request #3462 from tsaavik/patch-2
Simplified and streamlined Amazon Quickstart
2014-01-07 15:09:35 -08:00
Andy Rothfusz
cf8063d152 Merge pull request #3461 from jbeda/patch-1
Update instructions for mtu flag for Docker on GCE
2014-01-07 15:03:19 -08:00
Andy Rothfusz
3e10fe1a15 Merge pull request #3488 from jamtur01/1310
Fixed #3481 - Added Ubuntu Saucy to installation
2014-01-07 14:56:03 -08:00
Michael Crosby
45ecdf9c8e Merge pull request #3487 from crosbymichael/improve-images-speed
Only get rootfs when we need to calculate the image size
2014-01-07 14:47:31 -08:00
Tianon Gravi
b942f24ba8 Merge pull request #3491 from tianon/travis-numeric-commit
Fix Travis handling of a fully-numeric commit hash being YAML-converted ...
2014-01-07 14:35:06 -08:00
Tianon Gravi
3779291e9b Fix Travis handling of a fully-numeric commit hash being YAML-converted to a number instead of a string
Docker-DCO-1.0-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-07 15:27:51 -07:00
Michael Crosby
fa14a1b983 Only get rootfs when we need to calculate the image size
Docker-DCO-1.0-Signed-off-by: Michael Crosby <crosby.michael@gmail.com> (github: crosbymichael)
2014-01-07 13:56:26 -08:00
Tianon Gravi
f9e14cc838 Merge pull request #3489 from tianon/travis-fixes
Fix Travis PR testing to not overwrite the "master" that Travis creates with our "upstream master"
2014-01-07 12:53:19 -08:00
Victor Vieux
f2ea539467 Update REMOTE_TODO.md 2014-01-07 12:51:17 -08:00
Tianon Gravi
7c4e5fbd46 Fix Travis PR testing to not overwrite the "master" that Travis creates with our "upstream master", and to also ignore commits with no content (like a Merge commit - there's no need to sign off on literally nothing)
Docker-DCO-1.0-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-07 13:45:40 -07:00
James Turnbull
97ef8a067c Fixed #3481 - Added Ubuntu Saucy to installation
Docker-DCO-1.0-Signed-off-by: James Turnbull <james@lovedthanlost.net> jamtur01
2014-01-07 11:46:07 -08:00
Michael Crosby
4b9e475a3d Merge pull request #2091 from keeb/add-dco
Add Developer Certificate of Origin Text
2014-01-07 10:42:53 -08:00
Michael Crosby
1d0aeae339 Merge pull request #3431 from shin-/ping_standalone_check
Check standalone header when pinging a registry server.
2014-01-07 10:33:07 -08:00
Solomon Hykes
859856b3e4 Merge pull request #3475 from tianon/travis
Add Travis CI configuration to validate DCO and gofmt
2014-01-07 10:19:43 -08:00
Michael Crosby
b8b18a2b42 Merge pull request #3435 from roylee17/3149-fix_port_mapping_of_tcp_plus_udp
Fix #3149: port mapping of TCP + UDP
2014-01-07 10:08:13 -08:00
Tianon Gravi
561d1db074 Add Travis CI configuration to validate DCO and gofmt
After each push, Travis CI will trigger, and check two things:

- make sure that each commit in the push has the Docker certificate of origin
- make sure that all .go files changed by this sequence of commits are correctly formatted in the most recent commit

Note: there is one edge case; if you do a git force push, we cannot figure out the actual commits in the force push, and we will just run the checks as if upstream master were the base. Pull requests will always be tested correctly, though.

Docker-DCO-1.0-Signed-off-by: Andrew Page <admwiggin@gmail.com> (github: tianon)
2014-01-07 08:25:54 -07:00
Michael Crosby
1f9abfe841 Merge pull request #3480 from tianon/gofmt
Run 'gofmt -s -w'
2014-01-07 06:41:23 -08:00
lukaspustina
2b93f18223 Missing pipe in line 85 2014-01-07 15:20:38 +01:00
Tianon Gravi
8f3b8f3835 Run 'gofmt -s -w' 2014-01-06 22:14:35 -07:00
Michael Crosby
fca83b4cfb Merge pull request #3477 from creack/fix_tar_leaks
Make CopyFileWithTar use a pipe instead of a buffer. Save more than 1Gb of ram for a 500Mb file.
2014-01-06 18:04:44 -08:00
Guillaume J. Charmes
444a087ac2 Make CopyFileWithTar use a pipe instead of a buffer. Save more than 1Gb of ram for a 500Mb file. 2014-01-06 17:44:22 -08:00
Victor Vieux
e1c861cf33 Update REMOTE_TODO.md 2014-01-06 17:37:30 -08:00
Nick Stinemates
6fe3da9924 Remove the @github handle as it generates emails. 2014-01-06 17:21:14 -08:00
Andy Rothfusz
f43f3fa218 Merge pull request #3473 from dhrp/docs-version-warning-fix
[docs] Fix for wrong version warning on master instead of latest.
2014-01-06 16:26:04 -08:00
Thatcher Peskens
1e551c7cc5 [docs] Fix for wrong version warning on master instead of latest. 2014-01-06 16:18:00 -08:00
Michael Crosby
2c395ce8fb Merge pull request #3328 from shykes/pkg-iptables
Move utility package 'iptables' to pkg/iptables
2014-01-06 15:54:07 -08:00
Solomon Hykes
7799ae27ca Move utility package 'iptables' to pkg/iptables 2014-01-06 15:41:24 -08:00
Michael Crosby
bb754fd34d Merge pull request #3388 from tianon/more-build-tests
Add more TestBuild Dockerfiles, especially for 'echo shebang' testing
2014-01-06 15:14:30 -08:00
Victor Vieux
a0298c0bd0 Merge pull request #3420 from RoelVanNyen/getfullname
Cleanup: runtime.getFullName is deprecated by getFullName
2014-01-06 13:59:04 -08:00
Victor Vieux
a86a82cb7e Merge pull request #3384 from tianon/fix-load-help
Fix "docker load" help by removing "SOURCE" prompt and mentioning STDIN
2014-01-06 13:30:16 -08:00
Nick Stinemates
36ab1836f9 Fix dotCloud to Docker, Inc 2014-01-06 12:26:53 -08:00
shin-
5e8912e0e8 Fixed registry unit tests 2014-01-06 21:04:44 +01:00
Victor Vieux
4e414f6205 Merge pull request #3377 from cpuguy83/3333-fix_-H_default
Make blank -H option default to the same as no -H was sent
2014-01-06 11:30:27 -08:00
Michael Crosby
4f31141e13 Merge pull request #3310 from pnasrat/cgroups-subpackage
Extract cgroups utilities to own submodule.
2014-01-06 11:27:29 -08:00
Victor Vieux
82531f7168 fix error on docker wait 2014-01-06 11:11:04 -08:00
Michael Crosby
ee6823d797 Merge pull request #3297 from jaseg/master
Return meaningful error for meaningless Dockerfiles
2014-01-06 10:58:24 -08:00
Michael Crosby
1363dfdd1d Merge pull request #3426 from bcbcarl/3425-upgrade_vbox_guest_additions
Upgrade VBox Guest Additions (Fix #3425)
2014-01-06 10:39:26 -08:00
Joe Beda
b308e33106 Tweak formatting for GCE instructions 2014-01-06 10:35:51 -08:00
Victor Vieux
e5b09523dc Merge pull request #3367 from cpuguy83/3362-unify_cmd_entrypoint_handling
Use same error handling while unmarshalling args for CMD and ENTRYPOINT
2014-01-06 10:29:37 -08:00
Victor Vieux
d44abae873 Merge pull request #3441 from RoelVanNyen/container_start
Just pass the container in RegisterLinks(), no need to lookup by name
2014-01-06 10:19:01 -08:00
Brian Goff
323c4b5211 Use same error handling while unmarshalling args for CMD and ENTRYPOINT 2014-01-06 13:15:14 -05:00
Michael Crosby
5b4a0cac4e Merge pull request #3335 from vieux/remote_todo
add REMOTE_TODO
2014-01-06 10:12:08 -08:00
Victor Vieux
73294b6d56 Merge pull request #3455 from crigor/fix-pull-message
Fix login message to say pull instead of push.
2014-01-06 10:02:32 -08:00
David Mcanulty
d6ca05f7cb Simplified and streamlined Amazon Quickstart
The amazon quickstart images are EBS backed and include cloudinit. I've personally tested these documentation changes as a new user to Docker.
2014-01-06 09:53:58 -08:00
Victor Vieux
dfc2dc4d35 Merge pull request #3445 from dotcloud/merge_release_v0.7.3
Merge release v0.7.3
2014-01-06 09:51:41 -08:00
David Mcanulty
fc559d9992 Fixed error in group add example
There is no ${USERNAME} in bash, only ${USER}
2014-01-06 09:29:56 -08:00
Joe Beda
ea762c1a51 Update instructions for mtu flag for Docker on GCE 2014-01-06 09:29:33 -08:00
Christopher Rigor
599009191a Fix login message to say pull instead of push. 2014-01-05 17:07:16 +08:00
Tianon Gravi
af50b2f17c Merge pull request #3454 from sudosurootdev/master
Fix spelling error in hack/make.sh comment
2014-01-04 20:24:48 -08:00
sudosurootdev
2a1181f404 Spelling error. 2014-01-04 23:15:15 -05:00
Tianon Gravi
f7afbf34fe Merge pull request #3448 from tmahesh/patch-1
Changelog date typo fix: 2013-01-02 -> 2014-01-02
2014-01-04 08:21:48 -08:00
Mahesh Tiyyagura
3069bf9460 Changelog date typo fix: 2013-01-02 -> 2014-01-02 2014-01-04 11:24:48 +05:30
Tianon Gravi
32b9a429c5 Change version to 0.7.3-dev 2014-01-03 17:02:59 -07:00
Tianon Gravi
76910d16cc Merge pull request #3439 from dotcloud/bump_v0.7.3
Bump v0.7.3
2014-01-03 16:01:56 -08:00
Roel Van Nyen
42c7dc448f Just pass the container in RegisterLinks(), no need to lookup by name again 2014-01-03 15:49:39 +01:00
Tianon Gravi
8502ad4ba7 Bump version to v0.7.3 2014-01-02 21:19:19 -07:00
Andy Rothfusz
58ec7855bc substantial spelling fix 2014-01-02 16:46:50 -08:00
Andy Rothfusz
949fde88df Merge pull request #3437 from jamtur01/faqhere
Fixed duplicate here references in FAQ
2014-01-02 16:44:38 -08:00
James Turnbull
5a9f45cb7a Fixed duplicate here references in FAQ 2014-01-02 19:40:19 -05:00
Andy Rothfusz
8f4a54734f Merge pull request #3428 from jamtur01/port1.8
Added some 1.7 API updates that were missing from 1.8
2014-01-02 16:34:56 -08:00
Andy Rothfusz
9359d79c4f Merge pull request #3389 from SvenDowideit/3366-simplify-volumes-documentation
simplify the volumes documentation and mention more details
2014-01-02 16:29:09 -08:00
James Turnbull
69db6ea867 Added some 1.7 API updates that were missing from 1.8 2014-01-02 19:27:59 -05:00
Andy Rothfusz
3b89187d03 Merge pull request #3409 from Chris00/patch-1
Mention lxc-checkconfig
2014-01-02 16:20:30 -08:00
Andy Rothfusz
82a47b0e82 Keep original transcript in Thatcher's voice
and clarify that this is an update to the example.
2014-01-02 16:17:52 -08:00
Andy Rothfusz
e0f07bc186 Merge pull request #3399 from rgstephens/patch-1
Update for Ubuntu 13.10
2014-01-02 16:14:47 -08:00
Guillaume J. Charmes
194eb246ef Merge pull request #3353 from creack/improve_add_cache
Improve add cache
2014-01-02 16:07:33 -08:00
Tzu-Jung Lee
f560b87a86 Fix #3149: port mapping of TCP + UDP
Signed-off-by: Tzu-Jung Lee <roylee17@gmail.com>
2014-01-02 16:01:04 -08:00
Paul Nasrat
c561212b83 Extract cgroups utilities to own submodule.
Use mountinfo rather than for cgroups parsing.
Make helper method private and change name.
Makes method naming more explicit rather than GetThisCgroup.
Use upstream term subsystem rather than cgroupType.
2014-01-02 17:54:57 -05:00
Michael Crosby
81e596e272 Merge pull request #3287 from vieux/fix_progressbar_display_push
fix progressbar in docker push
2014-01-02 13:38:11 -08:00
Tianon Gravi
acfdfa81be Merge pull request #3427 from tianon/stub-deb-init-config
Add stubbed and commented "/etc/default/docker" to our deb package
2014-01-02 09:44:36 -08:00
shin-
589515c717 Check standalone header when pinging a registry server. Standalone has to be true to use basic auth (in addition to previous requirements) 2014-01-02 17:51:42 +01:00
Lokesh Mandvekar
523f726716 install instructions use unprefixed fedora image
Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2014-01-02 11:29:24 -05:00
Tianon Gravi
7fd6dcc831 Add stubbed and commented "/etc/default/docker" to our deb package
This is to especially fix FPM 1.0+ complaining that we told it we have an /etc/default/docker "config file", but didn't actually include one.
2014-01-01 22:34:22 -07:00
Carl X. Su
848f290012 Upgrade VBox Guest Additions (Fix #3425) 2014-01-02 12:56:29 +08:00
James Turnbull
add97f7eb0 Merge pull request #3419 from newzealandpaul/master
Mac OS X command in docs for pip fixed
2014-01-01 20:27:38 -08:00
Roel Van Nyen
9dd7ae4074 Cleanup: runtime.getFullName is deprecated by getFullName 2014-01-02 00:06:50 +01:00
Tianon Gravi
5f55784224 Merge pull request #3374 from tianon/fpm-license-vendor
Replace FPM --vendor with --license, and give it the proper value of "Apache-2.0"
2014-01-01 14:42:47 -08:00
Paul
f3816ee024 Mac OSX command for pip was incorrect 2014-01-02 09:52:07 +13:00
Christophe Troestler
0b3e153588 Implement suggestions 2014-01-01 12:28:22 +01:00
Christophe Troestler
2226989410 Mention lxc-checkconfig
This is important because the list below is not complete when one build one's own kernel.  Plus it is more robust in the face of changes.
2014-01-01 00:59:47 +01:00
Tianon Gravi
c23b15b9d8 Merge pull request #3398 from thomasleveil/bash_completion_names
support for container names in bash completion
2013-12-31 08:28:21 -08:00
Thomas LEVEIL
055b32e3f4 support for container names in bash completion 2013-12-31 11:34:23 +00:00
Michael Crosby
907d9ce13c Merge pull request #3355 from creack/fix_build_exit
Exit with code 1 in case of error for `docker build`
2013-12-30 22:14:01 -08:00
Tianon Gravi
74d45789dd Merge pull request #3379 from tianon/organize-contrib-syntax
Reorganize the syntax highlighting files in contrib under a common directory
2013-12-30 21:57:19 -08:00
Tianon Gravi
40522c0380 Merge pull request #3392 from tianon/fix-install-failure
Fix install failure when busybox can't be downloaded
2013-12-30 20:04:30 -08:00
Tianon Gravi
d5bb0ff80a Merge pull request #3401 from odonnellryan/patch-1
Swap "grep -q" with "grep > /dev/null" so that "go help" doesn't balk when the pipe closes unexpectedly (since "grep -q" closes the pipe the second it finds a match)
2013-12-30 18:44:23 -08:00
Ryan O'Donnell
ad80da3389 Fixes Issue #3400
See Issue #3400
2013-12-30 20:58:25 -05:00
rgstephens
1f80c2a652 Update for Ubuntu 13.10
With two additional commands, this procedure will work for Ubuntu 13.10 using the image stackbrew/ubuntu:13.10.

1) change /etc/pam.d/sshd, pam_loginuid line 'required' to 'optional'
2) echo LANG=\"en_US.UTF-8\" > /etc/default/locale
2013-12-30 17:50:58 -08:00
Andy Rothfusz
1bc3f6b7b5 Merge pull request #3303 from crosbymichael/add-host-flag
Add DOCKER_HOST env var for client
2013-12-30 15:54:37 -08:00
Andy Rothfusz
643621133f Merge pull request #3395 from jamtur01/basicsfixes
Minor fixes to the basic command documentation
2013-12-30 15:41:59 -08:00
Sven Dowideit
fd240413ff simplify the volumes documentation and mention more details 2013-12-31 09:09:57 +10:00
Solomon Hykes
392b1e99b2 Merge pull request #3344 from tianon/dockerfile-cleanup
Many various Dockerfile cleanups
2013-12-30 11:26:13 -08:00
James Turnbull
0dfebf2d93 Minor fixes to the basic command documentation 2013-12-30 13:57:11 -05:00
Andy Rothfusz
40aaebe56a Merge pull request #3394 from jamtur01/clifixes
Numerous small fixes to the CLI documentation
2013-12-30 10:56:47 -08:00
James Turnbull
a1dba16fe8 Numerous small fixes to the CLI documentation 2013-12-30 13:48:12 -05:00
Andy Rothfusz
e31f1f1eba Merge pull request #3371 from Grunny/volumes-typo-fix
Fix typo in working with volumes doc page
2013-12-30 10:35:09 -08:00
Andy Rothfusz
7e720d0a77 Merge pull request #3312 from DeX77/master
Installation for FrugalWare
2013-12-30 10:34:39 -08:00
Andy Rothfusz
237868e9c3 Merge pull request #3380 from SvenDowideit/add-no-auth-note
add a simple note to suggest to the user to use RUN curl/wget/tool if the URL they need is behind auth
2013-12-30 10:00:51 -08:00
Tianon Gravi
fc197188d7 Fix install failure when busybox can't be downloaded
Whether or not the "busybox" image downloads and runs properly at the end of the build, we don't want to have the script return a failing exit code, especially since at that point, Docker is successfully installed, and we're just tooting our own horn for good measure.
2013-12-30 08:38:43 -07:00
Thatcher
d59080d119 Merge pull request #3386 from bwiklund/headerfix
Fixed header image on docs.docker.io site
2013-12-30 06:48:02 -08:00
Tianon Gravi
c6dcee329d Add more TestBuild Dockerfiles, especially for making sure manual RUN echo '#!...' continues to work correctly 2013-12-30 00:10:48 -07:00
Tianon Gravi
484a75f354 Update Dockerfile to use stackbrew/ubuntu (until it graduates), update Dockerfile MAINTAINER line, coalesce all apt-get installs into one invocation (including s3cmd by bringing in backports) 2013-12-29 23:27:01 -07:00
Ben Wiklund
434cf6c8ca fixed header size on narrow desktop window 2013-12-29 19:22:52 -08:00
Tianon Gravi
83d631b6a4 Fix "docker load" help by removing "SOURCE" prompt and mentioning STDIN
Fixes #3383
2013-12-29 13:25:57 -07:00
Brian Goff
8b82b0dfe7 Make blank -H option default to the same as no -H was sent 2013-12-29 14:36:46 -05:00
Sven Dowideit
e93b7b4647 add a simple note to suggest to the user to use RUN curl/wget/tool if the URL they need is behind auth 2013-12-29 21:27:59 +10:00
Tianon Gravi
06a818616b Reorganize the syntax highlighting files in contrib under a common directory to match "contrib/init" and "contrib/completion"
This is split off from #2970.
2013-12-29 01:46:00 -07:00
Michael Crosby
f50b8b08b5 Add DOCKER_HOST env var for client
This env var will set the -H flag on the docker
client.
2013-12-28 16:42:18 -08:00
Tianon Gravi
cda146547e Replace FPM --vendor with --license, and give it the proper value of "Apache-2.0"
Fixes #3372
2013-12-28 06:35:00 -07:00
grunny
a17fd7b294 Fix typo in working with volumes doc page 2013-12-28 20:22:46 +10:00
Tianon Gravi
22162687df Merge pull request #3358 from asbjornenge/master
Apply automatically to files named 'Dockerfile'
2013-12-27 08:22:52 -08:00
Daniel Exner
d256f3049b * s/docker/Docker/ 2013-12-27 11:55:57 +01:00
Asbjørn Enge
a1a4a99d7e Apply automatically to files named 'Dockerfile' 2013-12-27 10:05:25 +01:00
Guillaume J. Charmes
4986958e7e Exit with code 1 in case of error for docker build 2013-12-26 17:49:41 -08:00
Guillaume J. Charmes
cd735496da Hash the sums for directory (ureadable when there is too many 2013-12-26 16:42:05 -08:00
Guillaume J. Charmes
894d4a23fb Change BuildFile in order to use TarSum instead of custom checksum 2013-12-26 16:16:26 -08:00
Guillaume J. Charmes
fc9f4d8bad Log files name along with their checksum in TarSum + add a Method to retrieve the checksum map 2013-12-26 16:01:36 -08:00
Guillaume J. Charmes
1d4b7d8fa1 Make sure the cache lookup returns always the same result 2013-12-26 15:43:27 -08:00
Guillaume J. Charmes
360078d761 Remove old debug from tarsum 2013-12-26 15:39:06 -08:00
Guillaume J. Charmes
808f2d39bd Merge pull request #3343 from bwiklund/comment-edits
small batch of edits/corrections to comments
2013-12-26 10:22:33 -08:00
Guillaume J. Charmes
d1ca12e81b Merge pull request #3347 from smarterclayton/patch-1
Fix typo in devmapper error message
2013-12-26 10:19:55 -08:00
Guillaume J. Charmes
a042c9fb1b Merge pull request #3348 from manuel-woelker/document-name-param-in-remote-api
Document "name" query parameter for "POST /containers/create" in Remote API v1.8
2013-12-26 10:19:42 -08:00
Manuel Woelker
721bb410f6 Document "name" query parameter for "POST /containers/create" in Remote API v1.8 2013-12-26 06:43:26 +01:00
Clayton Coleman
029625981d Fix typo in devmapper error message 2013-12-25 15:49:58 -05:00
Ben Wiklund
0fccf0f686 small batch of edits/corrections to comments 2013-12-24 16:40:14 -08:00
Guillaume J. Charmes
efaf2cac5c Merge pull request #2809 from graydon/880-cache-ADD-commands-in-dockerfiles
Issue #880 - cache ADD commands in dockerfiles
2013-12-24 16:22:51 -08:00
Guillaume J. Charmes
cb1fe939a8 Merge pull request #3337 from tianon/release-darwin
Release tgz and binaries for cross-compiled platforms
2013-12-24 14:44:41 -08:00
Andy Rothfusz
c654aea4f2 Merge pull request #3340 from jamtur01/apiport
Fixed #3039 - Added clarification on port options in API
2013-12-24 14:34:13 -08:00
James Turnbull
d2d8a4a6c5 Fixed #3039 - Added clarify on port options in API 2013-12-24 13:01:59 -05:00
Tianon Gravi
4100e9b7df Update cross and tgz to play nicely together (creating a tgz for each supported OS/ARCH), and update release.sh to upload binaries and tgz files for all the supported OS/ARCH combos 2013-12-23 23:55:06 -07:00
Tianon Gravi
5875953d9b Merge pull request #3112 from shawnl/master
hack/PACKAGERS.md: libdevmapper
2013-12-23 19:24:36 -08:00
Victor Vieux
3264c1c5eb add REMOTE_TODO 2013-12-23 19:01:10 -08:00
Tianon Gravi
f4ce106e02 Merge pull request #3318 from sugi/mkimage-deb-fix-cache-glob
Fix glob expansion on mkimage-debootstrap
2013-12-23 17:20:41 -08:00
Victor Vieux
7ec1236cee Merge pull request #3324 from roylee17/enhance-docker-top-err-msg
docker-top: improve error message for non-running containers
2013-12-23 17:15:37 -08:00
Guillaume J. Charmes
2b4bb67ce0 Merge pull request #3327 from shykes/pkg-graphdb
Move utility package 'graphdb' to pkg/graphdb
2013-12-23 16:33:11 -08:00
Victor Vieux
6155f07561 Merge pull request #3331 from shykes/pkg-names
Move utility package 'namesgenerator' to pkg/namesgenerator
2013-12-23 16:15:26 -08:00
Victor Vieux
e6e35e5984 Merge pull request #3330 from shykes/pkg-term
Move utility package 'term' to pkg/term
2013-12-23 16:11:42 -08:00
Victor Vieux
0d207abf8e Merge pull request #3329 from shykes/pkg-netlink
Move utility package 'netlink' to pkg/netlink
2013-12-23 16:08:07 -08:00
Solomon Hykes
a009d4ae8d Move utility package 'namesgenerator' to pkg/namesgenerator 2013-12-23 23:45:18 +00:00
Victor Vieux
b75f385abd Merge pull request #3304 from vieux/prevent_orphan_deletion
Prevent orphan in docker rmi
2013-12-23 15:44:46 -08:00
Solomon Hykes
7ce7516c12 Move utility package 'term' to pkg/term 2013-12-23 23:42:37 +00:00
Solomon Hykes
f6b91262a7 Move utility package 'netlink' to pkg/netlink 2013-12-23 23:39:39 +00:00
Solomon Hykes
d16d748132 Move utility package 'graphdb' to pkg/graphdb 2013-12-23 23:33:06 +00:00
Victor Vieux
3fc9de3d03 Merge pull request #3325 from shykes/pkg-systemd
Move utility package 'systemd' to pkg/systemd
2013-12-23 15:26:25 -08:00
Solomon Hykes
652c2c2a80 Add README to pkg 2013-12-23 23:12:19 +00:00
Solomon Hykes
8e7db0432e Move utility package 'systemd' to pkg/systemd 2013-12-23 23:07:01 +00:00
Guillaume J. Charmes
e1a15b25dc Merge pull request #3309 from apocas/master
Wrong HTTP method in events endpoint. (documentation)
2013-12-23 14:58:49 -08:00
Tzu-Jung Lee
b1a3a55802 docker-top: improve error message for non-running containers
Signed-off-by: Tzu-Jung Lee <roylee17@gmail.com>
2013-12-23 14:50:24 -08:00
apocas
614bc5c1e1 http method typo in documentation for events endpoint (all api versions) 2013-12-23 21:21:01 +00:00
Victor Vieux
3fe4d5477a Merge pull request #3298 from creack/add_arch_user_agent
Add arch/os info to user agent (Registry)
2013-12-23 12:08:26 -08:00
Andy Rothfusz
cda24e345c Merge pull request #3302 from briandorsey/master
Added a note about a networking work-around.
2013-12-23 11:25:20 -08:00
Andy Rothfusz
88037b2877 Merge pull request #3320 from jamtur01/privapi
API documentation update for Privileged
2013-12-23 11:22:47 -08:00
Andy Rothfusz
6cdd1aa350 Merge pull request #3321 from jamtur01/apiclean
Minor style cleanups to the API spec docs
2013-12-23 11:20:56 -08:00
James Turnbull
ea8a3438f7 Minor style cleanups to the API spec docs 2013-12-23 11:45:51 -05:00
Tianon Gravi
954158ce52 Merge pull request #2986 from SvenDowideit/still-need-privileged
still need  -privileged to run a build / test
2013-12-23 07:58:17 -08:00
James Turnbull
bf17383e35 API documentation update for Privileged
The 1.7 API docs show the ability to pass Privileged
when creating a container. This is not supported as.
Privileged is now part of hostConfig and can only be
passed when starting a container.

This fixes the documentation issue.
2013-12-23 09:08:28 -05:00
Sven Dowideit
83d81758b0 use the Makefile - it makes life so much simpler 2013-12-23 23:46:52 +10:00
Tatsuki Sugiura
e3b878ce98 Fix glob expansion for no-cache setting.
On previous version, glob pattern will be expanded to actual file
names when writing setting to etc/apt/apt.conf.d/no-cache.

This patch fixes to quote to work cache clean command properly.
2013-12-23 17:27:22 +09:00
James Turnbull
1e5f9334e0 Merge pull request #3308 from crigor/patch-1
Change an to a
2013-12-21 15:12:50 -08:00
Daniel Exner
3edbf416bf + added missing link in index.rst
* some gramatic and spelling fixes

Thx jamtur :)
2013-12-22 00:00:20 +01:00
James Turnbull
c2364b978d Merge pull request #3272 from SvenDowideit/more-complete-run-cmd-example
A more complete example of docker run.
2013-12-21 14:52:41 -08:00
Daniel Exner
158e3d60ec Installation for FrugalWare 2013-12-21 23:38:13 +01:00
apocas
e4e579b40d Wrong HTTP method in events endpoint. 2013-12-21 16:41:41 +00:00
Christopher Rigor
071528e103 Change an to a 2013-12-21 16:23:13 +08:00
Victor Vieux
a2fcd3d8f0 Merge pull request #3306 from roylee17/3224-fix-udp-cleanup
network: fix a typo in udp cleanup path
2013-12-21 00:03:07 -08:00
Tzu-Jung Lee
7d2e851d8e network: fix a typo in udp cleanup path
Fix #3224 - Port already in use error when running a container

Signed-off-by: Tzu-Jung Lee <roylee17@gmail.com>
2013-12-20 17:54:54 -08:00
Victor Vieux
85f9b778f5 fix progressbar in docker push 2013-12-20 16:55:41 -08:00
Victor Vieux
369cde4ad7 discard test output 2013-12-20 16:50:31 -08:00
Victor Vieux
3ffc52bcf5 Merge branch 'test-container-orphaning' of https://github.com/gabrtv/docker into prevent_orphan_deletion 2013-12-20 16:27:33 -08:00
Victor Vieux
8dcca2125a prevent orphan 2013-12-20 16:26:02 -08:00
Brian Dorsey
cdd14b1a31 Update MTU work-around to use the new -mtu flag 2013-12-20 16:19:35 -08:00
Brian Dorsey
37ed178611 Added a note about a networking work around.
An additional flag to limit the networking MTU is required in three Compute Engine zones for reliable networking from inside the docker container. Added a warning to that effect to the QuickStart guide.
2013-12-20 16:06:28 -08:00
Gabriel Monroy
c995c9bb91 add TestContainerOrphaning integration test 2013-12-20 16:52:34 -07:00
Michael Crosby
aa619de748 Merge pull request #3289 from crosbymichael/add-mtu-option
Allow mtu to be configured at daemon start
2013-12-20 13:21:56 -08:00
Michael Crosby
6fde28c293 Merge pull request #3300 from crosbymichael/fix-mountinfo-parsing
Only parse upto the mountpoint in mountinfo
2013-12-20 13:21:20 -08:00
Michael Crosby
f4358fc647 Merge pull request #3291 from dineshs-altiscale/3282-sparse-files
Add -S option to tar for efficient sparse file handling
2013-12-20 11:10:31 -08:00
Michael Crosby
57e19b1475 Merge pull request #3294 from discordianfish/3293-better-error-dockerfile-empty
Return error if Dockerfile is empty
2013-12-20 10:45:56 -08:00
Michael Crosby
8051b6c1a1 Only parse upto the mountpoint in mountinfo 2013-12-20 13:34:05 -05:00
Michael Crosby
566ff54d0d Allow mtu to be configured at daemon start 2013-12-20 12:12:03 -05:00
Guillaume J. Charmes
f9359f59a8 Add dynamic os/arch detection to Images 2013-12-20 08:20:08 -08:00
Guillaume J. Charmes
e4561438f1 Add arch/os info to user agent (Registry) 2013-12-20 08:19:25 -08:00
jaseg
b8cd2bc94d Return meaningful error for meaningless Dockerfiles 2013-12-20 16:19:21 +01:00
Johannes 'fish' Ziemke
f7ba1c34bb Return error if Dockerfile is empty 2013-12-20 14:13:52 +01:00
Sven Dowideit
df87919165 make a more complete example of docker run, showing the use of most of the options (Closes #1500) 2013-12-20 20:06:07 +10:00
Dinesh Subhraveti
733bf5d3dd Add -S option to tar for efficient sparse file handling
Fixes issue #3282
2013-12-19 21:41:22 -08:00
Andy Rothfusz
efde305c05 Merge pull request #3286 from pandrew/3279-documentation-docker-inspect
Update docs to include images for docker inspect
2013-12-19 14:50:55 -08:00
Guillaume J. Charmes
636dfc82b0 Merge pull request #3064 from tianon/custom-dockerinit-path
Allow custom dockerinit path
2013-12-19 14:31:41 -08:00
Victor Vieux
93abcc3a3b Merge pull request #3273 from crosbymichael/set-mtu-in-dockerinit
Move MTU setting outside of lxc and set with netlink
2013-12-19 14:25:27 -08:00
Tianon Gravi
c3ec696284 Merge pull request #3244 from codeaholics/remove-apt-errors-during-build
Tidy up some of the error messages from apt during build
2013-12-19 13:28:56 -08:00
Michael Crosby
fdd81b423b Merge pull request #3288 from tianon/makefile-maintainer
Add Tianon as Makefile maintainer
2013-12-19 13:26:52 -08:00
Tianon Gravi
cd89fe5c4f Add Tianon as Makefile maintainer 2013-12-19 13:42:35 -07:00
Tianon Gravi
1636ed9826 Merge pull request #3283 from jpoimboe/update-vendor.sh
add gosqlite to vendor.sh
2013-12-19 12:37:25 -08:00
pandrew
8072d3a4e0 Update docs to include images for docker inspect 2013-12-19 20:55:19 +01:00
Josh Poimboeuf
d215724ad6 add gosqlite to vendor.sh
Add gosqlite and its latest revision to vendor.sh so that the vendor
directory can be reliably recreated.
2013-12-19 13:51:46 -06:00
Michael Crosby
0e6f0c4e02 Move MTU setting outside of lxc and set with netlink 2013-12-19 11:51:44 -08:00
Andy Rothfusz
629cc2fce4 Merge pull request #3284 from jamtur01/faqmore
Added some more items to the FAQ
2013-12-19 11:32:53 -08:00
James Turnbull
8c52140059 Added some more items to the FAQ 2013-12-19 14:27:47 -05:00
Victor Vieux
f21bd80e90 Merge pull request #3271 from crosbymichael/mount-outside
Perform docker specific mounts outside of lxc
2013-12-19 11:13:31 -08:00
Guillaume J. Charmes
4bdd4599f0 Merge pull request #3243 from alexlarsson/compressed-tar
Handle compressed tars in ApplyLayer
2013-12-19 11:02:32 -08:00
Michael Crosby
ed93dab9a8 Merge pull request #3276 from tianon/cross-compile
Add new "cross" bundle to cross-compile the Docker client
2013-12-19 10:41:12 -08:00
Tianon Gravi
62a81370ff Add new "cross" bundle to cross-compile the Docker client for other platforms (currently just 32-bit and 64-bit OS X) 2013-12-19 11:33:49 -07:00
Guillaume J. Charmes
e74c65c3db Merge pull request #3274 from tianon/tianon-dockerfile
Make Tianon the official root "Dockerfile" maintainer
2013-12-19 10:31:00 -08:00
Victor Vieux
248eadd341 Merge pull request #3277 from jpoimboe/fix-root-symlink
Move root symlink check to engine.New
2013-12-19 10:24:23 -08:00
Victor Vieux
e829d5b6d2 Merge pull request #3275 from crosbymichael/sqlite-import
Move sqlite conn to graph db for cross compile support
2013-12-19 10:18:30 -08:00
Michael Crosby
35d8ac94f3 Merge pull request #3270 from vreon/tree-box-drawing-characters
Use box-drawing characters in `docker images -tree`
2013-12-19 10:00:33 -08:00
Josh Poimboeuf
94821a3353 Move root symlink check to engine.New
Since commit c91c365, when starting the docker daemon without an
existing /var/lib/docker directory, it fails with:

  2013/12/18 23:39:36 Unable to canonicalize root (%!s(*string=0xc210077c80)): lstat /var/lib/docker: no such file or directory

Move the symlink checking code to engine.New after the root dir has been
created.
2013-12-19 00:39:12 -06:00
Jesse Dubay
d14c162fd6 Use box-drawing characters in docker images -tree
This makes the output of `docker images -tree` look a little prettier.
Previously it displayed a combination of box-drawing characters and pipe
characters, so the lines didn't quite connect...

Before:

    └─aceb1e132fe5 Size: 487 MB (virtual 1.728 GB)
      |─c5480c55e00a Size: 44.89 MB (virtual 1.773 GB)
      | └─96c21b5e3c80 Size: 17.25 kB (virtual 1.773 GB)
      |   └─58f3f2293512 Size: 8.191 MB (virtual 1.782 GB)

After:

    └─aceb1e132fe5 Size: 487 MB (virtual 1.728 GB)
      ├─c5480c55e00a Size: 44.89 MB (virtual 1.773 GB)
      │ └─96c21b5e3c80 Size: 17.25 kB (virtual 1.773 GB)
      │   └─58f3f2293512 Size: 8.191 MB (virtual 1.782 GB)
2013-12-18 22:30:21 -08:00
Tianon Gravi
14d1c5a2c3 Make Tianon the official root "Dockerfile" maintainer, since it's so hard-locked to hack changes most of the time 2013-12-18 22:29:48 -07:00
Michael Crosby
329d154209 Move sqlite conn to graph db for cross compile support 2013-12-18 21:14:16 -08:00
Michael Crosby
7bc96aec7b Improve interface by moving to subpkg
Enable builds on OSX
2013-12-18 16:42:49 -08:00
Michael Crosby
a6fdc5d208 Fix unmount issues 2013-12-18 15:24:08 -08:00
Guillaume J. Charmes
681b40c801 Merge pull request #3268 from vieux/prevent_panic_volume
prevent a panic with docker run -v /
2013-12-18 14:06:44 -08:00
Victor Vieux
536da93380 prevent a panic with docker run -v / 2013-12-18 13:57:49 -08:00
Michael Crosby
45d7dcfea2 Handle external mounts outside of lxc 2013-12-18 13:46:02 -08:00
Guillaume J. Charmes
210fa0871c Merge pull request #3267 from vieux/debug_daemon_start
add some debug to runtime.restore()
2013-12-18 13:45:22 -08:00
Victor Vieux
f768c6adb7 Merge pull request #3263 from tianon/abspath-root
Canonicalize our root path before we try using it
2013-12-18 11:41:47 -08:00
Victor Vieux
fde909ffb8 add some debug to runtime.restore() 2013-12-18 10:57:21 -08:00
Michael Crosby
553b4dae45 Merge pull request #3264 from creack/fix_osx_compilation
Fix osx compilation
2013-12-18 10:50:14 -08:00
Tianon Gravi
929662a4d5 Merge pull request #3266 from tianon/fix-integration-test-building
Add -a to our BUILDFLAGS directly, which fixes some fun test compilation issues
2013-12-18 10:37:55 -08:00
Tianon Gravi
fbac812540 Add -a to our BUILDFLAGS directly, which fixes some fun test compilation issues
Also, now that we use "-a", we no longer get any benefit from "go test -i", and it actually causes problems sometimes, so let's nuke it.
2013-12-18 11:32:25 -07:00
Guillaume J. Charmes
e481c82fa9 Fix OSX compilation for aufs 2013-12-18 10:18:49 -08:00
Guillaume J. Charmes
73a1ef7c22 Fix OSX build for sysinit 2013-12-18 10:16:48 -08:00
Tianon Gravi
c91c365f88 Canonicalize our root path before we try using it, because we make assumptions about it not containing symlinks
Fixes #3242
2013-12-18 11:15:09 -07:00
Alexander Larsson
b8a4f570fb archive: Re-add XZ compression support
This shells out to the xz binary to support .tar.xz layers, as
there is no compression/xz support in go.
2013-12-18 10:50:22 +01:00
Michael Crosby
70c7220a99 Merge pull request #3128 from codeaholics/1530-improve-error-message
Improve error message when refusing to remove image due to multiple repo tags
2013-12-17 20:49:25 -08:00
Michael Crosby
0f45e3c6e0 Merge pull request #3205 from cddr/Vagrantfile-typos
Fix typos in Vagrantfile
2013-12-17 20:41:53 -08:00
Michael Crosby
be0beb897a Merge pull request #3238 from tianon/go-build-a
Readd go build -a
2013-12-17 20:40:36 -08:00
Michael Crosby
8fa4c4b062 Merge pull request #3253 from titanous/update-container-name-validation
Update container name validation
2013-12-17 20:34:53 -08:00
Jonathan Rudenberg
c06ab5f9c2 Add container name validation test 2013-12-17 20:19:23 -05:00
Jonathan Rudenberg
3ec39ad01a DRY up valid container name pattern usage 2013-12-17 20:17:50 -05:00
Jonathan Rudenberg
1940015824 Add '.' to valid container name pattern 2013-12-17 20:17:06 -05:00
Andy Rothfusz
1acefac97e Merge pull request #3234 from creack/default_unix_path
Default unix path
2013-12-17 16:24:01 -08:00
Andy Rothfusz
f630fbc7cf Merge pull request #3228 from maztaim/patch-1
Update binaries.rst
2013-12-17 13:10:08 -08:00
Andy Rothfusz
e61f327ec9 Merge pull request #3250 from vincentwoo/patch-1
Update docker_remote_api.rst to reflect that the latest remote API version is 1.8
2013-12-17 13:09:37 -08:00
Vincent Woo
c4444ce48f Update docker_remote_api.rst to reflect that the latest remote API version is 1.8 2013-12-17 11:48:21 -08:00
Andy Rothfusz
7ba0f1f421 Merge pull request #3236 from dhrp/doc-master-warning
Added warning when browsing master. & no longer hides alternative versions
2013-12-17 11:17:17 -08:00
Andy Rothfusz
30454bb85c Merge pull request #3249 from tianon/fix-sphinx-warning
Fix minor sphinx warning
2013-12-17 11:03:44 -08:00
Andy Rothfusz
2deb0c3365 Merge pull request #3248 from lsm5/docker-fedora-conflict
Docker fedora conflict
2013-12-17 11:01:37 -08:00
Thatcher Peskens
efc0610c0e Removed unnessary span element from version floater and
Replaced social footer by the one from www.docker.io
2013-12-17 10:39:22 -08:00
Andy Rothfusz
391676b598 Merge pull request #3221 from jamtur01/introlink
Updated Introduction link
2013-12-17 10:36:00 -08:00
Guillaume J. Charmes
5204feeaa9 Merge pull request #3237 from tianon/hack-fix-cover-detection
Fix "go tool cover" detection to only add -cover and -coverprofile if we...
2013-12-17 10:09:40 -08:00
Tianon Gravi
81d112cb7f Fix minor sphinx warning 2013-12-17 10:38:55 -07:00
Lokesh Mandvekar
25be0b1e98 Fedora first letter capitalize and misc. rewording
Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2013-12-17 11:32:40 -06:00
Michael Crosby
c56b045270 Merge pull request #3239 from tianon/old-go-not-supported
Purge more hack references to Go 1.1.2
2013-12-17 09:08:42 -08:00
Guillaume J. Charmes
d9a1cc7e2b Merge pull request #3168 from discordianfish/2464-replace-lxc-ps
Reimplement lxc-ps
2013-12-17 09:06:52 -08:00
Lokesh Mandvekar
30b4a0f76a docker and docker-io conflict update for epel
Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2013-12-17 10:56:31 -06:00
Lokesh Mandvekar
7d95145b76 update fedora doc: docker and docker-io conflict
Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2013-12-17 10:33:52 -06:00
Guillaume J. Charmes
379a7fab07 Update docs 2013-12-17 07:55:36 -08:00
Danny Yates
36e060299f Tidy up some of the error messages from apt during build 2013-12-17 13:50:37 +00:00
Alexander Larsson
a96a26c62f Handle compressed tars in ApplyLayer
When pulling from a registry we get a compressed tar archive, so
we need to wrap the stream in the right kind of compress reader.

Unfortunately go doesn't have an Xz decompression method, but I
don't think any docker layers use that atm anyway.
2013-12-17 14:19:48 +01:00
Danny Yates
c3705e83e7 Improve error message when refusing to remove image due to multiple repo tags 2013-12-17 12:34:25 +00:00
Tianon Gravi
5e9b4a23e6 Purge more hack references to Go 1.1.2 (since it requires backported archive/tar patches now, and Go 1.2 is _widely_ packaged successfully) 2013-12-16 23:57:54 -07:00
Tianon Gravi
a1c5e276f4 Add "-a" back to our "go build" 2013-12-16 23:50:03 -07:00
Tianon Gravi
eddda577a4 Fix "go tool cover" detection to only add -cover and -coverprofile if we both have cover support in Go, and if we have the cover tool downloaded 2013-12-16 22:54:06 -07:00
Tianon Gravi
2ed1001c57 Allow packagers to specify a custom dockerinit lookup location via DOCKER_INITPATH in dynbinary
Only necessary if distro policy dictates that the path deviate from the paths already listed in utils/utils.go - please refrain from using it otherwise.
2013-12-16 22:29:08 -07:00
Tianon Gravi
f02d766f9a Add dockerinit SHA1 and path to "docker info" when debug mode is enabled 2013-12-16 22:29:05 -07:00
Tianon Gravi
2035af44aa Always copy dockerinit locally, regardless of whether our docker binary is static, because even it might get deleted or moved/renamed 2013-12-16 22:29:00 -07:00
Thatcher Peskens
746ae155fb Added warning when browsing master. & no longer hides alternative versions. 2013-12-16 18:36:35 -08:00
Graydon Hoare
a26801c73f Add CHANGELOG.md entry for ADD caching. 2013-12-16 17:38:16 -08:00
Graydon Hoare
670b326c1b Add self to AUTHORS. 2013-12-16 17:36:51 -08:00
Graydon Hoare
15a6854119 Add testcases for ADD caching, closes #880. 2013-12-16 17:36:51 -08:00
Graydon Hoare
3f9416b58d Record added-tree sha256 in buildfile.CmdAdd, probe and use cache. 2013-12-16 17:36:51 -08:00
Graydon Hoare
7afd7a82bd Factor cache-probing logic out of buildfile.commit() and CmdRun(). 2013-12-16 17:36:50 -08:00
Michael Crosby
124da338fd Merge pull request #3207 from alexlarsson/fix-applylayer
Re-enable TestApplyLayer and make it work
2013-12-16 16:55:48 -08:00
Guillaume J. Charmes
69a31c3386 Improve TestParseHost 2013-12-16 16:35:56 -08:00
Guillaume J. Charmes
20605eb310 Allow to use -H unix:// like -H tcp:// 2013-12-16 16:30:23 -08:00
Thatcher
945a1f06f9 Merge pull request #3232 from dhrp/Full-width-documentation
Full width documentation
2013-12-16 15:56:39 -08:00
Michael Crosby
64136071c6 Change version to 0.7.2-dev 2013-12-16 15:43:46 -08:00
Thatcher Peskens
fe956ad449 Improvement upon @SvenDowideit suggestion to make the docs use full-width
Moved the style comments source to into the .less file
2013-12-16 14:37:56 -08:00
Thatcher Peskens
fa48f17493 Merge branch 'use-complete-width-of-browser-for-docs' of github.com:SvenDowideit/docker into SvenDowideit-use-complete-width-of-browser-for-docs 2013-12-16 13:08:00 -08:00
Tim Bosse
6721525068 Update binaries.rst
Along with the kernel requirement, you need a working copy of lxc.  When trying to start using "/docker -d", received error 'initapi: exec: "lxc-start": executable file not found in $PATH'
2013-12-16 12:04:29 -05:00
Johannes 'fish' Ziemke
5cfcb05486 Fix and re-enable TestGetContainersTop 2013-12-16 16:01:55 +01:00
Alexander Larsson
78c22c24b3 ApplyLayer: Fix TestLookupImage
The TestLookupImage test seems to use a layer that contains
/etc/postgres/postgres.conf, but not e.g. /etc/postgres.

To handle this we ensure that the parent directory always
exists, and if not we create it.
2013-12-16 14:35:43 +01:00
Johannes 'fish' Ziemke
4faba4fae7 Reimplement lxc-ps
Instead of calling lxc-ps in top endpoint, we reimplement it by
calling ps and filter for pids running in a given container.
2013-12-16 13:30:35 +01:00
Sven Dowideit
e1efd4cb8c please, don't use 30% of the screen for whitespace, and thus compress the examples so they are ~80 chars wide - the output of 'docker ps' and 'docker images' becomes needlessly unreadable 2013-12-16 13:24:35 +10:00
James Turnbull
58daccab26 Updated Introduction link
Previously the introduction link pointed to www.docker.io. That
did not seem to make a lot of sense to me so instead I pointed it
at:

http://www.docker.io/learn_more/
2013-12-15 03:13:41 -05:00
Alexander Larsson
a8af12f80a Re-enable TestApplyLayer
With the previous two changes we now pass this test.
2013-12-13 15:50:25 +01:00
Alexander Larsson
10cd902f90 Fix change detection when applying tar layers
The default gnu tar format has no sub-second precision mtime support,
and the golang tar writer currently doesn't support that either.
This means if we export the changes from a container we will not
get zeron in the sub-second precision field when the change is applied.

This means we can't compare that to the original without getting a
spurious change. So, we detect this case by treating a case where the
seconds match and either of the two nanoseconds are zero as equal.
2013-12-13 15:46:41 +01:00
Alexander Larsson
818c249bae archive: Implement ApplyLayer directly
Rather than calling out to tar we use the golang tar parser
to directly extract the tar files. This has two major advantages:

1) We're able to replace an existing directory with a file in the
   new layer. This currently breaks with the external tar, since
   it refuses to recursively remove the destination directory in
   this case, and there are no options to make it do that.

2) We avoid extracting the whiteout files just to later remove them.
2013-12-13 15:43:50 +01:00
Andy Chambers
2e6dbe87ad Fix typos in Vagrantfile 2013-12-13 00:09:05 -05:00
Shawn Landden
f379f667a2 hack/PACKAGERS.md: libdevmapper 2013-12-08 14:39:06 -08:00
Nick Stinemates
8f382aaecd Merged with master 2013-12-04 12:40:54 -08:00
Nick Stinemates
821a82ac6c Add Developer Certificate of Origin Text
We purposely chose to license Docker under the Apache 2.0 license. This is a well-known
license, which is popular for its permissive and flexible properties, while still
encouraging a collaborative community. It also makes certain representations with regard
to contributions, and the rights given to contributors, the project, people who use Docker,
people who modify Docker, etc.

This approach to contributions is inspired by the popular Linux Developer
"Certificate of Origin". This approach makes it simple for new contributors to get started,
and avoids bureaucracy in tracking contributions and contributors.

To indicate accordance, each individual contribution to the Project is signed off by the
developer, using his or her real name, email address, and github handle in the format below:

	Docker-DCO-1.0-Signed-off-by: Joe Smith <joe.smith@email.com>
2013-10-04 14:27:26 -07:00
279 changed files with 17462 additions and 7496 deletions

View File

@@ -1,9 +1,11 @@
# Generate AUTHORS: git log --format='%aN <%aE>' | sort -uf | grep -v vagrant-ubuntu-12
<charles.hooper@dotcloud.com> <chooper@plumata.com>
# Generate AUTHORS: git log --format='%aN <%aE>' | sort -uf
<charles.hooper@dotcloud.com> <chooper@plumata.com>
<daniel.mizyrycki@dotcloud.com> <daniel@dotcloud.com>
<daniel.mizyrycki@dotcloud.com> <mzdaniel@glidelink.net>
Guillaume J. Charmes <guillaume.charmes@dotcloud.com> <charmes.guillaume@gmail.com>
<guillaume.charmes@dotcloud.com> <guillaume@dotcloud.com>
Guillaume J. Charmes <guillaume.charmes@docker.com> <charmes.guillaume@gmail.com>
<guillaume.charmes@docker.com> <guillaume@dotcloud.com>
<guillaume.charmes@docker.com> <guillaume@docker.com>
<guillaume.charmes@docker.com> <guillaume.charmes@dotcloud.com>
<kencochrane@gmail.com> <KenCochrane@gmail.com>
<sridharr@activestate.com> <github@srid.name>
Thatcher Peskens <thatcher@dotcloud.com> dhrp <thatcher@dotcloud.com>
@@ -15,8 +17,11 @@ Joffrey F <joffrey@dotcloud.com>
Tim Terhorst <mynamewastaken+git@gmail.com>
Andy Smith <github@anarkystic.com>
<kalessin@kalessin.fr> <louis@dotcloud.com>
<victor.vieux@dotcloud.com> <victor@dotcloud.com>
<victor.vieux@dotcloud.com> <dev@vvieux.com>
<victor.vieux@docker.com> <victor.vieux@dotcloud.com>
<victor.vieux@docker.com> <victor@dotcloud.com>
<victor.vieux@docker.com> <dev@vvieux.com>
<victor.vieux@docker.com> <victor@docker.com>
<victor.vieux@docker.com> <vieux@docker.com>
<dominik@honnef.co> <dominikh@fork-bomb.org>
Thatcher Peskens <thatcher@dotcloud.com>
<ehanchrow@ine.com> <eric.hanchrow@gmail.com>
@@ -38,3 +43,18 @@ Jean-Baptiste Barth <jeanbaptiste.barth@gmail.com>
Matthew Mueller <mattmuelle@gmail.com>
<mosoni@ebay.com> <mohitsoni1989@gmail.com>
Shih-Yuan Lee <fourdollars@gmail.com>
Daniel Mizyrycki <daniel.mizyrycki@dotcloud.com> root <root@vagrant-ubuntu-12.10.vagrantup.com>
Jean-Baptiste Dalido <jeanbaptiste@appgratis.com>
<proppy@google.com> <proppy@aminche.com>
<michael@crosbymichael.com> <crosby.michael@gmail.com>
<github@metaliveblog.com> <github@developersupport.net>
<brandon@ifup.org> <brandon@ifup.co>
<dano@spotify.com> <daniel.norberg@gmail.com>
<danny@codeaholics.org> <Danny.Yates@mailonline.co.uk>
<gurjeet@singh.im> <singh.gurjeet@gmail.com>
<shawn@churchofgit.com> <shawnlandden@gmail.com>
<sjoerd-github@linuxonly.nl> <sjoerd@byte.nl>
<solomon@dotcloud.com> <solomon.hykes@dotcloud.com>
<SvenDowideit@home.org.au> <SvenDowideit@fosiki.com>
Sven Dowideit <SvenDowideit@home.org.au> ¨Sven <¨SvenDowideit@home.org.au¨>
unclejack <unclejacksons@gmail.com> <unclejack@users.noreply.github.com>

30
.travis.yml Normal file
View File

@@ -0,0 +1,30 @@
# Note: right now we don't use go-specific features of travis.
# Later we might automate "go test" etc. (or do it inside a docker container...?)
language: go
go: 1.2
# Disable the normal go build.
install: true
before_script:
- env | sort
- sudo apt-get update -qq
- sudo apt-get install -qq python-yaml
- git remote add upstream git://github.com/dotcloud/docker.git
- upstream=master;
if [ "$TRAVIS_PULL_REQUEST" != false ]; then
upstream=$TRAVIS_BRANCH;
fi;
git fetch --append --no-tags upstream refs/heads/$upstream:refs/remotes/upstream/$upstream
# sometimes we have upstream master already as origin/master (PRs), but other times we don't, so let's just make sure we have a completely unambiguous way to specify "upstream master" from here out
# but if it's a PR against non-master, we need that upstream branch instead :)
- sudo pip install -r docs/requirements.txt
script:
- hack/travis/dco.py
- hack/travis/gofmt.py
- make -sC docs SPHINXOPTS=-q docs man
# vim:set sw=2 ts=2:

172
AUTHORS
View File

@@ -3,28 +3,42 @@
#
# For a list of active project maintainers, see the MAINTAINERS file.
#
Al Tobey <al@ooyala.com>
Alex Gaynor <alex.gaynor@gmail.com>
Aanand Prasad <aanand.prasad@gmail.com>
Aaron Feng <aaron.feng@gmail.com>
Abel Muiño <amuino@gmail.com>
Alexander Larsson <alexl@redhat.com>
Alexey Shamrin <shamrin@gmail.com>
Alex Gaynor <alex.gaynor@gmail.com>
Alexis THOMAS <fr.alexisthomas@gmail.com>
Al Tobey <al@ooyala.com>
Andrea Luzzardi <aluzzardi@gmail.com>
Andreas Savvides <andreas@editd.com>
Andreas Tiefenthaler <at@an-ti.eu>
Andrew Duckworth <grillopress@gmail.com>
Andrew Macgregor <andrew.macgregor@agworld.com.au>
Andrew Munsell <andrew@wizardapps.net>
Andrews Medina <andrewsmedina@gmail.com>
Andy Chambers <anchambers@paypal.com>
andy diller <dillera@gmail.com>
Andy Rothfusz <github@metaliveblog.com>
Andy Smith <github@anarkystic.com>
Anthony Bishopric <git@anthonybishopric.com>
Anton Nikitin <anton.k.nikitin@gmail.com>
Antony Messerli <amesserl@rackspace.com>
apocas <petermdias@gmail.com>
Asbjørn Enge <asbjorn@hanafjedle.net>
Barry Allard <barry.allard@gmail.com>
Ben Toews <mastahyeti@gmail.com>
Bartłomiej Piotrowski <b@bpiotrowski.pl>
Benoit Chesneau <bchesneau@gmail.com>
Ben Sargent <ben@brokendigits.com>
Ben Toews <mastahyeti@gmail.com>
Ben Wiklund <ben@daisyowl.com>
Bhiraj Butala <abhiraj.butala@gmail.com>
Bouke Haarsma <bouke@webatoom.nl>
Brandon Liu <bdon@bdon.org>
Brandon Philips <brandon@ifup.co>
Brandon Philips <brandon@ifup.org>
Brian Dorsey <brian@dorseys.org>
Brian Goff <cpuguy83@gmail.com>
Brian McCallister <brianm@skife.org>
Brian Olsen <brian@maven-group.org>
Brian Shumate <brian@couchbase.com>
@@ -32,166 +46,298 @@ Briehan Lombaard <briehan.lombaard@gmail.com>
Bruno Bigras <bigras.bruno@gmail.com>
Caleb Spare <cespare@gmail.com>
Calen Pennington <cale@edx.org>
Carl X. Su <bcbcarl@gmail.com>
Charles Hooper <charles.hooper@dotcloud.com>
Charles Lindsay <chaz@chazomatic.us>
Chia-liang Kao <clkao@clkao.org>
Chris St. Pierre <chris.a.st.pierre@gmail.com>
Christopher Currie <codemonkey+github@gmail.com>
Christopher Rigor <crigor@gmail.com>
Christophe Troestler <christophe.Troestler@umons.ac.be>
Clayton Coleman <ccoleman@redhat.com>
Colin Dunklau <colin.dunklau@gmail.com>
Colin Rice <colin@daedrum.net>
Cory Forsyth <cory.forsyth@gmail.com>
cressie176 <github@stephen-cresswell.net>
Dan Buch <d.buch@modcloth.com>
Dan Hirsch <thequux@upstandinghackers.com>
Daniel Exner <dex@dragonslave.de>
Daniel Garcia <daniel@danielgarcia.info>
Daniel Gasienica <daniel@gasienica.ch>
Daniel Mizyrycki <daniel.mizyrycki@dotcloud.com>
Daniel Norberg <dano@spotify.com>
Daniel Nordberg <dnordberg@gmail.com>
Daniel Robinson <gottagetmac@gmail.com>
Daniel Von Fange <daniel@leancoder.com>
Daniel YC Lin <dlin.tw@gmail.com>
Danny Yates <danny@codeaholics.org>
Darren Coxall <darren@darrencoxall.com>
David Anderson <dave@natulte.net>
David Calavera <david.calavera@gmail.com>
David Mcanulty <github@hellspark.com>
David Sissitka <me@dsissitka.com>
Deni Bertovic <deni@kset.org>
Dinesh Subhraveti <dineshs@altiscale.com>
dkumor <daniel@dkumor.com>
Dmitry Demeshchuk <demeshchuk@gmail.com>
Dominik Honnef <dominik@honnef.co>
Don Spaulding <donspauldingii@gmail.com>
Dr Nic Williams <drnicwilliams@gmail.com>
Dražen Lučanin <kermit666@gmail.com>
Dr Nic Williams <drnicwilliams@gmail.com>
Dustin Sallings <dustin@spy.net>
Edmund Wagner <edmund-wagner@web.de>
Elias Probst <mail@eliasprobst.eu>
Emil Hernvall <emil@quench.at>
Emily Rose <emily@contactvibe.com>
Eric Hanchrow <ehanchrow@ine.com>
Eric Lee <thenorthsecedes@gmail.com>
Eric Myhre <hash@exultant.us>
Erno Hopearuoho <erno.hopearuoho@gmail.com>
eugenkrizo <eugen.krizo@gmail.com>
Evan Krall <krall@yelp.com>
Evan Phoenix <evan@fallingsnow.net>
Evan Wies <evan@neomantra.net>
Eystein Måløy Stenberg <eystein.maloy.stenberg@cfengine.com>
ezbercih <cem.ezberci@gmail.com>
Fabio Falci <fabiofalci@gmail.com>
Fabio Rehm <fgrehm@gmail.com>
Fabrizio Regini <freegenie@gmail.com>
Faiz Khan <faizkhan00@gmail.com>
Fareed Dudhia <fareeddudhia@googlemail.com>
Fernando <fermayo@gmail.com>
Flavio Castelli <fcastelli@suse.com>
Francisco Souza <f@souza.cc>
Frank Macreery <frank@macreery.com>
Frederick F. Kautz IV <fkautz@alumni.cmu.edu>
Frederik Loeffert <frederik@zitrusmedia.de>
Freek Kalter <freek@kalteronline.org>
Gabe Rosenhouse <gabe@missionst.com>
Gabriel Monroy <gabriel@opdemand.com>
Galen Sampson <galen.sampson@gmail.com>
Gareth Rushgrove <gareth@morethanseven.net>
Gereon Frey <gereon.frey@dynport.de>
Gert van Valkenhoef <g.h.m.van.valkenhoef@rug.nl>
Graydon Hoare <graydon@pobox.com>
Greg Thornton <xdissent@me.com>
Guillaume J. Charmes <guillaume.charmes@dotcloud.com>
grunny <mwgrunny@gmail.com>
Guillaume J. Charmes <guillaume.charmes@docker.com>
Gurjeet Singh <gurjeet@singh.im>
Guruprasad <lgp171188@gmail.com>
Harley Laue <losinggeneration@gmail.com>
Hector Castro <hectcastro@gmail.com>
Hunter Blanks <hunter@twilio.com>
inglesp <peter.inglesby@gmail.com>
Isaac Dupree <antispam@idupree.com>
Isao Jonas <isao.jonas@gmail.com>
Jake Moshenko <jake@devtable.com>
James Allen <jamesallen0108@gmail.com>
James Carr <james.r.carr@gmail.com>
James Mills <prologic@shortcircuit.net.au>
James Turnbull <james@lovedthanlost.net>
jaseg <jaseg@jaseg.net>
Jason McVetta <jason.mcvetta@gmail.com>
Jean-Baptiste Barth <jeanbaptiste.barth@gmail.com>
Jean-Baptiste Dalido <jeanbaptiste@appgratis.com>
Jeff Lindsay <progrium@gmail.com>
Jeremy Grosser <jeremy@synack.me>
Jérôme Petazzoni <jerome.petazzoni@dotcloud.com>
Jesse Dubay <jesse@thefortytwo.net>
Jim Alateras <jima@comware.com.au>
Jimmy Cuadra <jimmy@jimmycuadra.com>
Joe Beda <joe.github@bedafamily.com>
Joe Van Dyk <joe@tanga.com>
Joffrey F <joffrey@dotcloud.com>
Johan Euphrosine <proppy@google.com>
Johannes 'fish' Ziemke <github@freigeist.org>
Johan Rydberg <johan.rydberg@gmail.com>
John Costa <john.costa@gmail.com>
Jon Wedaman <jweede@gmail.com>
John Feminella <jxf@jxf.me>
John Gardiner Myers <jgmyers@proofpoint.com>
John Warwick <jwarwick@gmail.com>
Jonas Pfenniger <jonas@pfenniger.name>
Jonathan Mueller <j.mueller@apoveda.ch>
Jonathan Rudenberg <jonathan@titanous.com>
Jon Wedaman <jweede@gmail.com>
Joost Cassee <joost@cassee.net>
Jordan Arentsen <blissdev@gmail.com>
Jordan Sissel <jls@semicomplete.com>
Joseph Anthony Pasquale Holsten <joseph@josephholsten.com>
Joseph Hager <ajhager@gmail.com>
Josh Hawn <josh.hawn@docker.com>
Josh Poimboeuf <jpoimboe@redhat.com>
JP <jpellerin@leapfrogonline.com>
Julien Barbier <write0@gmail.com>
Jérôme Petazzoni <jerome.petazzoni@dotcloud.com>
Julien Dubois <julien.dubois@gmail.com>
Justin Force <justin.force@gmail.com>
Justin Plock <jplock@users.noreply.github.com>
Karan Lyons <karan@karanlyons.com>
Karl Grzeszczak <karl@karlgrz.com>
Karl Grzeszczak <karlgrz@gmail.com>
Kawsar Saiyeed <kawsar.saiyeed@projiris.com>
Keli Hu <dev@keli.hu>
Ken Cochrane <kencochrane@gmail.com>
Kevin Clark <kevin.clark@gmail.com>
Kevin J. Lynagh <kevin@keminglabs.com>
Keyvan Fatehi <keyvanfatehi@gmail.com>
kim0 <email.ahmedkamal@googlemail.com>
Kim BKC Carlbacker <kim.carlbacker@gmail.com>
Kimbro Staken <kstaken@kstaken.com>
Kiran Gangadharan <kiran.daredevil@gmail.com>
Konstantin Pelykh <kpelykh@zettaset.com>
Kyle Conroy <kyle.j.conroy@gmail.com>
Laurie Voss <github@seldo.com>
Liang-Chi Hsieh <viirya@gmail.com>
Lokesh Mandvekar <lsm5@redhat.com>
Louis Opter <kalessin@kalessin.fr>
lukaspustina <lukas.pustina@centerdevice.com>
Mahesh Tiyyagura <tmahesh@gmail.com>
Manuel Meurer <manuel@krautcomputing.com>
Manuel Woelker <github@manuel.woelker.org>
Marc Kuo <kuomarc2@gmail.com>
Marco Hennings <marco.hennings@freiheit.com>
Marcus Farkas <toothlessgear@finitebox.com>
Marcus Ramberg <marcus@nordaaker.com>
Marek Goldmann <marek.goldmann@gmail.com>
Mark Allen <mrallen1@yahoo.com>
Mark McGranaghan <mmcgrana@gmail.com>
Marko Mikulicic <mmikulicic@gmail.com>
Markus Fix <lispmeister@gmail.com>
Martijn van Oosterhout <kleptog@svana.org>
Martin Redmond <martin@tinychat.com>
Matt Apperson <me@mattapperson.com>
Mathieu Le Marec - Pasquet <kiorky@cryptelium.net>
Matt Apperson <me@mattapperson.com>
Matt Bachmann <bachmann.matt@gmail.com>
Matt Haggard <haggardii@gmail.com>
Matthew Mueller <mattmuelle@gmail.com>
mattymo <raytrac3r@gmail.com>
Maxime Petazzoni <max@signalfuse.com>
Maxim Treskin <zerthurd@gmail.com>
meejah <meejah@meejah.ca>
Michael Crosby <crosby.michael@gmail.com>
Michael Crosby <michael@crosbymichael.com>
Michael Gorsuch <gorsuch@github.com>
Michael Stapelberg <michael+gh@stapelberg.de>
Miguel Angel Fernández <elmendalerenda@gmail.com>
Mike Gaffney <mike@uberu.com>
Mike Naberezny <mike@naberezny.com>
Mikhail Sobolev <mss@mawhrin.net>
Mohit Soni <mosoni@ebay.com>
Morten Siebuhr <sbhr@sbhr.dk>
Nan Monnand Deng <monnand@gmail.com>
Nate Jones <nate@endot.org>
Nathan Kleyn <nathan@nathankleyn.com>
Nelson Chen <crazysim@gmail.com>
Niall O'Higgins <niallo@unworkable.org>
Nick Payne <nick@kurai.co.uk>
Nick Stenning <nick.stenning@digital.cabinet-office.gov.uk>
Nick Stinemates <nick@stinemates.org>
Nicolas Dudebout <nicolas.dudebout@gatech.edu>
Nicolas Kaiser <nikai@nikai.net>
Nolan Darilek <nolan@thewordnerd.info>
odk- <github@odkurzacz.org>
Oguz Bilgic <fisyonet@gmail.com>
Ole Reifschneider <mail@ole-reifschneider.de>
O.S.Tezer <ostezer@gmail.com>
pandrew <letters@paulnotcom.se>
Pascal Borreli <pascal@borreli.com>
pattichen <craftsbear@gmail.com>
Paul Bowsher <pbowsher@globalpersonals.co.uk>
Paul Hammond <paul@paulhammond.org>
Paul Lietar <paul@lietar.net>
Paul Morie <pmorie@gmail.com>
Paul Nasrat <pnasrat@gmail.com>
Paul <paul9869@gmail.com>
Peter Braden <peterbraden@peterbraden.co.uk>
Peter Waller <peter@scraperwiki.com>
Phil Spitler <pspitler@gmail.com>
Piergiuliano Bossi <pgbossi@gmail.com>
Pierre-Alain RIVIERE <pariviere@ippon.fr>
Piotr Bogdan <ppbogdan@gmail.com>
pysqz <randomq@126.com>
Quentin Brossard <qbrossard@gmail.com>
Rafal Jeczalik <rjeczalik@gmail.com>
Ramkumar Ramachandra <artagnon@gmail.com>
Ramon van Alteren <ramon@vanalteren.nl>
Renato Riccieri Santos Zannon <renato.riccieri@gmail.com>
rgstephens <greg@udon.org>
Rhys Hiltner <rhys@twitch.tv>
Richo Healey <richo@psych0tik.net>
Rick Bradley <rick@users.noreply.github.com>
Robert Obryk <robryk@gmail.com>
Roberto G. Hashioka <roberto.hashioka@docker.com>
Roberto Hashioka <roberto_hashioka@hotmail.com>
Rodrigo Vaz <rodrigo.vaz@gmail.com>
Roel Van Nyen <roel.vannyen@gmail.com>
Roger Peppe <rogpeppe@gmail.com>
Ryan Fowler <rwfowler@gmail.com>
Ryan O'Donnell <odonnellryanc@gmail.com>
Ryan Seto <ryanseto@yak.net>
Sam Alba <sam.alba@gmail.com>
Sam J Sharpe <sam.sharpe@digital.cabinet-office.gov.uk>
Samuel Andaya <samuel@andaya.net>
Scott Bessler <scottbessler@gmail.com>
Sean Cronin <seancron@gmail.com>
Sean P. Kane <skane@newrelic.com>
Shawn Landden <shawn@churchofgit.com>
Shawn Siefkas <shawn.siefkas@meredith.com>
Shih-Yuan Lee <fourdollars@gmail.com>
shin- <joffrey@docker.com>
Silas Sewell <silas@sewell.org>
Simon Taranto <simon.taranto@gmail.com>
Sjoerd Langkemper <sjoerd-github@linuxonly.nl>
Solomon Hykes <solomon@dotcloud.com>
Song Gao <song@gao.io>
Sridatta Thatipamala <sthatipamala@gmail.com>
Sridhar Ratnakumar <sridharr@activestate.com>
Steeve Morin <steeve.morin@gmail.com>
Stefan Praszalowicz <stefan@greplin.com>
Sven Dowideit <SvenDowideit@home.org.au>
sudosurootdev <sudosurootdev@gmail.com>
Sven Dowideit <svendowideit@home.org.au>
Sylvain Bellemare <sylvain.bellemare@ezeep.com>
tang0th <tang0th@gmx.com>
Tatsuki Sugiura <sugi@nemui.org>
Tehmasp Chaudhri <tehmasp@gmail.com>
Thatcher Peskens <thatcher@dotcloud.com>
Thermionix <bond711@gmail.com>
Thijs Terlouw <thijsterlouw@gmail.com>
Thomas Bikeev <thomas.bikeev@mac.com>
Thomas Frössman <thomasf@jossystem.se>
Thomas Hansen <thomas.hansen@gmail.com>
Thomas LEVEIL <thomasleveil@gmail.com>
Tianon Gravi <admwiggin@gmail.com>
Tim Bosse <maztaim@users.noreply.github.com>
Tim Terhorst <mynamewastaken+git@gmail.com>
Tobias Bieniek <Tobias.Bieniek@gmx.de>
Tobias Schmidt <ts@soundcloud.com>
Tobias Schwab <tobias.schwab@dynport.de>
Todd Lunter <tlunter@gmail.com>
Tom Hulihan <hulihan.tom159@gmail.com>
Tommaso Visconti <tommaso.visconti@gmail.com>
Travis Cline <travis.cline@gmail.com>
Tyler Brock <tyler.brock@gmail.com>
Tzu-Jung Lee <roylee17@gmail.com>
Ulysse Carion <ulyssecarion@gmail.com>
unclejack <unclejacksons@gmail.com>
vgeta <gopikannan.venugopalsamy@gmail.com>
Victor Coisne <victor.coisne@dotcloud.com>
Victor Lyuboslavsky <victor@victoreda.com>
Victor Vieux <victor.vieux@dotcloud.com>
Victor Vieux <victor.vieux@docker.com>
Vincent Batts <vbatts@redhat.com>
Vincent Bernat <bernat@luffy.cx>
Vincent Woo <me@vincentwoo.com>
Vinod Kulkarni <vinod.kulkarni@gmail.com>
Vitor Monteiro <vmrmonteiro@gmail.com>
Vivek Agarwal <me@vivek.im>
Vladimir Kirillov <proger@wilab.org.ua>
Vladimir Rutsky <iamironbob@gmail.com>
Walter Stanish <walter@pratyeka.org>
WarheadsSE <max@warheads.net>
Wes Morgan <cap10morgan@gmail.com>
Will Dietz <w@wdtz.org>
William Delanoue <william.delanoue@gmail.com>
Will Rouesnel <w.rouesnel@gmail.com>
Xiuming Chen <cc@cxm.cc>
Yang Bai <hamo.by@gmail.com>
Yurii Rashkovskii <yrashk@gmail.com>
Zain Memon <zain@inzain.net>
Zaiste! <oh@zaiste.net>
Zilin Du <zilin.du@gmail.com>
zimbatm <zimbatm@zimbatm.com>

View File

@@ -1,5 +1,164 @@
# Changelog
## 0.8.0 (2014-02-04)
#### Notable features since 0.7.0
* Images and containers can be removed much faster
* Building an image from source with docker build is now much faster
* The Docker daemon starts and stops much faster
* The memory footprint of many common operations has been reduced, by streaming files instead of buffering them in memory, fixing memory leaks, and fixing various suboptimal memory allocations
* Several race conditions were fixed, making Docker more stable under very high concurrency load. This makes Docker more stable and less likely to crash and reduces the memory footprint of many common operations
* All packaging operations are now built on the Go languages standard tar implementation, which is bundled with Docker itself. This makes packaging more portable across host distributions, and solves several issues caused by quirks and incompatibilities between different distributions of tar
* Docker can now create, remove and modify larger numbers of containers and images graciously thanks to more aggressive releasing of system resources. For example the storage driver API now allows Docker to do reference counting on mounts created by the drivers
With the ongoing changes to the networking and execution subsystems of docker testing these areas have been a focus of the refactoring. By moving these subsystems into separate packages we can test, analyze, and monitor coverage and quality of these packages
* Many components have been separated into smaller sub-packages, each with a dedicated test suite. As a result the code is better-tested, more readable and easier to change
* The ADD instruction now supports caching, which avoids unnecessarily re-uploading the same source content again and again when it hasnt changed
* The new ONBUILD instruction adds to your image a “trigger” instruction to be executed at a later time, when the image is used as the base for another build
* Docker now ships with an experimental storage driver which uses the BTRFS filesystem for copy-on-write
* Docker is officially supported on Mac OSX
* The Docker daemon supports systemd socket activation
## 0.7.6 (2014-01-14)
#### Builder
* Do not follow symlink outside of build context
#### Runtime
- Remount bind mounts when ro is specified
* Use https for fetching docker version
#### Other
* Inline the test.docker.io fingerprint
* Add ca-certificates to packaging documentation
## 0.7.5 (2014-01-09)
#### Builder
* Disable compression for build. More space usage but a much faster upload
- Fix ADD caching for certain paths
- Do not compress archive from git build
#### Documentation
- Fix error in GROUP add example
* Make sure the GPG fingerprint is inline in the documentation
* Give more specific advice on setting up signing of commits for DCO
#### Runtime
- Fix misspelled container names
- Do not add hostname when networking is disabled
* Return most recent image from the cache by date
- Return all errors from docker wait
* Add Content-Type Header "application/json" to GET /version and /info responses
#### Other
* Update DCO to version 1.1
+ Update Makefile to use "docker:GIT_BRANCH" as the generated image name
* Update Travis to check for new 1.1 DCO version
## 0.7.4 (2014-01-07)
#### Builder
- Fix ADD caching issue with . prefixed path
- Fix docker build on devicemapper by reverting sparse file tar option
- Fix issue with file caching and prevent wrong cache hit
* Use same error handling while unmarshalling CMD and ENTRYPOINT
#### Documentation
* Simplify and streamline Amazon Quickstart
* Install instructions use unprefixed fedora image
* Update instructions for mtu flag for Docker on GCE
+ Add Ubuntu Saucy to installation
- Fix for wrong version warning on master instead of latest
#### Runtime
- Only get the image's rootfs when we need to calculate the image size
- Correctly handle unmapping UDP ports
* Make CopyFileWithTar use a pipe instead of a buffer to save memory on docker build
- Fix login message to say pull instead of push
- Fix "docker load" help by removing "SOURCE" prompt and mentioning STDIN
* Make blank -H option default to the same as no -H was sent
* Extract cgroups utilities to own submodule
#### Other
+ Add Travis CI configuration to validate DCO and gofmt requirements
+ Add Developer Certificate of Origin Text
* Upgrade VBox Guest Additions
* Check standalone header when pinging a registry server
## 0.7.3 (2014-01-02)
#### Builder
+ Update ADD to use the image cache, based on a hash of the added content
* Add error message for empty Dockerfile
#### Documentation
- Fix outdated link to the "Introduction" on www.docker.io
+ Update the docs to get wider when the screen does
- Add information about needing to install LXC when using raw binaries
* Update Fedora documentation to disentangle the docker and docker.io conflict
* Add a note about using the new `-mtu` flag in several GCE zones
+ Add FrugalWare installation instructions
+ Add a more complete example of `docker run`
- Fix API documentation for creating and starting Privileged containers
- Add missing "name" parameter documentation on "/containers/create"
* Add a mention of `lxc-checkconfig` as a way to check for some of the necessary kernel configuration
- Update the 1.8 API documentation with some additions that were added to the docs for 1.7
#### Hack
- Add missing libdevmapper dependency to the packagers documentation
* Update minimum Go requirement to a hard line at Go 1.2+
* Many minor improvements to the Vagrantfile
+ Add ability to customize dockerinit search locations when compiling (to be used very sparingly only by packagers of platforms who require a nonstandard location)
+ Add coverprofile generation reporting
- Add `-a` to our Go build flags, removing the need for recompiling the stdlib manually
* Update Dockerfile to be more canonical and have less spurious warnings during build
- Fix some miscellaneous `docker pull` progress bar display issues
* Migrate more miscellaneous packages under the "pkg" folder
* Update TextMate highlighting to automatically be enabled for files named "Dockerfile"
* Reorganize syntax highlighting files under a common "contrib/syntax" directory
* Update install.sh script (https://get.docker.io/) to not fail if busybox fails to download or run at the end of the Ubuntu/Debian installation
* Add support for container names in bash completion
#### Packaging
+ Add an official Docker client binary for Darwin (Mac OS X)
* Remove empty "Vendor" string and added "License" on deb package
+ Add a stubbed version of "/etc/default/docker" in the deb package
#### Runtime
* Update layer application to extract tars in place, avoiding file churn while handling whiteouts
- Fix permissiveness of mtime comparisons in tar handling (since GNU tar and Go tar do not yet support sub-second mtime precision)
* Reimplement `docker top` in pure Go to work more consistently, and even inside Docker-in-Docker (thus removing the shell injection vulnerability present in some versions of `lxc-ps`)
+ Update `-H unix://` to work similarly to `-H tcp://` by inserting the default values for missing portions
- Fix more edge cases regarding dockerinit and deleted or replaced docker or dockerinit files
* Update container name validation to include '.'
- Fix use of a symlink or non-absolute path as the argument to `-g` to work as expected
* Update to handle external mounts outside of LXC, fixing many small mounting quirks and making future execution backends and other features simpler
* Update to use proper box-drawing characters everywhere in `docker images -tree`
* Move MTU setting from LXC configuration to directly use netlink
* Add `-S` option to external tar invocation for more efficient spare file handling
+ Add arch/os info to User-Agent string, especially for registry requests
+ Add `-mtu` option to Docker daemon for configuring MTU
- Fix `docker build` to exit with a non-zero exit code on error
+ Add `DOCKER_HOST` environment variable to configure the client `-H` flag without specifying it manually for every invocation
## 0.7.2 (2013-12-16)
#### Runtime
@@ -15,7 +174,7 @@
- Prevent deletion of image if ANY container is depending on it even if the container is not running
* Update docker push to use new progress display
* Use os.Lstat to allow mounting unix sockets when inspecting volumes
- Adjusted handling of inactive user login
- Adjust handling of inactive user login
- Add missing defines in devicemapper for older kernels
- Allow untag operations with no container validation
- Add auth config to docker build
@@ -110,7 +269,7 @@
#### Runtime
* Improved stability, fixes some race conditons
* Improve stability, fixes some race conditons
* Skip the volumes mounted when deleting the volumes of container.
* Fix layer size computation: handle hard links correctly
* Use the work Path for docker cp CONTAINER:PATH
@@ -153,7 +312,7 @@
+ Add lock around write operations in graph
* Check if port is valid
* Fix restart runtime error with ghost container networking
+ Added some more colors and animals to increase the pool of generated names
+ Add some more colors and animals to increase the pool of generated names
* Fix issues in docker inspect
+ Escape apparmor confinement
+ Set environment variables using a file.
@@ -307,7 +466,7 @@
* Improve network performance for VirtualBox
* Revamp install.sh to be usable by more people, and to use official install methods whenever possible (apt repo, portage tree, etc.)
- Fix contrib/mkimage-debian.sh apt caching prevention
+ Added Dockerfile.tmLanguage to contrib
+ Add Dockerfile.tmLanguage to contrib
* Configured FPM to make /etc/init/docker.conf a config file
* Enable SSH Agent forwarding in Vagrant VM
* Several small tweaks/fixes for contrib/mkimage-debian.sh
@@ -421,7 +580,7 @@
* Mount /dev/shm as a tmpfs
- Switch from http to https for get.docker.io
* Let userland proxy handle container-bound traffic
* Updated the Docker CLI to specify a value for the "Host" header.
* Update the Docker CLI to specify a value for the "Host" header.
- Change network range to avoid conflict with EC2 DNS
- Reduce connect and read timeout when pinging the registry
* Parallel pull
@@ -617,7 +776,7 @@
+ Builder: 'docker build git://URL' fetches and builds a remote git repository
* Runtime: 'docker ps -s' optionally prints container size
* Tests: Improved and simplified
* Tests: improved and simplified
- Runtime: fix a regression introduced in 0.4.3 which caused the logs command to fail.
- Builder: fix a regression when using ADD with single regular file.
@@ -632,7 +791,7 @@
+ ADD of a local file will detect tar archives and unpack them
* ADD improvements: use tar for copy + automatically unpack local archives
* ADD uses tar/untar for copies instead of calling 'cp -ar'
* Fixed the behavior of ADD to be (mostly) reverse-compatible, predictable and well-documented.
* Fix the behavior of ADD to be (mostly) reverse-compatible, predictable and well-documented.
- Fix a bug which caused builds to fail if ADD was the first command
* Nicer output for 'docker build'
@@ -677,7 +836,7 @@
+ Detect faulty DNS configuration and replace it with a public default
+ Allow docker run <name>:<id>
+ You can now specify public port (ex: -p 80:4500)
* Improved image removal to garbage-collect unreferenced parents
* Improve image removal to garbage-collect unreferenced parents
#### Client
@@ -731,7 +890,7 @@
#### Documentation
* Improved install instructions.
* Improve install instructions.
## 0.3.3 (2013-05-23)
@@ -816,7 +975,7 @@
+ Support for data volumes ('docker run -v=PATH')
+ Share data volumes between containers ('docker run -volumes-from')
+ Improved documentation
+ Improve documentation
* Upgrade to Go 1.0.3
* Various upgrades to the dev environment for contributors
@@ -872,7 +1031,7 @@
- Add debian packaging
- Documentation: installing on Arch Linux
- Documentation: running Redis on docker
- Fixed lxc 0.9 compatibility
- Fix lxc 0.9 compatibility
- Automatically load aufs module
- Various bugfixes and stability improvements
@@ -907,7 +1066,7 @@
- Stabilize process management
- Layers can include a commit message
- Simplified 'docker attach'
- Fixed support for re-attaching
- Fix support for re-attaching
- Various bugfixes and stability improvements
- Auto-download at run
- Auto-login on push

View File

@@ -7,7 +7,7 @@ feels wrong or incomplete.
## Reporting Issues
When reporting [issues](https://github.com/dotcloud/docker/issues)
on Github please include your host OS ( Ubuntu 12.04, Fedora 19, etc... )
on GitHub please include your host OS ( Ubuntu 12.04, Fedora 19, etc... )
and the output of `docker version` along with the output of `docker info` if possible.
This information will help us review and fix your issue faster.
@@ -45,7 +45,7 @@ else is working on the same thing.
### Create issues...
Any significant improvement should be documented as [a github
Any significant improvement should be documented as [a GitHub
issue](https://github.com/dotcloud/docker/issues) before anybody
starts working on it.
@@ -105,17 +105,58 @@ name and email address match your git configuration. The AUTHORS file is
regenerated occasionally from the git commit history, so a mismatch may result
in your changes being overwritten.
### Approval
### Sign your work
Docker maintainers use LGTM (looks good to me) in comments on the code review
to indicate acceptance.
The sign-off is a simple line at the end of the explanation for the
patch, which certifies that you wrote it or otherwise have the right to
pass it on as an open-source patch. The rules are pretty simple: if you
can certify the below:
```
Docker Developer Grant and Certificate of Origin 1.1
By making a contribution to the Docker Project ("Project"), I represent and
warrant that:
a. The contribution was created in whole or in part by me and I have the right
to submit the contribution on my own behalf or on behalf of a third party who
has authorized me to submit this contribution to the Project; or
b. The contribution is based upon previous work that, to the best of my
knowledge, is covered under an appropriate open source license and I have the
right and authorization to submit that work with modifications, whether
created in whole or in part by me, under the same open source license (unless
I am permitted to submit under a different license) that I have identified in
the contribution; or
c. The contribution was provided directly to me by some other person who
represented and warranted (a) or (b) and I have not modified it.
d. I understand and agree that this Project and the contribution are publicly
known and that a record of the contribution (including all personal
information I submit with it, including my sign-off record) is maintained
indefinitely and may be redistributed consistent with this Project or the open
source license(s) involved.
```
then you just add a line to every git commit message:
Docker-DCO-1.1-Signed-off-by: Joe Smith <joe.smith@email.com> (github: github_handle)
using your real name (sorry, no pseudonyms or anonymous contributions.)
One way to automate this, is customise your get ``commit.template`` by adding
a ``prepare-commit-msg`` hook to your docker checkout:
```
curl -o .git/hooks/prepare-commit-msg https://raw.github.com/dotcloud/docker/master/contrib/prepare-commit-msg.hook && chmod +x .git/hooks/prepare-commit-msg
```
* Note: the above script expects to find your GitHub user name in ``git config --get github.user``
If you have any questions, please refer to the FAQ in the [docs](http://docs.docker.io)
A change requires LGTMs from an absolute majority of the maintainers of each
component affected. For example, if a change affects docs/ and registry/, it
needs an absolute majority from the maintainers of docs/ AND, separately, an
absolute majority of the maintainers of registry
For more details see [MAINTAINERS.md](hack/MAINTAINERS.md)
### How can I become a maintainer?

View File

@@ -24,50 +24,67 @@
#
docker-version 0.6.1
FROM ubuntu:12.04
MAINTAINER Solomon Hykes <solomon@dotcloud.com>
FROM ubuntu:13.10
MAINTAINER Tianon Gravi <admwiggin@gmail.com> (@tianon)
# Build dependencies
RUN echo 'deb http://archive.ubuntu.com/ubuntu precise main universe' > /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y -q curl
RUN apt-get install -y -q git
RUN apt-get install -y -q mercurial
RUN apt-get install -y -q build-essential libsqlite3-dev
# Packaged dependencies
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -yq \
apt-utils \
aufs-tools \
automake \
btrfs-tools \
build-essential \
curl \
dpkg-sig \
git \
iptables \
libapparmor-dev \
libcap-dev \
libsqlite3-dev \
mercurial \
reprepro \
ruby1.9.1 \
ruby1.9.1-dev \
s3cmd=1.1.0* \
--no-install-recommends
# Install Go
RUN curl -s https://go.googlecode.com/files/go1.2.src.tar.gz | tar -v -C /usr/local -xz
ENV PATH /usr/local/go/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
ENV GOPATH /go:/go/src/github.com/dotcloud/docker/vendor
RUN cd /usr/local/go/src && ./make.bash && go install -ldflags '-w -linkmode external -extldflags "-static -Wl,--unresolved-symbols=ignore-in-shared-libs"' -tags netgo -a std
# Ubuntu stuff
RUN apt-get install -y -q ruby1.9.3 rubygems libffi-dev
RUN gem install --no-rdoc --no-ri fpm
RUN apt-get install -y -q reprepro dpkg-sig
RUN apt-get install -y -q python-pip
RUN pip install s3cmd==1.1.0-beta3
RUN pip install python-magic==0.4.6
RUN /bin/echo -e '[default]\naccess_key=$AWS_ACCESS_KEY\nsecret_key=$AWS_SECRET_KEY\n' > /.s3cfg
# Runtime dependencies
RUN apt-get install -y -q iptables
RUN apt-get install -y -q lxc
RUN apt-get install -y -q aufs-tools
# Get and compile LXC 0.8 (since it is the most stable)
RUN git clone --no-checkout https://github.com/lxc/lxc.git /usr/local/lxc && cd /usr/local/lxc && git checkout -q lxc-0.8.0
RUN cd /usr/local/lxc && ./autogen.sh && ./configure --disable-docs && make && make install
# Get lvm2 source for compiling statically
RUN git clone https://git.fedorahosted.org/git/lvm2.git /usr/local/lvm2 && cd /usr/local/lvm2 && git checkout v2_02_103
RUN git clone --no-checkout https://git.fedorahosted.org/git/lvm2.git /usr/local/lvm2 && cd /usr/local/lvm2 && git checkout -q v2_02_103
# see https://git.fedorahosted.org/cgit/lvm2.git/refs/tags for release tags
# note: we can't use "git clone -b" above because it requires at least git 1.7.10 to be able to use that on a tag instead of a branch and we only have 1.7.9.5
# note: we don't use "git clone -b" above because it then spews big nasty warnings about 'detached HEAD' state that we can't silence as easily as we can silence them using "git checkout" directly
# Compile and install lvm2
RUN cd /usr/local/lvm2 && ./configure --enable-static_link && make device-mapper && make install_device-mapper
# see https://git.fedorahosted.org/cgit/lvm2.git/tree/INSTALL
# Install Go
RUN curl -s https://go.googlecode.com/files/go1.2.src.tar.gz | tar -v -C /usr/local -xz
ENV PATH /usr/local/go/bin:$PATH
ENV GOPATH /go:/go/src/github.com/dotcloud/docker/vendor
RUN cd /usr/local/go/src && ./make.bash --no-clean 2>&1
# Compile Go for cross compilation
ENV DOCKER_CROSSPLATFORMS linux/386 linux/arm darwin/amd64 darwin/386
# (set an explicit GOARM of 5 for maximum compatibility)
ENV GOARM 5
RUN cd /usr/local/go/src && bash -xc 'for platform in $DOCKER_CROSSPLATFORMS; do GOOS=${platform%/*} GOARCH=${platform##*/} ./make.bash --no-clean 2>&1; done'
# Grab Go's cover tool for dead-simple code coverage testing
RUN go get code.google.com/p/go.tools/cmd/cover
# TODO replace FPM with some very minimal debhelper stuff
RUN gem install --no-rdoc --no-ri fpm --version 1.0.2
# Setup s3cmd config
RUN /bin/echo -e '[default]\naccess_key=$AWS_ACCESS_KEY\nsecret_key=$AWS_SECRET_KEY' > /.s3cfg
# Set user.email so crosbymichael's in-container merge commits go smoothly
RUN git config --global user.email 'docker-dummy@example.com'
VOLUME /var/lib/docker
WORKDIR /go/src/github.com/dotcloud/docker

View File

@@ -2,5 +2,8 @@ Solomon Hykes <solomon@dotcloud.com> (@shykes)
Guillaume Charmes <guillaume@dotcloud.com> (@creack)
Victor Vieux <victor@dotcloud.com> (@vieux)
Michael Crosby <michael@crosbymichael.com> (@crosbymichael)
.travis.yml: Tianon Gravi <admwiggin@gmail.com> (@tianon)
api.go: Victor Vieux <victor@dotcloud.com> (@vieux)
Vagrantfile: Daniel Mizyrycki <daniel@dotcloud.com> (@mzdaniel)
Dockerfile: Tianon Gravi <admwiggin@gmail.com> (@tianon)
Makefile: Tianon Gravi <admwiggin@gmail.com> (@tianon)
Vagrantfile: Cristian Staretu <cristian.staretu@gmail.com> (@unclejack)

View File

@@ -1,6 +1,9 @@
.PHONY: all binary build default docs shell test
.PHONY: all binary build cross default docs docs-build docs-shell shell test test-integration
DOCKER_RUN_DOCKER := docker run -rm -i -t -privileged -e TESTFLAGS -v $(CURDIR)/bundles:/go/src/github.com/dotcloud/docker/bundles docker
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
DOCKER_IMAGE := docker:$(GIT_BRANCH)
DOCKER_DOCS_IMAGE := docker-docs:$(GIT_BRANCH)
DOCKER_RUN_DOCKER := docker run -rm -i -t -privileged -e TESTFLAGS -v $(CURDIR)/bundles:/go/src/github.com/dotcloud/docker/bundles "$(DOCKER_IMAGE)"
default: binary
@@ -10,17 +13,29 @@ all: build
binary: build
$(DOCKER_RUN_DOCKER) hack/make.sh binary
docs:
docker build -t docker-docs docs && docker run -p 8000:8000 docker-docs
cross: build
$(DOCKER_RUN_DOCKER) hack/make.sh binary cross
docs: docs-build
docker run -rm -i -t -p 8000:8000 "$(DOCKER_DOCS_IMAGE)"
docs-shell: docs-build
docker run -rm -i -t -p 8000:8000 "$(DOCKER_DOCS_IMAGE)" bash
test: build
$(DOCKER_RUN_DOCKER) hack/make.sh test test-integration
test-integration: build
$(DOCKER_RUN_DOCKER) hack/make.sh test-integration
shell: build
$(DOCKER_RUN_DOCKER) bash
build: bundles
docker build -t docker .
docker build -rm -t "$(DOCKER_IMAGE)" .
docs-build:
docker build -rm -t "$(DOCKER_DOCS_IMAGE)" docs
bundles:
mkdir bundles

2
NOTICE
View File

@@ -1,5 +1,5 @@
Docker
Copyright 2012-2013 Docker, Inc.
Copyright 2012-2014 Docker, Inc.
This product includes software developed at Docker, Inc. (http://www.docker.com).

View File

@@ -22,7 +22,7 @@ hundreds of thousands of applications and databases.
## Better than VMs
A common method for distributing applications and sandbox their
A common method for distributing applications and sandboxing their
execution is to use virtual machines, or VMs. Typical VM formats are
VMWare's vmdk, Oracle Virtualbox's vdi, and Amazon EC2's ami. In
theory these formats should allow every developer to automatically

View File

@@ -1 +1 @@
0.7.2
0.8.0

56
Vagrantfile vendored
View File

@@ -8,10 +8,20 @@ AWS_BOX_URI = ENV['BOX_URI'] || "https://github.com/mitchellh/vagrant-aws/raw/ma
AWS_REGION = ENV['AWS_REGION'] || "us-east-1"
AWS_AMI = ENV['AWS_AMI'] || "ami-69f5a900"
AWS_INSTANCE_TYPE = ENV['AWS_INSTANCE_TYPE'] || 't1.micro'
SSH_PRIVKEY_PATH = ENV['SSH_PRIVKEY_PATH']
PRIVATE_NETWORK = ENV['PRIVATE_NETWORK']
# Boolean that forwards the Docker dynamic ports 49000-49900
# See http://docs.docker.io/en/latest/use/port_redirection/ for more
# $ FORWARD_DOCKER_PORTS=1 vagrant [up|reload]
FORWARD_DOCKER_PORTS = ENV['FORWARD_DOCKER_PORTS']
VAGRANT_RAM = ENV['VAGRANT_RAM'] || 512
VAGRANT_CORES = ENV['VAGRANT_CORES'] || 1
SSH_PRIVKEY_PATH = ENV["SSH_PRIVKEY_PATH"]
# You may also provide a comma-separated list of ports
# for Vagrant to forward. For example:
# $ FORWARD_PORTS=8080,27017 vagrant [up|reload]
FORWARD_PORTS = ENV['FORWARD_PORTS']
# A script to upgrade from the 12.04 kernel to the raring backport kernel (3.8)
# and install docker.
@@ -23,10 +33,14 @@ if [ -z "$user" ]; then
user=vagrant
fi
# Adding an apt gpg key is idempotent.
wget -q -O - https://get.docker.io/gpg | apt-key add -
# Enable memory cgroup and swap accounting
sed -i 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"/g' /etc/default/grub
update-grub
# Creating the docker.list file is idempotent, but it may overrite desired
# Adding an apt gpg key is idempotent.
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
# Creating the docker.list file is idempotent, but it may overwrite desired
# settings if it already exists. This could be solved with md5sum but it
# doesn't seem worth it.
echo 'deb http://get.docker.io/ubuntu docker main' > \
@@ -41,7 +55,7 @@ apt-get install -q -y lxc-docker
usermod -a -G docker "$user"
tmp=`mktemp -q` && {
# Only install the backport kernel, don't bother upgrade if the backport is
# Only install the backport kernel, don't bother upgrading if the backport is
# already installed. We want parse the output of apt so we need to save it
# with 'tee'. NOTE: The installation of the kernel will trigger dkms to
# install vboxguest if needed.
@@ -70,7 +84,7 @@ SCRIPT
# trigger dkms to build the virtualbox guest module install.
$vbox_script = <<VBOX_SCRIPT + $script
# Install the VirtualBox guest additions if they aren't already installed.
if [ ! -d /opt/VBoxGuestAdditions-4.3.4/ ]; then
if [ ! -d /opt/VBoxGuestAdditions-4.3.6/ ]; then
# Update remote package metadata. 'apt-get update' is idempotent.
apt-get update -q
@@ -79,10 +93,10 @@ if [ ! -d /opt/VBoxGuestAdditions-4.3.4/ ]; then
apt-get install -q -y linux-headers-generic-lts-raring dkms
echo 'Downloading VBox Guest Additions...'
wget -cq http://dlc.sun.com.edgesuite.net/virtualbox/4.3.4/VBoxGuestAdditions_4.3.4.iso
echo "f120793fa35050a8280eacf9c930cf8d9b88795161520f6515c0cc5edda2fe8a VBoxGuestAdditions_4.3.4.iso" | sha256sum --check || exit 1
wget -cq http://dlc.sun.com.edgesuite.net/virtualbox/4.3.6/VBoxGuestAdditions_4.3.6.iso
echo "95648fcdb5d028e64145a2fe2f2f28c946d219da366389295a61fed296ca79f0 VBoxGuestAdditions_4.3.6.iso" | sha256sum --check || exit 1
mount -o loop,ro /home/vagrant/VBoxGuestAdditions_4.3.4.iso /mnt
mount -o loop,ro /home/vagrant/VBoxGuestAdditions_4.3.6.iso /mnt
/mnt/VBoxLinuxAdditions.run --nox11
umount /mnt
fi
@@ -152,6 +166,8 @@ Vagrant::VERSION >= "1.1.0" and Vagrant.configure("2") do |config|
override.vm.provision :shell, :inline => $vbox_script
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
vb.customize ["modifyvm", :id, "--memory", VAGRANT_RAM]
vb.customize ["modifyvm", :id, "--cpus", VAGRANT_CORES]
end
end
@@ -161,16 +177,30 @@ Vagrant::VERSION < "1.1.0" and Vagrant::Config.run do |config|
config.vm.provision :shell, :inline => $vbox_script
end
if !FORWARD_DOCKER_PORTS.nil?
# Setup port forwarding per loaded environment variables
forward_ports = FORWARD_DOCKER_PORTS.nil? ? [] : [*49153..49900]
forward_ports += FORWARD_PORTS.split(',').map{|i| i.to_i } if FORWARD_PORTS
if forward_ports.any?
Vagrant::VERSION < "1.1.0" and Vagrant::Config.run do |config|
(49000..49900).each do |port|
forward_ports.each do |port|
config.vm.forward_port port, port
end
end
Vagrant::VERSION >= "1.1.0" and Vagrant.configure("2") do |config|
(49000..49900).each do |port|
config.vm.network :forwarded_port, :host => port, :guest => port
forward_ports.each do |port|
config.vm.network :forwarded_port, :host => port, :guest => port, auto_correct: true
end
end
end
if !PRIVATE_NETWORK.nil?
Vagrant::VERSION < "1.1.0" and Vagrant::Config.run do |config|
config.vm.network :hostonly, PRIVATE_NETWORK
end
Vagrant::VERSION >= "1.1.0" and Vagrant.configure("2") do |config|
config.vm.network "private_network", ip: PRIVATE_NETWORK
end
end

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
package docker
package api
import (
"fmt"
@@ -7,6 +7,20 @@ import (
"testing"
)
func TestJsonContentType(t *testing.T) {
if !MatchesContentType("application/json", "application/json") {
t.Fail()
}
if !MatchesContentType("application/json; charset=utf-8", "application/json") {
t.Fail()
}
if MatchesContentType("dockerapplication/json", "application/json") {
t.Fail()
}
}
func TestGetBoolParam(t *testing.T) {
if ret, err := getBoolParam("true"); err != nil || !ret {
t.Fatalf("true -> true, nil | got %t %s", ret, err)

View File

@@ -1,131 +0,0 @@
package docker
import "strings"
type (
APIHistory struct {
ID string `json:"Id"`
Tags []string `json:",omitempty"`
Created int64
CreatedBy string `json:",omitempty"`
Size int64
}
APIImages struct {
ID string `json:"Id"`
RepoTags []string `json:",omitempty"`
Created int64
Size int64
VirtualSize int64
ParentId string `json:",omitempty"`
}
APIImagesOld struct {
Repository string `json:",omitempty"`
Tag string `json:",omitempty"`
ID string `json:"Id"`
Created int64
Size int64
VirtualSize int64
}
APITop struct {
Titles []string
Processes [][]string
}
APIRmi struct {
Deleted string `json:",omitempty"`
Untagged string `json:",omitempty"`
}
APIContainers struct {
ID string `json:"Id"`
Image string
Command string
Created int64
Status string
Ports []APIPort
SizeRw int64
SizeRootFs int64
Names []string
}
APIContainersOld struct {
ID string `json:"Id"`
Image string
Command string
Created int64
Status string
Ports string
SizeRw int64
SizeRootFs int64
}
APIID struct {
ID string `json:"Id"`
}
APIRun struct {
ID string `json:"Id"`
Warnings []string `json:",omitempty"`
}
APIPort struct {
PrivatePort int64
PublicPort int64
Type string
IP string
}
APIWait struct {
StatusCode int
}
APIAuth struct {
Status string
}
APIImageConfig struct {
ID string `json:"Id"`
*Config
}
APICopy struct {
Resource string
HostPath string
}
APIContainer struct {
*Container
HostConfig *HostConfig
}
)
func (api APIImages) ToLegacy() []APIImagesOld {
outs := []APIImagesOld{}
for _, repotag := range api.RepoTags {
components := strings.SplitN(repotag, ":", 2)
outs = append(outs, APIImagesOld{
ID: api.ID,
Repository: components[0],
Tag: components[1],
Created: api.Created,
Size: api.Size,
VirtualSize: api.VirtualSize,
})
}
return outs
}
func (api APIContainers) ToLegacy() *APIContainersOld {
return &APIContainersOld{
ID: api.ID,
Image: api.Image,
Command: api.Command,
Created: api.Created,
Status: api.Status,
Ports: displayablePorts(api.Ports),
SizeRw: api.SizeRw,
SizeRootFs: api.SizeRootFs,
}
}

View File

@@ -1,19 +0,0 @@
package docker
import (
"testing"
)
func TestJsonContentType(t *testing.T) {
if !matchesContentType("application/json", "application/json") {
t.Fail()
}
if !matchesContentType("application/json; charset=utf-8", "application/json") {
t.Fail()
}
if matchesContentType("dockerapplication/json", "application/json") {
t.Fail()
}
}

View File

@@ -3,6 +3,8 @@ package archive
import (
"archive/tar"
"bytes"
"compress/bzip2"
"compress/gzip"
"fmt"
"github.com/dotcloud/docker/utils"
"io"
@@ -11,6 +13,8 @@ import (
"os/exec"
"path"
"path/filepath"
"strings"
"syscall"
)
type Archive io.Reader
@@ -19,10 +23,7 @@ type Compression int
type TarOptions struct {
Includes []string
Excludes []string
Recursive bool
Compression Compression
CreateFiles []string
}
const (
@@ -59,16 +60,57 @@ func DetectCompression(source []byte) Compression {
return Uncompressed
}
func (compression *Compression) Flag() string {
switch *compression {
case Bzip2:
return "j"
case Gzip:
return "z"
case Xz:
return "J"
func xzDecompress(archive io.Reader) (io.Reader, error) {
args := []string{"xz", "-d", "-c", "-q"}
return CmdStream(exec.Command(args[0], args[1:]...), archive)
}
func DecompressStream(archive io.Reader) (io.Reader, error) {
buf := make([]byte, 10)
totalN := 0
for totalN < 10 {
n, err := archive.Read(buf[totalN:])
if err != nil {
if err == io.EOF {
return nil, fmt.Errorf("Tarball too short")
}
return nil, err
}
totalN += n
utils.Debugf("[tar autodetect] n: %d", n)
}
compression := DetectCompression(buf)
wrap := io.MultiReader(bytes.NewReader(buf), archive)
switch compression {
case Uncompressed:
return wrap, nil
case Gzip:
return gzip.NewReader(wrap)
case Bzip2:
return bzip2.NewReader(wrap), nil
case Xz:
return xzDecompress(wrap)
default:
return nil, fmt.Errorf("Unsupported compression format %s", (&compression).Extension())
}
}
func CompressStream(dest io.WriteCloser, compression Compression) (io.WriteCloser, error) {
switch compression {
case Uncompressed:
return dest, nil
case Gzip:
return gzip.NewWriter(dest), nil
case Bzip2, Xz:
// archive/bzip2 does not support writing, and there is no xz support at all
// However, this is not a problem as docker only currently generates gzipped tars
return nil, fmt.Errorf("Unsupported compression format %s", (&compression).Extension())
default:
return nil, fmt.Errorf("Unsupported compression format %s", (&compression).Extension())
}
return ""
}
func (compression *Compression) Extension() string {
@@ -85,10 +127,145 @@ func (compression *Compression) Extension() string {
return ""
}
func addTarFile(path, name string, tw *tar.Writer) error {
fi, err := os.Lstat(path)
if err != nil {
return err
}
link := ""
if fi.Mode()&os.ModeSymlink != 0 {
if link, err = os.Readlink(path); err != nil {
return err
}
}
hdr, err := tar.FileInfoHeader(fi, link)
if err != nil {
return err
}
if fi.IsDir() && !strings.HasSuffix(name, "/") {
name = name + "/"
}
hdr.Name = name
stat, ok := fi.Sys().(*syscall.Stat_t)
if ok {
// Currently go does not fill in the major/minors
if stat.Mode&syscall.S_IFBLK == syscall.S_IFBLK ||
stat.Mode&syscall.S_IFCHR == syscall.S_IFCHR {
hdr.Devmajor = int64(major(uint64(stat.Rdev)))
hdr.Devminor = int64(minor(uint64(stat.Rdev)))
}
}
if err := tw.WriteHeader(hdr); err != nil {
return err
}
if hdr.Typeflag == tar.TypeReg {
if file, err := os.Open(path); err != nil {
return err
} else {
_, err := io.Copy(tw, file)
if err != nil {
return err
}
file.Close()
}
}
return nil
}
func createTarFile(path, extractDir string, hdr *tar.Header, reader *tar.Reader) error {
switch hdr.Typeflag {
case tar.TypeDir:
// Create directory unless it exists as a directory already.
// In that case we just want to merge the two
if fi, err := os.Lstat(path); !(err == nil && fi.IsDir()) {
if err := os.Mkdir(path, os.FileMode(hdr.Mode)); err != nil {
return err
}
}
case tar.TypeReg, tar.TypeRegA:
// Source is regular file
file, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY, os.FileMode(hdr.Mode))
if err != nil {
return err
}
if _, err := io.Copy(file, reader); err != nil {
file.Close()
return err
}
file.Close()
case tar.TypeBlock, tar.TypeChar, tar.TypeFifo:
mode := uint32(hdr.Mode & 07777)
switch hdr.Typeflag {
case tar.TypeBlock:
mode |= syscall.S_IFBLK
case tar.TypeChar:
mode |= syscall.S_IFCHR
case tar.TypeFifo:
mode |= syscall.S_IFIFO
}
if err := syscall.Mknod(path, mode, int(mkdev(hdr.Devmajor, hdr.Devminor))); err != nil {
return err
}
case tar.TypeLink:
if err := os.Link(filepath.Join(extractDir, hdr.Linkname), path); err != nil {
return err
}
case tar.TypeSymlink:
if err := os.Symlink(hdr.Linkname, path); err != nil {
return err
}
case tar.TypeXGlobalHeader:
utils.Debugf("PAX Global Extended Headers found and ignored")
return nil
default:
return fmt.Errorf("Unhandled tar header type %d\n", hdr.Typeflag)
}
if err := syscall.Lchown(path, hdr.Uid, hdr.Gid); err != nil {
return err
}
// There is no LChmod, so ignore mode for symlink. Also, this
// must happen after chown, as that can modify the file mode
if hdr.Typeflag != tar.TypeSymlink {
if err := syscall.Chmod(path, uint32(hdr.Mode&07777)); err != nil {
return err
}
}
ts := []syscall.Timespec{timeToTimespec(hdr.AccessTime), timeToTimespec(hdr.ModTime)}
// syscall.UtimesNano doesn't support a NOFOLLOW flag atm, and
if hdr.Typeflag != tar.TypeSymlink {
if err := syscall.UtimesNano(path, ts); err != nil {
return err
}
} else {
if err := LUtimesNano(path, ts); err != nil {
return err
}
}
return nil
}
// Tar creates an archive from the directory at `path`, and returns it as a
// stream of bytes.
func Tar(path string, compression Compression) (io.Reader, error) {
return TarFilter(path, &TarOptions{Recursive: true, Compression: compression})
return TarFilter(path, &TarOptions{Compression: compression})
}
func escapeName(name string) string {
@@ -109,57 +286,55 @@ func escapeName(name string) string {
// Tar creates an archive from the directory at `path`, only including files whose relative
// paths are included in `filter`. If `filter` is nil, then all files are included.
func TarFilter(path string, options *TarOptions) (io.Reader, error) {
args := []string{"tar", "--numeric-owner", "-f", "-", "-C", path, "-T", "-"}
if options.Includes == nil {
options.Includes = []string{"."}
}
args = append(args, "-c"+options.Compression.Flag())
func TarFilter(srcPath string, options *TarOptions) (io.Reader, error) {
pipeReader, pipeWriter := io.Pipe()
for _, exclude := range options.Excludes {
args = append(args, fmt.Sprintf("--exclude=%s", exclude))
compressWriter, err := CompressStream(pipeWriter, options.Compression)
if err != nil {
return nil, err
}
if !options.Recursive {
args = append(args, "--no-recursion")
}
tw := tar.NewWriter(compressWriter)
files := ""
for _, f := range options.Includes {
files = files + escapeName(f) + "\n"
}
go func() {
// In general we log errors here but ignore them because
// during e.g. a diff operation the container can continue
// mutating the filesystem and we can see transient errors
// from this
tmpDir := ""
if options.CreateFiles != nil {
var err error // Can't use := here or we override the outer tmpDir
tmpDir, err = ioutil.TempDir("", "docker-tar")
if err != nil {
return nil, err
if options.Includes == nil {
options.Includes = []string{"."}
}
files = files + "-C" + tmpDir + "\n"
for _, f := range options.CreateFiles {
path := filepath.Join(tmpDir, f)
err := os.MkdirAll(filepath.Dir(path), 0600)
if err != nil {
return nil, err
}
for _, include := range options.Includes {
filepath.Walk(filepath.Join(srcPath, include), func(filePath string, f os.FileInfo, err error) error {
if err != nil {
utils.Debugf("Tar: Can't stat file %s to tar: %s\n", srcPath, err)
return nil
}
if file, err := os.OpenFile(path, os.O_CREATE, 0600); err != nil {
return nil, err
} else {
file.Close()
}
files = files + escapeName(f) + "\n"
}
}
relFilePath, err := filepath.Rel(srcPath, filePath)
if err != nil {
return nil
}
return CmdStream(exec.Command(args[0], args[1:]...), &files, func() {
if tmpDir != "" {
_ = os.RemoveAll(tmpDir)
if err := addTarFile(filePath, relFilePath, tw); err != nil {
utils.Debugf("Can't add file %s to tar: %s\n", srcPath, err)
}
return nil
})
}
})
// Make sure to check the error on Close.
if err := tw.Close(); err != nil {
utils.Debugf("Can't close tar writer: %s\n", err)
}
if err := compressWriter.Close(); err != nil {
utils.Debugf("Can't close compress writer: %s\n", err)
}
}()
return pipeReader, nil
}
// Untar reads a stream of bytes from `archive`, parses it as a tar archive,
@@ -167,54 +342,88 @@ func TarFilter(path string, options *TarOptions) (io.Reader, error) {
// The archive may be compressed with one of the following algorithms:
// identity (uncompressed), gzip, bzip2, xz.
// FIXME: specify behavior when target path exists vs. doesn't exist.
func Untar(archive io.Reader, path string, options *TarOptions) error {
func Untar(archive io.Reader, dest string, options *TarOptions) error {
if archive == nil {
return fmt.Errorf("Empty archive")
}
buf := make([]byte, 10)
totalN := 0
for totalN < 10 {
n, err := archive.Read(buf[totalN:])
archive, err := DecompressStream(archive)
if err != nil {
return err
}
tr := tar.NewReader(archive)
var dirs []*tar.Header
// Iterate through the files in the archive.
for {
hdr, err := tr.Next()
if err == io.EOF {
// end of tar archive
break
}
if err != nil {
if err == io.EOF {
return fmt.Errorf("Tarball too short")
}
return err
}
totalN += n
utils.Debugf("[tar autodetect] n: %d", n)
}
compression := DetectCompression(buf)
// Normalize name, for safety and for a simple is-root check
hdr.Name = filepath.Clean(hdr.Name)
utils.Debugf("Archive compression detected: %s", compression.Extension())
args := []string{"--numeric-owner", "-f", "-", "-C", path, "-x" + compression.Flag()}
if !strings.HasSuffix(hdr.Name, "/") {
// Not the root directory, ensure that the parent directory exists
parent := filepath.Dir(hdr.Name)
parentPath := filepath.Join(dest, parent)
if _, err := os.Lstat(parentPath); err != nil && os.IsNotExist(err) {
err = os.MkdirAll(parentPath, 600)
if err != nil {
return err
}
}
}
if options != nil {
for _, exclude := range options.Excludes {
args = append(args, fmt.Sprintf("--exclude=%s", exclude))
path := filepath.Join(dest, hdr.Name)
// If path exits we almost always just want to remove and replace it
// The only exception is when it is a directory *and* the file from
// the layer is also a directory. Then we want to merge them (i.e.
// just apply the metadata from the layer).
if fi, err := os.Lstat(path); err == nil {
if !(fi.IsDir() && hdr.Typeflag == tar.TypeDir) {
if err := os.RemoveAll(path); err != nil {
return err
}
}
}
if err := createTarFile(path, dest, hdr, tr); err != nil {
return err
}
// Directory mtimes must be handled at the end to avoid further
// file creation in them to modify the directory mtime
if hdr.Typeflag == tar.TypeDir {
dirs = append(dirs, hdr)
}
}
cmd := exec.Command("tar", args...)
cmd.Stdin = io.MultiReader(bytes.NewReader(buf), archive)
// Hardcode locale environment for predictable outcome regardless of host configuration.
// (see https://github.com/dotcloud/docker/issues/355)
cmd.Env = []string{"LANG=en_US.utf-8", "LC_ALL=en_US.utf-8"}
output, err := cmd.CombinedOutput()
if err != nil {
return fmt.Errorf("%s: %s", err, output)
for _, hdr := range dirs {
path := filepath.Join(dest, hdr.Name)
ts := []syscall.Timespec{timeToTimespec(hdr.AccessTime), timeToTimespec(hdr.ModTime)}
if err := syscall.UtimesNano(path, ts); err != nil {
return err
}
}
return nil
}
// TarUntar is a convenience function which calls Tar and Untar, with
// the output of one piped into the other. If either Tar or Untar fails,
// TarUntar aborts and returns the error.
func TarUntar(src string, filter []string, dst string) error {
utils.Debugf("TarUntar(%s %s %s)", src, filter, dst)
archive, err := TarFilter(src, &TarOptions{Compression: Uncompressed, Includes: filter, Recursive: true})
func TarUntar(src string, dst string) error {
utils.Debugf("TarUntar(%s %s)", src, dst)
archive, err := TarFilter(src, &TarOptions{Compression: Uncompressed})
if err != nil {
return err
}
@@ -251,7 +460,7 @@ func CopyWithTar(src, dst string) error {
return err
}
utils.Debugf("Calling TarUntar(%s, %s)", src, dst)
return TarUntar(src, nil, dst)
return TarUntar(src, dst)
}
// CopyFileWithTar emulates the behavior of the 'cp' command-line
@@ -260,7 +469,7 @@ func CopyWithTar(src, dst string) error {
//
// If `dst` ends with a trailing slash '/', the final destination path
// will be `dst/base(src)`.
func CopyFileWithTar(src, dst string) error {
func CopyFileWithTar(src, dst string) (err error) {
utils.Debugf("CopyFileWithTar(%s, %s)", src, dst)
srcSt, err := os.Stat(src)
if err != nil {
@@ -277,57 +486,61 @@ func CopyFileWithTar(src, dst string) error {
if err := os.MkdirAll(filepath.Dir(dst), 0700); err != nil && !os.IsExist(err) {
return err
}
buf := new(bytes.Buffer)
tw := tar.NewWriter(buf)
hdr, err := tar.FileInfoHeader(srcSt, "")
if err != nil {
return err
}
hdr.Name = filepath.Base(dst)
if err := tw.WriteHeader(hdr); err != nil {
return err
}
srcF, err := os.Open(src)
if err != nil {
return err
}
if _, err := io.Copy(tw, srcF); err != nil {
return err
}
tw.Close()
return Untar(buf, filepath.Dir(dst), nil)
r, w := io.Pipe()
errC := utils.Go(func() error {
defer w.Close()
srcF, err := os.Open(src)
if err != nil {
return err
}
defer srcF.Close()
tw := tar.NewWriter(w)
hdr, err := tar.FileInfoHeader(srcSt, "")
if err != nil {
return err
}
hdr.Name = filepath.Base(dst)
if err := tw.WriteHeader(hdr); err != nil {
return err
}
if _, err := io.Copy(tw, srcF); err != nil {
return err
}
tw.Close()
return nil
})
defer func() {
if er := <-errC; err != nil {
err = er
}
}()
return Untar(r, filepath.Dir(dst), nil)
}
// CmdStream executes a command, and returns its stdout as a stream.
// If the command fails to run or doesn't complete successfully, an error
// will be returned, including anything written on stderr.
func CmdStream(cmd *exec.Cmd, input *string, atEnd func()) (io.Reader, error) {
func CmdStream(cmd *exec.Cmd, input io.Reader) (io.Reader, error) {
if input != nil {
stdin, err := cmd.StdinPipe()
if err != nil {
if atEnd != nil {
atEnd()
}
return nil, err
}
// Write stdin if any
go func() {
_, _ = stdin.Write([]byte(*input))
io.Copy(stdin, input)
stdin.Close()
}()
}
stdout, err := cmd.StdoutPipe()
if err != nil {
if atEnd != nil {
atEnd()
}
return nil, err
}
stderr, err := cmd.StderrPipe()
if err != nil {
if atEnd != nil {
atEnd()
}
return nil, err
}
pipeR, pipeW := io.Pipe()
@@ -352,9 +565,6 @@ func CmdStream(cmd *exec.Cmd, input *string, atEnd func()) (io.Reader, error) {
} else {
pipeW.Close()
}
if atEnd != nil {
atEnd()
}
}()
// Run the command and return the pipe
if err := cmd.Start(); err != nil {

View File

@@ -1,6 +1,7 @@
package archive
import (
"archive/tar"
"bytes"
"fmt"
"io"
@@ -14,7 +15,7 @@ import (
func TestCmdStreamLargeStderr(t *testing.T) {
cmd := exec.Command("/bin/sh", "-c", "dd if=/dev/zero bs=1k count=1000 of=/dev/stderr; echo hello")
out, err := CmdStream(cmd, nil, nil)
out, err := CmdStream(cmd, nil)
if err != nil {
t.Fatalf("Failed to start command: %s", err)
}
@@ -35,7 +36,7 @@ func TestCmdStreamLargeStderr(t *testing.T) {
func TestCmdStreamBad(t *testing.T) {
badCmd := exec.Command("/bin/sh", "-c", "echo hello; echo >&2 error couldn\\'t reverse the phase pulser; exit 1")
out, err := CmdStream(badCmd, nil, nil)
out, err := CmdStream(badCmd, nil)
if err != nil {
t.Fatalf("Failed to start command: %s", err)
}
@@ -50,7 +51,7 @@ func TestCmdStreamBad(t *testing.T) {
func TestCmdStreamGood(t *testing.T) {
cmd := exec.Command("/bin/sh", "-c", "echo hello; exit 0")
out, err := CmdStream(cmd, nil, nil)
out, err := CmdStream(cmd, nil)
if err != nil {
t.Fatal(err)
}
@@ -89,6 +90,16 @@ func tarUntar(t *testing.T, origin string, compression Compression) error {
if _, err := os.Stat(tmp); err != nil {
return err
}
changes, err := ChangesDirs(origin, tmp)
if err != nil {
return err
}
if len(changes) != 0 {
t.Fatalf("Unexpected differences after tarUntar: %v", changes)
}
return nil
}
@@ -108,11 +119,20 @@ func TestTarUntar(t *testing.T) {
for _, c := range []Compression{
Uncompressed,
Gzip,
Bzip2,
Xz,
} {
if err := tarUntar(t, origin, c); err != nil {
t.Fatalf("Error tar/untar for compression %s: %s", c.Extension(), err)
}
}
}
// Some tar archives such as http://haproxy.1wt.eu/download/1.5/src/devel/haproxy-1.5-dev21.tar.gz
// use PAX Global Extended Headers.
// Failing prevents the archives from being uncompressed during ADD
func TestTypeXGlobalHeaderDoesNotFail(t *testing.T) {
hdr := tar.Header{Typeflag: tar.TypeXGlobalHeader}
err := createTarFile("pax_global_header", "some_dir", &hdr, nil)
if err != nil {
t.Fatal(err)
}
}

View File

@@ -1,11 +1,15 @@
package archive
import (
"archive/tar"
"fmt"
"github.com/dotcloud/docker/utils"
"io"
"os"
"path/filepath"
"strings"
"syscall"
"time"
)
type ChangeType int
@@ -34,6 +38,21 @@ func (change *Change) String() string {
return fmt.Sprintf("%s %s", kind, change.Path)
}
// Gnu tar and the go tar writer don't have sub-second mtime
// precision, which is problematic when we apply changes via tar
// files, we handle this by comparing for exact times, *or* same
// second count and either a or b having exactly 0 nanoseconds
func sameFsTime(a, b time.Time) bool {
return a == b ||
(a.Unix() == b.Unix() &&
(a.Nanosecond() == 0 || b.Nanosecond() == 0))
}
func sameFsTimeSpec(a, b syscall.Timespec) bool {
return a.Sec == b.Sec &&
(a.Nsec == b.Nsec || a.Nsec == 0 || b.Nsec == 0)
}
func Changes(layers []string, rw string) ([]Change, error) {
var changes []Change
err := filepath.Walk(rw, func(path string, f os.FileInfo, err error) error {
@@ -85,7 +104,7 @@ func Changes(layers []string, rw string) ([]Change, error) {
// However, if it's a directory, maybe it wasn't actually modified.
// If you modify /foo/bar/baz, then /foo will be part of the changed files only because it's the parent of bar
if stat.IsDir() && f.IsDir() {
if f.Size() == stat.Size() && f.Mode() == stat.Mode() && f.ModTime() == stat.ModTime() {
if f.Size() == stat.Size() && f.Mode() == stat.Mode() && sameFsTime(f.ModTime(), stat.ModTime()) {
// Both directories are the same, don't record the change
return nil
}
@@ -181,7 +200,7 @@ func (info *FileInfo) addChanges(oldInfo *FileInfo, changes *[]Change) {
oldStat.Rdev != newStat.Rdev ||
// Don't look at size for dirs, its not a good measure of change
(oldStat.Size != newStat.Size && oldStat.Mode&syscall.S_IFDIR != syscall.S_IFDIR) ||
getLastModification(oldStat) != getLastModification(newStat) {
!sameFsTimeSpec(getLastModification(oldStat), getLastModification(newStat)) {
change := Change{
Path: newChild.path(),
Kind: ChangeModify,
@@ -294,24 +313,51 @@ func ChangesSize(newDir string, changes []Change) int64 {
return size
}
func ExportChanges(dir string, changes []Change) (Archive, error) {
files := make([]string, 0)
deletions := make([]string, 0)
for _, change := range changes {
if change.Kind == ChangeModify || change.Kind == ChangeAdd {
files = append(files, change.Path)
}
if change.Kind == ChangeDelete {
base := filepath.Base(change.Path)
dir := filepath.Dir(change.Path)
deletions = append(deletions, filepath.Join(dir, ".wh."+base))
}
}
// FIXME: Why do we create whiteout files inside Tar code ?
return TarFilter(dir, &TarOptions{
Compression: Uncompressed,
Includes: files,
Recursive: false,
CreateFiles: deletions,
})
func major(device uint64) uint64 {
return (device >> 8) & 0xfff
}
func minor(device uint64) uint64 {
return (device & 0xff) | ((device >> 12) & 0xfff00)
}
func ExportChanges(dir string, changes []Change) (Archive, error) {
reader, writer := io.Pipe()
tw := tar.NewWriter(writer)
go func() {
// In general we log errors here but ignore them because
// during e.g. a diff operation the container can continue
// mutating the filesystem and we can see transient errors
// from this
for _, change := range changes {
if change.Kind == ChangeDelete {
whiteOutDir := filepath.Dir(change.Path)
whiteOutBase := filepath.Base(change.Path)
whiteOut := filepath.Join(whiteOutDir, ".wh."+whiteOutBase)
hdr := &tar.Header{
Name: whiteOut[1:],
Size: 0,
ModTime: time.Now(),
AccessTime: time.Now(),
ChangeTime: time.Now(),
}
if err := tw.WriteHeader(hdr); err != nil {
utils.Debugf("Can't write whiteout header: %s\n", err)
}
} else {
path := filepath.Join(dir, change.Path)
if err := addTarFile(path, change.Path[1:], tw); err != nil {
utils.Debugf("Can't add file %s to tar: %s\n", path, err)
}
}
}
// Make sure to check the error on Close.
if err := tw.Close(); err != nil {
utils.Debugf("Can't close layer: %s\n", err)
}
writer.Close()
}()
return reader, nil
}

View File

@@ -258,48 +258,44 @@ func TestChangesDirsMutated(t *testing.T) {
}
func TestApplyLayer(t *testing.T) {
t.Skip("Skipping TestApplyLayer due to known failures") // Disable this for now as it is broken
return
src, err := ioutil.TempDir("", "docker-changes-test")
if err != nil {
t.Fatal(err)
}
createSampleDir(t, src)
defer os.RemoveAll(src)
dst := src + "-copy"
if err := copyDir(src, dst); err != nil {
t.Fatal(err)
}
mutateSampleDir(t, dst)
defer os.RemoveAll(dst)
// src, err := ioutil.TempDir("", "docker-changes-test")
// if err != nil {
// t.Fatal(err)
// }
// createSampleDir(t, src)
// dst := src + "-copy"
// if err := copyDir(src, dst); err != nil {
// t.Fatal(err)
// }
// mutateSampleDir(t, dst)
changes, err := ChangesDirs(dst, src)
if err != nil {
t.Fatal(err)
}
// changes, err := ChangesDirs(dst, src)
// if err != nil {
// t.Fatal(err)
// }
layer, err := ExportChanges(dst, changes)
if err != nil {
t.Fatal(err)
}
// layer, err := ExportChanges(dst, changes)
// if err != nil {
// t.Fatal(err)
// }
layerCopy, err := NewTempArchive(layer, "")
if err != nil {
t.Fatal(err)
}
// layerCopy, err := NewTempArchive(layer, "")
// if err != nil {
// t.Fatal(err)
// }
if err := ApplyLayer(src, layerCopy); err != nil {
t.Fatal(err)
}
// if err := ApplyLayer(src, layerCopy); err != nil {
// t.Fatal(err)
// }
changes2, err := ChangesDirs(src, dst)
if err != nil {
t.Fatal(err)
}
// changes2, err := ChangesDirs(src, dst)
// if err != nil {
// t.Fatal(err)
// }
// if len(changes2) != 0 {
// t.Fatalf("Unexpected differences after re applying mutation: %v", changes)
// }
// os.RemoveAll(src)
// os.RemoveAll(dst)
if len(changes2) != 0 {
t.Fatalf("Unexpected differences after reapplying mutation: %v", changes2)
}
}

View File

@@ -1,6 +1,8 @@
package archive
import (
"archive/tar"
"io"
"os"
"path/filepath"
"strings"
@@ -8,87 +10,108 @@ import (
"time"
)
// Linux device nodes are a bit weird due to backwards compat with 16 bit device nodes.
// They are, from low to high: the lower 8 bits of the minor, then 12 bits of the major,
// then the top 12 bits of the minor
func mkdev(major int64, minor int64) uint32 {
return uint32(((minor & 0xfff00) << 12) | ((major & 0xfff) << 8) | (minor & 0xff))
}
func timeToTimespec(time time.Time) (ts syscall.Timespec) {
if time.IsZero() {
// Return UTIME_OMIT special value
ts.Sec = 0
ts.Nsec = ((1 << 30) - 2)
return
}
return syscall.NsecToTimespec(time.UnixNano())
}
// ApplyLayer parses a diff in the standard layer format from `layer`, and
// applies it to the directory `dest`.
func ApplyLayer(dest string, layer Archive) error {
// Poor man's diff applyer in 2 steps:
// We need to be able to set any perms
oldmask := syscall.Umask(0)
defer syscall.Umask(oldmask)
// Step 1: untar everything in place
if err := Untar(layer, dest, nil); err != nil {
return err
}
modifiedDirs := make(map[string]*syscall.Stat_t)
addDir := func(file string) {
d := filepath.Dir(file)
if _, exists := modifiedDirs[d]; !exists {
if s, err := os.Lstat(d); err == nil {
if sys := s.Sys(); sys != nil {
if stat, ok := sys.(*syscall.Stat_t); ok {
modifiedDirs[d] = stat
}
}
}
}
}
// Step 2: walk for whiteouts and apply them, removing them in the process
err := filepath.Walk(dest, func(fullPath string, f os.FileInfo, err error) error {
if err != nil {
if os.IsNotExist(err) {
// This happens in the case of whiteouts in parent dir removing a directory
// We just ignore it
return filepath.SkipDir
}
return err
}
// Rebase path
path, err := filepath.Rel(dest, fullPath)
if err != nil {
return err
}
path = filepath.Join("/", path)
// Skip AUFS metadata
if matched, err := filepath.Match("/.wh..wh.*", path); err != nil {
return err
} else if matched {
addDir(fullPath)
if err := os.RemoveAll(fullPath); err != nil {
return err
}
}
filename := filepath.Base(path)
if strings.HasPrefix(filename, ".wh.") {
rmTargetName := filename[len(".wh."):]
rmTargetPath := filepath.Join(filepath.Dir(fullPath), rmTargetName)
// Remove the file targeted by the whiteout
addDir(rmTargetPath)
if err := os.RemoveAll(rmTargetPath); err != nil {
return err
}
// Remove the whiteout itself
addDir(fullPath)
if err := os.RemoveAll(fullPath); err != nil {
return err
}
}
return nil
})
layer, err := DecompressStream(layer)
if err != nil {
return err
}
for k, v := range modifiedDirs {
lastAccess := getLastAccess(v)
lastModification := getLastModification(v)
aTime := time.Unix(lastAccess.Unix())
mTime := time.Unix(lastModification.Unix())
tr := tar.NewReader(layer)
if err := os.Chtimes(k, aTime, mTime); err != nil {
var dirs []*tar.Header
// Iterate through the files in the archive.
for {
hdr, err := tr.Next()
if err == io.EOF {
// end of tar archive
break
}
if err != nil {
return err
}
// Normalize name, for safety and for a simple is-root check
hdr.Name = filepath.Clean(hdr.Name)
if !strings.HasSuffix(hdr.Name, "/") {
// Not the root directory, ensure that the parent directory exists.
// This happened in some tests where an image had a tarfile without any
// parent directories.
parent := filepath.Dir(hdr.Name)
parentPath := filepath.Join(dest, parent)
if _, err := os.Lstat(parentPath); err != nil && os.IsNotExist(err) {
err = os.MkdirAll(parentPath, 600)
if err != nil {
return err
}
}
}
// Skip AUFS metadata dirs
if strings.HasPrefix(hdr.Name, ".wh..wh.") {
continue
}
path := filepath.Join(dest, hdr.Name)
base := filepath.Base(path)
if strings.HasPrefix(base, ".wh.") {
originalBase := base[len(".wh."):]
originalPath := filepath.Join(filepath.Dir(path), originalBase)
if err := os.RemoveAll(originalPath); err != nil {
return err
}
} else {
// If path exits we almost always just want to remove and replace it.
// The only exception is when it is a directory *and* the file from
// the layer is also a directory. Then we want to merge them (i.e.
// just apply the metadata from the layer).
if fi, err := os.Lstat(path); err == nil {
if !(fi.IsDir() && hdr.Typeflag == tar.TypeDir) {
if err := os.RemoveAll(path); err != nil {
return err
}
}
}
if err := createTarFile(path, dest, hdr, tr); err != nil {
return err
}
// Directory mtimes must be handled at the end to avoid further
// file creation in them to modify the directory mtime
if hdr.Typeflag == tar.TypeDir {
dirs = append(dirs, hdr)
}
}
}
for _, hdr := range dirs {
path := filepath.Join(dest, hdr.Name)
ts := []syscall.Timespec{timeToTimespec(hdr.AccessTime), timeToTimespec(hdr.ModTime)}
if err := syscall.UtimesNano(path, ts); err != nil {
return err
}
}

View File

@@ -1,3 +1,5 @@
// +build !linux !amd64
package archive
import "syscall"
@@ -9,3 +11,7 @@ func getLastAccess(stat *syscall.Stat_t) syscall.Timespec {
func getLastModification(stat *syscall.Stat_t) syscall.Timespec {
return stat.Mtimespec
}
func LUtimesNano(path string, ts []syscall.Timespec) error {
return nil
}

View File

@@ -1,6 +1,9 @@
package archive
import "syscall"
import (
"syscall"
"unsafe"
)
func getLastAccess(stat *syscall.Stat_t) syscall.Timespec {
return stat.Atim
@@ -9,3 +12,21 @@ func getLastAccess(stat *syscall.Stat_t) syscall.Timespec {
func getLastModification(stat *syscall.Stat_t) syscall.Timespec {
return stat.Mtim
}
func LUtimesNano(path string, ts []syscall.Timespec) error {
// These are not currently available in syscall
AT_FDCWD := -100
AT_SYMLINK_NOFOLLOW := 0x100
var _path *byte
_path, err := syscall.BytePtrFromString(path)
if err != nil {
return err
}
if _, _, err := syscall.Syscall6(syscall.SYS_UTIMENSAT, uintptr(AT_FDCWD), uintptr(unsafe.Pointer(_path)), uintptr(unsafe.Pointer(&ts[0])), uintptr(AT_SYMLINK_NOFOLLOW), 0, 0); err != 0 && err != syscall.ENOSYS {
return err
}
return nil
}

View File

@@ -163,7 +163,7 @@ func Login(authConfig *AuthConfig, factory *utils.HTTPRequestFactory) (string, e
loginAgainstOfficialIndex := serverAddress == IndexServerAddress()
// to avoid sending the server address to the server it should be removed before marshalled
// to avoid sending the server address to the server it should be removed before being marshalled
authCopy := *authConfig
authCopy.ServerAddress = ""
@@ -254,11 +254,11 @@ func (config *ConfigFile) ResolveAuthConfig(registry string) AuthConfig {
// default to the index server
return config.Configs[IndexServerAddress()]
}
// if its not the index server there are three cases:
// if it's not the index server there are three cases:
//
// 1. this is a full config url -> it should be used as is
// 2. it could be a full url, but with the wrong protocol
// 3. it can be the hostname optionally with a port
// 1. a full config url -> it should be used as is
// 2. a full url, but with the wrong protocol
// 3. a hostname, with an optional port
//
// as there is only one auth entry which is fully qualified we need to start
// parsing and matching

View File

@@ -1,21 +1,31 @@
package docker
import (
"crypto/sha256"
"encoding/hex"
"encoding/json"
"errors"
"fmt"
"github.com/dotcloud/docker/archive"
"github.com/dotcloud/docker/auth"
"github.com/dotcloud/docker/registry"
"github.com/dotcloud/docker/utils"
"io"
"io/ioutil"
"net/url"
"os"
"path"
"path/filepath"
"reflect"
"regexp"
"sort"
"strings"
)
var (
ErrDockerfileEmpty = errors.New("Dockerfile cannot be empty")
)
type BuildFile interface {
Build(io.Reader) (string, error)
CmdFrom(string) error
@@ -26,15 +36,19 @@ type buildFile struct {
runtime *Runtime
srv *Server
image string
maintainer string
config *Config
context string
image string
maintainer string
config *Config
contextPath string
context *utils.TarSum
verbose bool
utilizeCache bool
rm bool
authConfig *auth.AuthConfig
configFile *auth.ConfigFile
tmpContainers map[string]struct{}
tmpImages map[string]struct{}
@@ -60,7 +74,22 @@ func (b *buildFile) CmdFrom(name string) error {
if err != nil {
if b.runtime.graph.IsNotExist(err) {
remote, tag := utils.ParseRepositoryTag(name)
if err := b.srv.ImagePull(remote, tag, b.outOld, b.sf, b.authConfig, nil, true); err != nil {
pullRegistryAuth := b.authConfig
if len(b.configFile.Configs) > 0 {
// The request came with a full auth config file, we prefer to use that
endpoint, _, err := registry.ResolveRepositoryName(remote)
if err != nil {
return err
}
resolvedAuth := b.configFile.ResolveAuthConfig(endpoint)
pullRegistryAuth = &resolvedAuth
}
job := b.srv.Eng.Job("pull", remote, tag)
job.SetenvBool("json", b.sf.Json())
job.SetenvBool("parallel", true)
job.SetenvJson("authConfig", pullRegistryAuth)
job.Stdout.Add(b.outOld)
if err := job.Run(); err != nil {
return err
}
image, err = b.runtime.repositories.LookupImage(name)
@@ -79,19 +108,57 @@ func (b *buildFile) CmdFrom(name string) error {
if b.config.Env == nil || len(b.config.Env) == 0 {
b.config.Env = append(b.config.Env, "HOME=/", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")
}
// Process ONBUILD triggers if they exist
if nTriggers := len(b.config.OnBuild); nTriggers != 0 {
fmt.Fprintf(b.errStream, "# Executing %d build triggers\n", nTriggers)
}
for n, step := range b.config.OnBuild {
if err := b.BuildStep(fmt.Sprintf("onbuild-%d", n), step); err != nil {
return err
}
}
b.config.OnBuild = []string{}
return nil
}
// The ONBUILD command declares a build instruction to be executed in any future build
// using the current image as a base.
func (b *buildFile) CmdOnbuild(trigger string) error {
b.config.OnBuild = append(b.config.OnBuild, trigger)
return b.commit("", b.config.Cmd, fmt.Sprintf("ONBUILD %s", trigger))
}
func (b *buildFile) CmdMaintainer(name string) error {
b.maintainer = name
return b.commit("", b.config.Cmd, fmt.Sprintf("MAINTAINER %s", name))
}
// probeCache checks to see if image-caching is enabled (`b.utilizeCache`)
// and if so attempts to look up the current `b.image` and `b.config` pair
// in the current server `b.srv`. If an image is found, probeCache returns
// `(true, nil)`. If no image is found, it returns `(false, nil)`. If there
// is any error, it returns `(false, err)`.
func (b *buildFile) probeCache() (bool, error) {
if b.utilizeCache {
if cache, err := b.srv.ImageGetCached(b.image, b.config); err != nil {
return false, err
} else if cache != nil {
fmt.Fprintf(b.outStream, " ---> Using cache\n")
utils.Debugf("[BUILDER] Use cached version")
b.image = cache.ID
return true, nil
} else {
utils.Debugf("[BUILDER] Cache miss")
}
}
return false, nil
}
func (b *buildFile) CmdRun(args string) error {
if b.image == "" {
return fmt.Errorf("Please provide a source image with `from` prior to run")
}
config, _, _, err := ParseRun([]string{b.image, "/bin/sh", "-c", args}, nil)
config, _, _, err := ParseRun(append([]string{b.image}, b.buildCmdFromJson(args)...), nil)
if err != nil {
return err
}
@@ -104,17 +171,12 @@ func (b *buildFile) CmdRun(args string) error {
utils.Debugf("Command to be executed: %v", b.config.Cmd)
if b.utilizeCache {
if cache, err := b.srv.ImageGetCached(b.image, b.config); err != nil {
return err
} else if cache != nil {
fmt.Fprintf(b.outStream, " ---> Using cache\n")
utils.Debugf("[BUILDER] Use cached version")
b.image = cache.ID
return nil
} else {
utils.Debugf("[BUILDER] Cache miss")
}
hit, err := b.probeCache()
if err != nil {
return err
}
if hit {
return nil
}
cid, err := b.run()
@@ -185,16 +247,30 @@ func (b *buildFile) CmdEnv(args string) error {
return b.commit("", b.config.Cmd, fmt.Sprintf("ENV %s", replacedVar))
}
func (b *buildFile) CmdCmd(args string) error {
func (b *buildFile) buildCmdFromJson(args string) []string {
var cmd []string
if err := json.Unmarshal([]byte(args), &cmd); err != nil {
utils.Debugf("Error unmarshalling: %s, setting cmd to /bin/sh -c", err)
utils.Debugf("Error unmarshalling: %s, setting to /bin/sh -c", err)
cmd = []string{"/bin/sh", "-c", args}
}
if err := b.commit("", cmd, fmt.Sprintf("CMD %v", cmd)); err != nil {
return cmd
}
func (b *buildFile) CmdCmd(args string) error {
cmd := b.buildCmdFromJson(args)
b.config.Cmd = cmd
if err := b.commit("", b.config.Cmd, fmt.Sprintf("CMD %v", cmd)); err != nil {
return err
}
return nil
}
func (b *buildFile) CmdEntrypoint(args string) error {
entrypoint := b.buildCmdFromJson(args)
b.config.Entrypoint = entrypoint
if err := b.commit("", b.config.Cmd, fmt.Sprintf("ENTRYPOINT %v", entrypoint)); err != nil {
return err
}
b.config.Cmd = cmd
return nil
}
@@ -217,23 +293,6 @@ func (b *buildFile) CmdCopy(args string) error {
return fmt.Errorf("COPY has been deprecated. Please use ADD instead")
}
func (b *buildFile) CmdEntrypoint(args string) error {
if args == "" {
return fmt.Errorf("Entrypoint cannot be empty")
}
var entrypoint []string
if err := json.Unmarshal([]byte(args), &entrypoint); err != nil {
b.config.Entrypoint = []string{"/bin/sh", "-c", args}
} else {
b.config.Entrypoint = entrypoint
}
if err := b.commit("", b.config.Cmd, fmt.Sprintf("ENTRYPOINT %s", args)); err != nil {
return err
}
return nil
}
func (b *buildFile) CmdWorkdir(workdir string) error {
b.config.WorkingDir = workdir
return b.commit("", b.config.Cmd, fmt.Sprintf("WORKDIR %v", workdir))
@@ -260,47 +319,44 @@ func (b *buildFile) CmdVolume(args string) error {
return nil
}
func (b *buildFile) addRemote(container *Container, orig, dest string) error {
file, err := utils.Download(orig)
func (b *buildFile) checkPathForAddition(orig string) error {
origPath := path.Join(b.contextPath, orig)
if p, err := filepath.EvalSymlinks(origPath); err != nil {
if os.IsNotExist(err) {
return fmt.Errorf("%s: no such file or directory", orig)
}
return err
} else {
origPath = p
}
if !strings.HasPrefix(origPath, b.contextPath) {
return fmt.Errorf("Forbidden path outside the build context: %s (%s)", orig, origPath)
}
_, err := os.Stat(origPath)
if err != nil {
if os.IsNotExist(err) {
return fmt.Errorf("%s: no such file or directory", orig)
}
return err
}
defer file.Body.Close()
// If the destination is a directory, figure out the filename.
if strings.HasSuffix(dest, "/") {
u, err := url.Parse(orig)
if err != nil {
return err
}
path := u.Path
if strings.HasSuffix(path, "/") {
path = path[:len(path)-1]
}
parts := strings.Split(path, "/")
filename := parts[len(parts)-1]
if filename == "" {
return fmt.Errorf("cannot determine filename from url: %s", u)
}
dest = dest + filename
}
return container.Inject(file.Body, dest)
return nil
}
func (b *buildFile) addContext(container *Container, orig, dest string) error {
origPath := path.Join(b.context, orig)
destPath := path.Join(container.RootfsPath(), dest)
var (
origPath = path.Join(b.contextPath, orig)
destPath = path.Join(container.BasefsPath(), dest)
)
// Preserve the trailing '/'
if strings.HasSuffix(dest, "/") {
destPath = destPath + "/"
}
if !strings.HasPrefix(origPath, b.context) {
return fmt.Errorf("Forbidden path outside the build context: %s (%s)", orig, origPath)
}
fi, err := os.Stat(origPath)
if err != nil {
return fmt.Errorf("%s: no such file or directory", orig)
if os.IsNotExist(err) {
return fmt.Errorf("%s: no such file or directory", orig)
}
return err
}
if fi.IsDir() {
if err := archive.CopyWithTar(origPath, destPath); err != nil {
@@ -321,7 +377,7 @@ func (b *buildFile) addContext(container *Container, orig, dest string) error {
}
func (b *buildFile) CmdAdd(args string) error {
if b.context == "" {
if b.context == nil {
return fmt.Errorf("No context given. Impossible to use ADD")
}
tmp := strings.SplitN(args, " ", 2)
@@ -341,8 +397,112 @@ func (b *buildFile) CmdAdd(args string) error {
cmd := b.config.Cmd
b.config.Cmd = []string{"/bin/sh", "-c", fmt.Sprintf("#(nop) ADD %s in %s", orig, dest)}
b.config.Image = b.image
// FIXME: do we really need this?
var (
origPath = orig
destPath = dest
remoteHash string
)
if utils.IsURL(orig) {
resp, err := utils.Download(orig)
if err != nil {
return err
}
tmpDirName, err := ioutil.TempDir(b.contextPath, "docker-remote")
if err != nil {
return err
}
tmpFileName := path.Join(tmpDirName, "tmp")
tmpFile, err := os.OpenFile(tmpFileName, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0600)
if err != nil {
return err
}
defer os.RemoveAll(tmpDirName)
if _, err = io.Copy(tmpFile, resp.Body); err != nil {
tmpFile.Close()
return err
}
origPath = path.Join(filepath.Base(tmpDirName), filepath.Base(tmpFileName))
tmpFile.Close()
// Process the checksum
r, err := archive.Tar(tmpFileName, archive.Uncompressed)
if err != nil {
return err
}
tarSum := utils.TarSum{Reader: r, DisableCompression: true}
remoteHash = tarSum.Sum(nil)
// If the destination is a directory, figure out the filename.
if strings.HasSuffix(dest, "/") {
u, err := url.Parse(orig)
if err != nil {
return err
}
path := u.Path
if strings.HasSuffix(path, "/") {
path = path[:len(path)-1]
}
parts := strings.Split(path, "/")
filename := parts[len(parts)-1]
if filename == "" {
return fmt.Errorf("cannot determine filename from url: %s", u)
}
destPath = dest + filename
}
}
if err := b.checkPathForAddition(origPath); err != nil {
return err
}
// Hash path and check the cache
if b.utilizeCache {
var (
hash string
sums = b.context.GetSums()
)
if remoteHash != "" {
hash = remoteHash
} else if fi, err := os.Stat(path.Join(b.contextPath, origPath)); err != nil {
return err
} else if fi.IsDir() {
var subfiles []string
for file, sum := range sums {
absFile := path.Join(b.contextPath, file)
absOrigPath := path.Join(b.contextPath, origPath)
if strings.HasPrefix(absFile, absOrigPath) {
subfiles = append(subfiles, sum)
}
}
sort.Strings(subfiles)
hasher := sha256.New()
hasher.Write([]byte(strings.Join(subfiles, ",")))
hash = "dir:" + hex.EncodeToString(hasher.Sum(nil))
} else {
if origPath[0] == '/' && len(origPath) > 1 {
origPath = origPath[1:]
}
origPath = strings.TrimPrefix(origPath, "./")
if h, ok := sums[origPath]; ok {
hash = "file:" + h
}
}
b.config.Cmd = []string{"/bin/sh", "-c", fmt.Sprintf("#(nop) ADD %s in %s", hash, dest)}
hit, err := b.probeCache()
if err != nil {
return err
}
// If we do not have a hash, never use the cache
if hit && hash != "" {
return nil
}
}
// Create the container and start it
container, _, err := b.runtime.Create(b.config, "")
if err != nil {
@@ -350,19 +510,13 @@ func (b *buildFile) CmdAdd(args string) error {
}
b.tmpContainers[container.ID] = struct{}{}
if err := container.EnsureMounted(); err != nil {
if err := container.Mount(); err != nil {
return err
}
defer container.Unmount()
if utils.IsURL(orig) {
if err := b.addRemote(container, orig, dest); err != nil {
return err
}
} else {
if err := b.addContext(container, orig, dest); err != nil {
return err
}
if err := b.addContext(container, origPath, destPath); err != nil {
return err
}
if err := b.commit(container.ID, cmd, fmt.Sprintf("ADD %s in %s", orig, dest)); err != nil {
@@ -460,17 +614,12 @@ func (b *buildFile) commit(id string, autoCmd []string, comment string) error {
b.config.Cmd = []string{"/bin/sh", "-c", "#(nop) " + comment}
defer func(cmd []string) { b.config.Cmd = cmd }(cmd)
if b.utilizeCache {
if cache, err := b.srv.ImageGetCached(b.image, b.config); err != nil {
return err
} else if cache != nil {
fmt.Fprintf(b.outStream, " ---> Using cache\n")
utils.Debugf("[BUILDER] Use cached version")
b.image = cache.ID
return nil
} else {
utils.Debugf("[BUILDER] Cache miss")
}
hit, err := b.probeCache()
if err != nil {
return err
}
if hit {
return nil
}
container, warnings, err := b.runtime.Create(b.config, "")
@@ -483,7 +632,7 @@ func (b *buildFile) commit(id string, autoCmd []string, comment string) error {
b.tmpContainers[container.ID] = struct{}{}
fmt.Fprintf(b.outStream, " ---> Running in %s\n", utils.TruncateID(container.ID))
id = container.ID
if err := container.EnsureMounted(); err != nil {
if err := container.Mount(); err != nil {
return err
}
defer container.Unmount()
@@ -511,17 +660,24 @@ func (b *buildFile) commit(id string, autoCmd []string, comment string) error {
var lineContinuation = regexp.MustCompile(`\s*\\\s*\n`)
func (b *buildFile) Build(context io.Reader) (string, error) {
// FIXME: @creack "name" is a terrible variable name
name, err := ioutil.TempDir("", "docker-build")
tmpdirPath, err := ioutil.TempDir("", "docker-build")
if err != nil {
return "", err
}
if err := archive.Untar(context, name, nil); err != nil {
decompressedStream, err := archive.DecompressStream(context)
if err != nil {
return "", err
}
defer os.RemoveAll(name)
b.context = name
filename := path.Join(name, "Dockerfile")
b.context = &utils.TarSum{Reader: decompressedStream, DisableCompression: true}
if err := archive.Untar(b.context, tmpdirPath, nil); err != nil {
return "", err
}
defer os.RemoveAll(tmpdirPath)
b.contextPath = tmpdirPath
filename := path.Join(tmpdirPath, "Dockerfile")
if _, err := os.Stat(filename); os.IsNotExist(err) {
return "", fmt.Errorf("Can't build a directory with no Dockerfile")
}
@@ -529,6 +685,9 @@ func (b *buildFile) Build(context io.Reader) (string, error) {
if err != nil {
return "", err
}
if len(fileBytes) == 0 {
return "", ErrDockerfileEmpty
}
dockerfile := string(fileBytes)
dockerfile = lineContinuation.ReplaceAllString(dockerfile, "")
stepN := 0
@@ -538,28 +697,11 @@ func (b *buildFile) Build(context io.Reader) (string, error) {
if len(line) == 0 || line[0] == '#' {
continue
}
tmp := strings.SplitN(line, " ", 2)
if len(tmp) != 2 {
return "", fmt.Errorf("Invalid Dockerfile format")
if err := b.BuildStep(fmt.Sprintf("%d", stepN), line); err != nil {
return "", err
}
instruction := strings.ToLower(strings.Trim(tmp[0], " "))
arguments := strings.Trim(tmp[1], " ")
method, exists := reflect.TypeOf(b).MethodByName("Cmd" + strings.ToUpper(instruction[:1]) + strings.ToLower(instruction[1:]))
if !exists {
fmt.Fprintf(b.errStream, "# Skipping unknown instruction %s\n", strings.ToUpper(instruction))
continue
}
stepN += 1
fmt.Fprintf(b.outStream, "Step %d : %s %s\n", stepN, strings.ToUpper(instruction), arguments)
ret := method.Func.Call([]reflect.Value{reflect.ValueOf(b), reflect.ValueOf(arguments)})[0].Interface()
if ret != nil {
return "", ret.(error)
}
fmt.Fprintf(b.outStream, " ---> %s\n", utils.TruncateID(b.image))
}
if b.image != "" {
fmt.Fprintf(b.outStream, "Successfully built %s\n", utils.TruncateID(b.image))
@@ -568,10 +710,35 @@ func (b *buildFile) Build(context io.Reader) (string, error) {
}
return b.image, nil
}
return "", fmt.Errorf("An error occurred during the build\n")
return "", fmt.Errorf("No image was generated. This may be because the Dockerfile does not, like, do anything.\n")
}
func NewBuildFile(srv *Server, outStream, errStream io.Writer, verbose, utilizeCache, rm bool, outOld io.Writer, sf *utils.StreamFormatter, auth *auth.AuthConfig) BuildFile {
// BuildStep parses a single build step from `instruction` and executes it in the current context.
func (b *buildFile) BuildStep(name, expression string) error {
fmt.Fprintf(b.outStream, "Step %s : %s\n", name, expression)
tmp := strings.SplitN(expression, " ", 2)
if len(tmp) != 2 {
return fmt.Errorf("Invalid Dockerfile format")
}
instruction := strings.ToLower(strings.Trim(tmp[0], " "))
arguments := strings.Trim(tmp[1], " ")
method, exists := reflect.TypeOf(b).MethodByName("Cmd" + strings.ToUpper(instruction[:1]) + strings.ToLower(instruction[1:]))
if !exists {
fmt.Fprintf(b.errStream, "# Skipping unknown instruction %s\n", strings.ToUpper(instruction))
return nil
}
ret := method.Func.Call([]reflect.Value{reflect.ValueOf(b), reflect.ValueOf(arguments)})[0].Interface()
if ret != nil {
return ret.(error)
}
fmt.Fprintf(b.outStream, " ---> %s\n", utils.TruncateID(b.image))
return nil
}
func NewBuildFile(srv *Server, outStream, errStream io.Writer, verbose, utilizeCache, rm bool, outOld io.Writer, sf *utils.StreamFormatter, auth *auth.AuthConfig, authConfigFile *auth.ConfigFile) BuildFile {
return &buildFile{
runtime: srv.runtime,
srv: srv,
@@ -585,6 +752,7 @@ func NewBuildFile(srv *Server, outStream, errStream io.Writer, verbose, utilizeC
rm: rm,
sf: sf,
authConfig: auth,
configFile: authConfigFile,
outOld: outOld,
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -128,7 +128,9 @@ func TestParseRunVolumes(t *testing.T) {
t.Fatalf("Error parsing volume flags, without volume, no volume should be present. Received %v", config.Volumes)
}
mustParse(t, "-v /")
if _, _, err := parse(t, "-v /"); err == nil {
t.Fatalf("Expected error, but got none")
}
if _, _, err := parse(t, "-v /:/"); err == nil {
t.Fatalf("Error parsing volume flags, `-v /:/` should fail but didn't")

View File

@@ -1,8 +1,15 @@
package docker
import (
"github.com/dotcloud/docker/engine"
"net"
"github.com/dotcloud/docker/engine"
"github.com/dotcloud/docker/networkdriver"
)
const (
defaultNetworkMtu = 1500
DisableNetworkBridge = "none"
)
// FIXME: separate runtime configuration from http api configuration
@@ -10,36 +17,48 @@ type DaemonConfig struct {
Pidfile string
Root string
AutoRestart bool
EnableCors bool
Dns []string
EnableIptables bool
BridgeIface string
BridgeIp string
EnableIpForward bool
DefaultIp net.IP
BridgeIface string
BridgeIP string
InterContainerCommunication bool
GraphDriver string
Mtu int
DisableNetwork bool
}
// ConfigFromJob creates and returns a new DaemonConfig object
// by parsing the contents of a job's environment.
func ConfigFromJob(job *engine.Job) *DaemonConfig {
var config DaemonConfig
config.Pidfile = job.Getenv("Pidfile")
config.Root = job.Getenv("Root")
config.AutoRestart = job.GetenvBool("AutoRestart")
config.EnableCors = job.GetenvBool("EnableCors")
func DaemonConfigFromJob(job *engine.Job) *DaemonConfig {
config := &DaemonConfig{
Pidfile: job.Getenv("Pidfile"),
Root: job.Getenv("Root"),
AutoRestart: job.GetenvBool("AutoRestart"),
EnableIptables: job.GetenvBool("EnableIptables"),
EnableIpForward: job.GetenvBool("EnableIpForward"),
BridgeIP: job.Getenv("BridgeIP"),
DefaultIp: net.ParseIP(job.Getenv("DefaultIp")),
InterContainerCommunication: job.GetenvBool("InterContainerCommunication"),
GraphDriver: job.Getenv("GraphDriver"),
}
if dns := job.GetenvList("Dns"); dns != nil {
config.Dns = dns
}
config.EnableIptables = job.GetenvBool("EnableIptables")
if br := job.Getenv("BridgeIface"); br != "" {
config.BridgeIface = br
if mtu := job.GetenvInt("Mtu"); mtu != 0 {
config.Mtu = mtu
} else {
config.BridgeIface = DefaultNetworkBridge
config.Mtu = GetDefaultNetworkMtu()
}
config.BridgeIp = job.Getenv("BridgeIp")
config.DefaultIp = net.ParseIP(job.Getenv("DefaultIp"))
config.InterContainerCommunication = job.GetenvBool("InterContainerCommunication")
config.GraphDriver = job.Getenv("GraphDriver")
return &config
config.DisableNetwork = job.Getenv("BridgeIface") == DisableNetworkBridge
return config
}
func GetDefaultNetworkMtu() int {
if iface, err := networkdriver.GetDefaultRouteIface(); err == nil {
return iface.MTU
}
return defaultNetworkMtu
}

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
#
# This script provides supports completion of:
# - commands and their options
# - container ids
# - container ids and names
# - image repos and tags
# - filepaths
#
@@ -21,60 +21,88 @@
# If the docker daemon is using a unix socket for communication your user
# must have access to the socket for the completions to function correctly
__docker_q() {
docker 2>/dev/null "$@"
}
__docker_containers_all()
{
local containers
containers="$( docker ps -a -q )"
COMPREPLY=( $( compgen -W "$containers" -- "$cur" ) )
local containers="$( __docker_q ps -a -q )"
local names="$( __docker_q inspect --format '{{.Name}}' $containers | sed 's,^/,,' )"
COMPREPLY=( $( compgen -W "$names $containers" -- "$cur" ) )
}
__docker_containers_running()
{
local containers
containers="$( docker ps -q )"
COMPREPLY=( $( compgen -W "$containers" -- "$cur" ) )
local containers="$( __docker_q ps -q )"
local names="$( __docker_q inspect --format '{{.Name}}' $containers | sed 's,^/,,' )"
COMPREPLY=( $( compgen -W "$names $containers" -- "$cur" ) )
}
__docker_containers_stopped()
{
local containers
containers="$( comm -13 <(docker ps -q | sort -u) <(docker ps -a -q | sort -u) )"
COMPREPLY=( $( compgen -W "$containers" -- "$cur" ) )
local containers="$( { __docker_q ps -a -q; __docker_q ps -q; } | sort | uniq -u )"
local names="$( __docker_q inspect --format '{{.Name}}' $containers | sed 's,^/,,' )"
COMPREPLY=( $( compgen -W "$names $containers" -- "$cur" ) )
}
__docker_image_repos()
{
local repos
repos="$( docker images | awk 'NR>1{print $1}' )"
local repos="$( __docker_q images | awk 'NR>1{print $1}' | grep -v '^<none>$' )"
COMPREPLY=( $( compgen -W "$repos" -- "$cur" ) )
}
__docker_images()
{
local images
images="$( docker images | awk 'NR>1{print $1":"$2}' )"
COMPREPLY=( $( compgen -W "$images" -- "$cur" ) )
__ltrim_colon_completions "$cur"
}
__docker_image_repos_and_tags()
{
local repos images
repos="$( docker images | awk 'NR>1{print $1}' )"
images="$( docker images | awk 'NR>1{print $1":"$2}' )"
local repos="$( __docker_q images | awk 'NR>1{print $1}' | grep -v '^<none>$' )"
local images="$( __docker_q images | awk 'NR>1{print $1":"$2}' | grep -v '^<none>:' )"
COMPREPLY=( $( compgen -W "$repos $images" -- "$cur" ) )
__ltrim_colon_completions "$cur"
}
__docker_image_repos_and_tags_and_ids()
{
local repos="$( __docker_q images | awk 'NR>1{print $1}' | grep -v '^<none>$' )"
local images="$( __docker_q images | awk 'NR>1{print $1":"$2}' | grep -v '^<none>:' )"
local ids="$( __docker_q images -a -q )"
COMPREPLY=( $( compgen -W "$repos $images $ids" -- "$cur" ) )
__ltrim_colon_completions "$cur"
}
__docker_containers_and_images()
{
local containers images
containers="$( docker ps -a -q )"
images="$( docker images | awk 'NR>1{print $1":"$2}' )"
COMPREPLY=( $( compgen -W "$images $containers" -- "$cur" ) )
local containers="$( __docker_q ps -a -q )"
local names="$( __docker_q inspect --format '{{.Name}}' $containers | sed 's,^/,,' )"
local repos="$( __docker_q images | awk 'NR>1{print $1}' | grep -v '^<none>$' )"
local images="$( __docker_q images | awk 'NR>1{print $1":"$2}' | grep -v '^<none>:' )"
local ids="$( __docker_q images -a -q )"
COMPREPLY=( $( compgen -W "$containers $names $repos $images $ids" -- "$cur" ) )
__ltrim_colon_completions "$cur"
}
__docker_pos_first_nonflag()
{
local argument_flags=$1
local counter=$cpos
while [ $counter -le $cword ]; do
if [ -n "$argument_flags" ] && eval "case '${words[$counter]}' in $argument_flags) true ;; *) false ;; esac"; then
(( counter++ ))
else
case "${words[$counter]}" in
-*)
;;
*)
break
;;
esac
fi
(( counter++ ))
done
echo $counter
}
_docker_docker()
{
case "$prev" in
@@ -97,15 +125,24 @@ _docker_docker()
_docker_attach()
{
if [ $cpos -eq $cword ]; then
__docker_containers_running
fi
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--no-stdin --sig-proxy" -- "$cur" ) )
;;
*)
local counter="$(__docker_pos_first_nonflag)"
if [ $cword -eq $counter ]; then
__docker_containers_running
fi
;;
esac
}
_docker_build()
{
case "$prev" in
-t)
-t|--tag)
__docker_image_repos_and_tags
return
;;
*)
@@ -114,10 +151,13 @@ _docker_build()
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-no-cache -t -q -rm" -- "$cur" ) )
COMPREPLY=( $( compgen -W "-t --tag -q --quiet --no-cache --rm" -- "$cur" ) )
;;
*)
_filedir
local counter="$(__docker_pos_first_nonflag '-t|--tag')"
if [ $cword -eq $counter ]; then
_filedir
fi
;;
esac
}
@@ -125,7 +165,7 @@ _docker_build()
_docker_commit()
{
case "$prev" in
-author|-m|-run)
-m|--message|-a|--author|--run)
return
;;
*)
@@ -134,26 +174,20 @@ _docker_commit()
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-author -m -run" -- "$cur" ) )
COMPREPLY=( $( compgen -W "-m --message -a --author --run" -- "$cur" ) )
;;
*)
local counter=$cpos
while [ $counter -le $cword ]; do
case "${words[$counter]}" in
-author|-m|-run)
(( counter++ ))
;;
-*)
;;
*)
break
;;
esac
(( counter++ ))
done
local counter=$(__docker_pos_first_nonflag '-m|--message|-a|--author|--run')
if [ $counter -eq $cword ]; then
if [ $cword -eq $counter ]; then
__docker_containers_all
return
fi
(( counter++ ))
if [ $cword -eq $counter ]; then
__docker_image_repos_and_tags
return
fi
;;
esac
@@ -161,16 +195,32 @@ _docker_commit()
_docker_cp()
{
if [ $cpos -eq $cword ]; then
__docker_containers_all
else
local counter=$(__docker_pos_first_nonflag)
if [ $cword -eq $counter ]; then
case "$cur" in
*:)
return
;;
*)
__docker_containers_all
COMPREPLY=( $( compgen -W "${COMPREPLY[*]}" -S ':' ) )
compopt -o nospace
return
;;
esac
fi
(( counter++ ))
if [ $cword -eq $counter ]; then
_filedir
return
fi
}
_docker_diff()
{
if [ $cpos -eq $cword ]; then
local counter=$(__docker_pos_first_nonflag)
if [ $cword -eq $counter ]; then
__docker_containers_all
fi
}
@@ -178,7 +228,7 @@ _docker_diff()
_docker_events()
{
case "$prev" in
-since)
--since)
return
;;
*)
@@ -187,7 +237,7 @@ _docker_events()
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-since" -- "$cur" ) )
COMPREPLY=( $( compgen -W "--since" -- "$cur" ) )
;;
*)
;;
@@ -196,45 +246,44 @@ _docker_events()
_docker_export()
{
if [ $cpos -eq $cword ]; then
local counter=$(__docker_pos_first_nonflag)
if [ $cword -eq $counter ]; then
__docker_containers_all
fi
}
_docker_help()
{
if [ $cpos -eq $cword ]; then
local counter=$(__docker_pos_first_nonflag)
if [ $cword -eq $counter ]; then
COMPREPLY=( $( compgen -W "$commands" -- "$cur" ) )
fi
}
_docker_history()
{
if [ $cpos -eq $cword ]; then
__docker_image_repos_and_tags
fi
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-q --quiet --no-trunc" -- "$cur" ) )
;;
*)
local counter=$(__docker_pos_first_nonflag)
if [ $cword -eq $counter ]; then
__docker_image_repos_and_tags_and_ids
fi
;;
esac
}
_docker_images()
{
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-a -notrunc -q -viz" -- "$cur" ) )
COMPREPLY=( $( compgen -W "-q --quiet -a --all --no-trunc -v --viz -t --tree" -- "$cur" ) )
;;
*)
local counter=$cpos
while [ $counter -le $cword ]; do
case "${words[$counter]}" in
-*)
;;
*)
break
;;
esac
(( counter++ ))
done
if [ $counter -eq $cword ]; then
local counter=$(__docker_pos_first_nonflag)
if [ $cword -eq $counter ]; then
__docker_image_repos
fi
;;
@@ -243,7 +292,16 @@ _docker_images()
_docker_import()
{
return
local counter=$(__docker_pos_first_nonflag)
if [ $cword -eq $counter ]; then
return
fi
(( counter++ ))
if [ $cword -eq $counter ]; then
__docker_image_repos_and_tags
return
fi
}
_docker_info()
@@ -253,25 +311,16 @@ _docker_info()
_docker_insert()
{
if [ $cpos -eq $cword ]; then
__docker_image_repos_and_tags
local counter=$(__docker_pos_first_nonflag)
if [ $cword -eq $counter ]; then
__docker_image_repos_and_tags_and_ids
fi
}
_docker_inspect()
{
__docker_containers_and_images
}
_docker_kill()
{
__docker_containers_running
}
_docker_login()
{
case "$prev" in
-e|-p|-u)
-f|--format)
return
;;
*)
@@ -280,7 +329,37 @@ _docker_login()
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-e -p -u" -- "$cur" ) )
COMPREPLY=( $( compgen -W "-f --format" -- "$cur" ) )
;;
*)
__docker_containers_and_images
;;
esac
}
_docker_kill()
{
__docker_containers_running
}
_docker_load()
{
return
}
_docker_login()
{
case "$prev" in
-u|--username|-p|--password|-e|--email)
return
;;
*)
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-u --username -p --password -e --email" -- "$cur" ) )
;;
*)
;;
@@ -289,14 +368,23 @@ _docker_login()
_docker_logs()
{
if [ $cpos -eq $cword ]; then
__docker_containers_all
fi
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-f --follow" -- "$cur" ) )
;;
*)
local counter=$(__docker_pos_first_nonflag)
if [ $cword -eq $counter ]; then
__docker_containers_all
fi
;;
esac
}
_docker_port()
{
if [ $cpos -eq $cword ]; then
local counter=$(__docker_pos_first_nonflag)
if [ $cword -eq $counter ]; then
__docker_containers_all
fi
}
@@ -304,7 +392,13 @@ _docker_port()
_docker_ps()
{
case "$prev" in
-beforeId|-n|-sinceId)
--since-id|--before-id)
COMPREPLY=( $( compgen -W "$( __docker_q ps -a -q )" -- "$cur" ) )
# TODO replace this with __docker_containers_all
# see https://github.com/dotcloud/docker/issues/3565
return
;;
-n)
return
;;
*)
@@ -313,7 +407,7 @@ _docker_ps()
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-a -beforeId -l -n -notrunc -q -s -sinceId" -- "$cur" ) )
COMPREPLY=( $( compgen -W "-q --quiet -s --size -a --all --no-trunc -l --latest --since-id --before-id -n" -- "$cur" ) )
;;
*)
;;
@@ -323,7 +417,7 @@ _docker_ps()
_docker_pull()
{
case "$prev" in
-t)
-t|--tag)
return
;;
*)
@@ -332,22 +426,31 @@ _docker_pull()
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-t" -- "$cur" ) )
COMPREPLY=( $( compgen -W "-t --tag" -- "$cur" ) )
;;
*)
local counter=$(__docker_pos_first_nonflag '-t|--tag')
if [ $cword -eq $counter ]; then
__docker_image_repos_and_tags
fi
;;
esac
}
_docker_push()
{
__docker_image_repos
local counter=$(__docker_pos_first_nonflag)
if [ $cword -eq $counter ]; then
__docker_image_repos
# TODO replace this with __docker_image_repos_and_tags
# see https://github.com/dotcloud/docker/issues/3411
fi
}
_docker_restart()
{
case "$prev" in
-t)
-t|--time)
return
;;
*)
@@ -356,7 +459,7 @@ _docker_restart()
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-t" -- "$cur" ) )
COMPREPLY=( $( compgen -W "-t --time" -- "$cur" ) )
;;
*)
__docker_containers_all
@@ -368,7 +471,7 @@ _docker_rm()
{
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-v" -- "$cur" ) )
COMPREPLY=( $( compgen -W "-v --volumes -l --link" -- "$cur" ) )
;;
*)
__docker_containers_stopped
@@ -378,19 +481,27 @@ _docker_rm()
_docker_rmi()
{
__docker_image_repos_and_tags
__docker_image_repos_and_tags_and_ids
}
_docker_run()
{
case "$prev" in
-cidfile)
--cidfile)
_filedir
;;
-volumes-from)
--volumes-from)
__docker_containers_all
;;
-a|-c|-dns|-e|-entrypoint|-h|-lxc-conf|-m|-p|-u|-v|-w)
-v|--volume)
# TODO something magical with colons and _filedir ?
return
;;
-e|--env)
COMPREPLY=( $( compgen -e -- "$cur" ) )
return
;;
--entrypoint|-h|--hostname|-m|--memory|-u|--user|-w|--workdir|-c|--cpu-shares|-n|--name|-a|--attach|--link|-p|--publish|--expose|--dns|--lxc-conf)
return
;;
*)
@@ -399,45 +510,30 @@ _docker_run()
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-a -c -cidfile -d -dns -e -entrypoint -h -i -lxc-conf -m -n -p -privileged -t -u -v -volumes-from -w" -- "$cur" ) )
COMPREPLY=( $( compgen -W "--rm -d --detach -n --networking --privileged -P --publish-all -i --interactive -t --tty --cidfile --entrypoint -h --hostname -m --memory -u --user -w --workdir -c --cpu-shares --sig-proxy --name -a --attach -v --volume --link -e --env -p --publish --expose --dns --volumes-from --lxc-conf" -- "$cur" ) )
;;
*)
local counter=$cpos
while [ $counter -le $cword ]; do
case "${words[$counter]}" in
-a|-c|-cidfile|-dns|-e|-entrypoint|-h|-lxc-conf|-m|-p|-u|-v|-volumes-from|-w)
(( counter++ ))
;;
-*)
;;
*)
break
;;
esac
(( counter++ ))
done
local counter=$(__docker_pos_first_nonflag '--cidfile|--volumes-from|-v|--volume|-e|--env|--entrypoint|-h|--hostname|-m|--memory|-u|--user|-w|--workdir|-c|--cpu-shares|-n|--name|-a|--attach|--link|-p|--publish|--expose|--dns|--lxc-conf')
if [ $counter -eq $cword ]; then
__docker_image_repos_and_tags
if [ $cword -eq $counter ]; then
__docker_image_repos_and_tags_and_ids
fi
;;
esac
}
_docker_save()
{
local counter=$(__docker_pos_first_nonflag)
if [ $cword -eq $counter ]; then
__docker_image_repos_and_tags_and_ids
fi
}
_docker_search()
{
COMPREPLY=( $( compgen -W "-notrunc" "-stars" "-trusted" -- "$cur" ) )
}
_docker_start()
{
__docker_containers_stopped
}
_docker_stop()
{
case "$prev" in
-t)
-s|--stars)
return
;;
*)
@@ -446,7 +542,38 @@ _docker_stop()
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-t" -- "$cur" ) )
COMPREPLY=( $( compgen -W "--no-trunc -t --trusted -s --stars" -- "$cur" ) )
;;
*)
;;
esac
}
_docker_start()
{
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-a --attach -i --interactive" -- "$cur" ) )
;;
*)
__docker_containers_stopped
;;
esac
}
_docker_stop()
{
case "$prev" in
-t|--time)
return
;;
*)
;;
esac
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-t --time" -- "$cur" ) )
;;
*)
__docker_containers_running
@@ -456,12 +583,31 @@ _docker_stop()
_docker_tag()
{
COMPREPLY=( $( compgen -W "-f" -- "$cur" ) )
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "-f --force" -- "$cur" ) )
;;
*)
local counter=$(__docker_pos_first_nonflag)
if [ $cword -eq $counter ]; then
__docker_image_repos_and_tags
return
fi
(( counter++ ))
if [ $cword -eq $counter ]; then
__docker_image_repos_and_tags
return
fi
;;
esac
}
_docker_top()
{
if [ $cpos -eq $cword ]; then
local counter=$(__docker_pos_first_nonflag)
if [ $cword -eq $counter ]; then
__docker_containers_running
fi
}
@@ -478,7 +624,6 @@ _docker_wait()
_docker()
{
local cur prev words cword command="docker" counter=1 word cpos
local commands="
attach
build
@@ -494,6 +639,7 @@ _docker()
insert
inspect
kill
load
login
logs
port
@@ -504,6 +650,7 @@ _docker()
rm
rmi
run
save
search
start
stop
@@ -514,18 +661,20 @@ _docker()
"
COMPREPLY=()
local cur prev words cword
_get_comp_words_by_ref -n : cur prev words cword
local command='docker'
local counter=1
while [ $counter -lt $cword ]; do
word="${words[$counter]}"
case "$word" in
case "${words[$counter]}" in
-H)
(( counter++ ))
;;
-*)
;;
*)
command="$word"
command="${words[$counter]}"
cpos=$counter
(( cpos++ ))
break

View File

@@ -174,7 +174,7 @@ __docker_subcommand () {
(ps)
_arguments '-a[Show all containers. Only running containers are shown by default]' \
'-h[Show help]' \
'-beforeId=-[Show only container created before Id, include non-running one]:containers:__docker_containers' \
'-before-id=-[Show only container created before Id, include non-running one]:containers:__docker_containers' \
'-n=-[Show n last created containers, include non-running one]:n:(1 5 10 25 50)'
;;
(tag)
@@ -189,9 +189,9 @@ __docker_subcommand () {
'-a=-[Attach to stdin, stdout or stderr]:toggle:(true false)' \
'-c=-[CPU shares (relative weight)]:CPU shares: ' \
'-d[Detached mode: leave the container running in the background]' \
'*-dns=[Set custom dns servers]:dns server: ' \
'*--dns=[Set custom dns servers]:dns server: ' \
'*-e=[Set environment variables]:environment variable: ' \
'-entrypoint=-[Overwrite the default entrypoint of the image]:entry point: ' \
'--entrypoint=-[Overwrite the default entrypoint of the image]:entry point: ' \
'-h=-[Container host name]:hostname:_hosts' \
'-i[Keep stdin open even if not attached]' \
'-m=-[Memory limit (in bytes)]:limit: ' \
@@ -199,7 +199,7 @@ __docker_subcommand () {
'-t=-[Allocate a pseudo-tty]:toggle:(true false)' \
'-u=-[Username or UID]:user:_users' \
'*-v=-[Bind mount a volume (e.g. from the host: -v /host:/container, from docker: -v /container)]:volume: '\
'-volumes-from=-[Mount volumes from the specified container]:volume: ' \
'--volumes-from=-[Mount volumes from the specified container]:volume: ' \
'(-):images:__docker_images' \
'(-):command: _command_names -e' \
'*::arguments: _normal'

View File

@@ -56,7 +56,7 @@ func main() {
// Check that the requested process manager is supported
if _, exists := templates[*kind]; !exists {
panic("Unkown script template")
panic("Unknown script template")
}
// Load the requested template

View File

@@ -1,11 +1,11 @@
[Unit]
Description=Docker Application Container Engine
Description=Docker Application Container Engine
Documentation=http://docs.docker.io
After=network.target
[Service]
ExecStartPre=/bin/mount --make-rprivate /
ExecStart=/usr/bin/docker -d
Restart=on-failure
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,11 @@
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.io
After=network.target
[Service]
ExecStart=/usr/bin/docker -d -H fd://
Restart=on-failure
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,8 @@
[Unit]
Description=Docker Socket for the API
[Socket]
ListenStream=/var/run/docker.sock
[Install]
WantedBy=sockets.target

View File

@@ -0,0 +1,92 @@
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives
#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
#GPGDir = /etc/pacman.d/gnupg/
HoldPkg = pacman glibc
#XferCommand = /usr/bin/curl -C - -f %u > %o
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#CleanMethod = KeepInstalled
#UseDelta = 0.7
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
#NoExtract =
# Misc options
#UseSyslog
#Color
#TotalDownload
# We cannot check disk space from within a chroot environment
#CheckSpace
#VerbosePkgLists
# By default, pacman accepts packages signed by keys that its local keyring
# trusts (see pacman-key and its man page), as well as unsigned packages.
SigLevel = Required DatabaseOptional
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required
# NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Arch Linux
# packagers with `pacman-key --populate archlinux`.
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
#[testing]
#Include = /etc/pacman.d/mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
#[community-testing]
#Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs

View File

@@ -1,30 +1,29 @@
#!/bin/bash
#!/usr/bin/env bash
# Generate a minimal filesystem for archlinux and load it into the local
# docker as "archlinux"
# requires root
set -e
PACSTRAP=$(which pacstrap)
[ "$PACSTRAP" ] || {
hash pacstrap &>/dev/null || {
echo "Could not find pacstrap. Run pacman -S arch-install-scripts"
exit 1
}
EXPECT=$(which expect)
[ "$EXPECT" ] || {
hash expect &>/dev/null || {
echo "Could not find expect. Run pacman -S expect"
exit 1
}
ROOTFS=~/rootfs-arch-$$-$RANDOM
mkdir $ROOTFS
ROOTFS=$(mktemp -d /tmp/rootfs-archlinux-XXXXXXXXXX)
chmod 755 $ROOTFS
#packages to ignore for space savings
# packages to ignore for space savings
PKGIGNORE=linux,jfsutils,lvm2,cryptsetup,groff,man-db,man-pages,mdadm,pciutils,pcmciautils,reiserfsprogs,s-nail,xfsprogs
expect <<EOF
set timeout 60
set send_slow {1 1}
spawn pacstrap -c -d -G -i $ROOTFS base haveged --ignore $PKGIGNORE
spawn pacstrap -C ./mkimage-arch-pacman.conf -c -d -G -i $ROOTFS base haveged --ignore $PKGIGNORE
expect {
"Install anyway?" { send n\r; exp_continue }
"(default=all)" { send \r; exp_continue }
@@ -38,29 +37,26 @@ EOF
arch-chroot $ROOTFS /bin/sh -c "haveged -w 1024; pacman-key --init; pkill haveged; pacman -Rs --noconfirm haveged; pacman-key --populate archlinux"
arch-chroot $ROOTFS /bin/sh -c "ln -s /usr/share/zoneinfo/UTC /etc/localtime"
cat > $ROOTFS/etc/locale.gen <<DELIM
en_US.UTF-8 UTF-8
en_US ISO-8859-1
DELIM
echo 'en_US.UTF-8 UTF-8' > $ROOTFS/etc/locale.gen
arch-chroot $ROOTFS locale-gen
arch-chroot $ROOTFS /bin/sh -c 'echo "Server = http://mirrors.kernel.org/archlinux/\$repo/os/\$arch" > /etc/pacman.d/mirrorlist'
# udev doesn't work in containers, rebuild /dev
DEV=${ROOTFS}/dev
mv ${DEV} ${DEV}.old
mkdir -p ${DEV}
mknod -m 666 ${DEV}/null c 1 3
mknod -m 666 ${DEV}/zero c 1 5
mknod -m 666 ${DEV}/random c 1 8
mknod -m 666 ${DEV}/urandom c 1 9
mkdir -m 755 ${DEV}/pts
mkdir -m 1777 ${DEV}/shm
mknod -m 666 ${DEV}/tty c 5 0
mknod -m 600 ${DEV}/console c 5 1
mknod -m 666 ${DEV}/tty0 c 4 0
mknod -m 666 ${DEV}/full c 1 7
mknod -m 600 ${DEV}/initctl p
mknod -m 666 ${DEV}/ptmx c 5 2
DEV=$ROOTFS/dev
rm -rf $DEV
mkdir -p $DEV
mknod -m 666 $DEV/null c 1 3
mknod -m 666 $DEV/zero c 1 5
mknod -m 666 $DEV/random c 1 8
mknod -m 666 $DEV/urandom c 1 9
mkdir -m 755 $DEV/pts
mkdir -m 1777 $DEV/shm
mknod -m 666 $DEV/tty c 5 0
mknod -m 600 $DEV/console c 5 1
mknod -m 666 $DEV/tty0 c 4 0
mknod -m 666 $DEV/full c 1 7
mknod -m 600 $DEV/initctl p
mknod -m 666 $DEV/ptmx c 5 2
tar --numeric-owner -C $ROOTFS -c . | docker import - archlinux
docker run -i -t archlinux echo Success.

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# Generate a very minimal filesystem based on busybox-static,
# and load it into the local docker under the name "busybox".

75
contrib/mkimage-crux.sh Executable file
View File

@@ -0,0 +1,75 @@
#!/usr/bin/env bash
# Generate a minimal filesystem for CRUX/Linux and load it into the local
# docker as "cruxlinux"
# requires root and the crux iso (http://crux.nu)
set -e
die () {
echo >&2 "$@"
exit 1
}
[ "$#" -eq 1 ] || die "1 argument(s) required, $# provided. Usage: ./mkimage-crux.sh /path/to/iso"
ISO=${1}
ROOTFS=$(mktemp -d /tmp/rootfs-crux-XXXXXXXXXX)
CRUX=$(mktemp -d /tmp/crux-XXXXXXXXXX)
TMP=$(mktemp -d /tmp/XXXXXXXXXX)
VERSION=$(basename --suffix=.iso $ISO | sed 's/[^0-9.]*\([0-9.]*\).*/\1/')
# Mount the ISO
mount -o ro,loop $ISO $CRUX
# Extract pkgutils
tar -C $TMP -xf $CRUX/tools/pkgutils#*.pkg.tar.gz
# Put pkgadd in the $PATH
export PATH="$TMP/usr/bin:$PATH"
# Install core packages
mkdir -p $ROOTFS/var/lib/pkg
touch $ROOTFS/var/lib/pkg/db
for pkg in $CRUX/crux/core/*; do
pkgadd -r $ROOTFS $pkg
done
# Remove agetty and inittab config
if (grep agetty ${ROOTFS}/etc/inittab 2>&1 > /dev/null); then
echo "Removing agetty from /etc/inittab ..."
chroot ${ROOTFS} sed -i -e "/agetty/d" /etc/inittab
chroot ${ROOTFS} sed -i -e "/shutdown/d" /etc/inittab
chroot ${ROOTFS} sed -i -e "/^$/N;/^\n$/d" /etc/inittab
fi
# Remove kernel source
rm -rf $ROOTFS/usr/src/*
# udev doesn't work in containers, rebuild /dev
DEV=$ROOTFS/dev
rm -rf $DEV
mkdir -p $DEV
mknod -m 666 $DEV/null c 1 3
mknod -m 666 $DEV/zero c 1 5
mknod -m 666 $DEV/random c 1 8
mknod -m 666 $DEV/urandom c 1 9
mkdir -m 755 $DEV/pts
mkdir -m 1777 $DEV/shm
mknod -m 666 $DEV/tty c 5 0
mknod -m 600 $DEV/console c 5 1
mknod -m 666 $DEV/tty0 c 4 0
mknod -m 666 $DEV/full c 1 7
mknod -m 600 $DEV/initctl p
mknod -m 666 $DEV/ptmx c 5 2
IMAGE_ID=$(tar --numeric-owner -C $ROOTFS -c . | docker import - crux:$VERSION)
docker tag $IMAGE_ID crux:latest
docker run -i -t crux echo Success.
# Cleanup
umount $CRUX
rm -rf $ROOTFS
rm -rf $CRUX
rm -rf $TMP

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
set -e
variant='minbase'
@@ -117,6 +117,11 @@ target="/tmp/docker-rootfs-debootstrap-$suite-$$-$RANDOM"
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
returnTo="$(pwd -P)"
if [ "$suite" = 'lucid' ]; then
# lucid fails and doesn't include gpgv in minbase; "apt-get update" fails
include+=',gpgv'
fi
set -x
# bootstrap
@@ -138,18 +143,26 @@ if [ -z "$strictDebootstrap" ]; then
# shrink the image, since apt makes us fat (wheezy: ~157.5MB vs ~120MB)
sudo chroot . apt-get clean
# while we're at it, apt is unnecessarily slow inside containers
# this forces dpkg not to call sync() after package extraction and speeds up install
# the benefit is huge on spinning disks, and the penalty is nonexistent on SSD or decent server virtualization
echo 'force-unsafe-io' | sudo tee etc/dpkg/dpkg.cfg.d/02apt-speedup > /dev/null
# we want to effectively run "apt-get clean" after every install to keep images small (see output of "apt-get clean -s" for context)
if strings usr/bin/dpkg | grep -q unsafe-io; then
# while we're at it, apt is unnecessarily slow inside containers
# this forces dpkg not to call sync() after package extraction and speeds up install
# the benefit is huge on spinning disks, and the penalty is nonexistent on SSD or decent server virtualization
echo 'force-unsafe-io' | sudo tee etc/dpkg/dpkg.cfg.d/02apt-speedup > /dev/null
# we have this wrapped up in an "if" because the "force-unsafe-io"
# option was added in dpkg 1.15.8.6
# (see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=584254#82),
# and ubuntu lucid/10.04 only has 1.15.5.6
fi
# we want to effectively run "apt-get clean" after every install to keep images small (see output of "apt-get clean -s" for context)
{
aptGetClean='rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true'
echo 'DPkg::Post-Invoke { "'$aptGetClean'"; };'
echo 'APT::Update::Post-Invoke { "'$aptGetClean'"; };'
aptGetClean='"rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true";'
echo "DPkg::Post-Invoke { ${aptGetClean} };"
echo "APT::Update::Post-Invoke { ${aptGetClean} };"
echo 'Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";'
} | sudo tee etc/apt/apt.conf.d/no-cache > /dev/null
# and remove the translations, too
# and remove the translations, too
echo 'Acquire::Languages "none";' | sudo tee etc/apt/apt.conf.d/no-languages > /dev/null
# helpful undo lines for each the above tweaks (for lack of a better home to keep track of them):
@@ -190,6 +203,9 @@ if [ -z "$strictDebootstrap" ]; then
;;
esac
fi
# make sure our packages lists are as up to date as we can get them
sudo chroot . apt-get update
fi
if [ "$justTar" ]; then

View File

@@ -1,4 +1,11 @@
#!/bin/bash
#!/usr/bin/env bash
#
# Create a base CentOS Docker image.
# This script is useful on systems with rinse available (e.g.,
# building a CentOS image on Debian). See contrib/mkimage-yum.sh for
# a way to build CentOS images on systems with yum installed.
set -e
repo="$1"

View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# Generate a very minimal filesystem based on busybox-static,
# and load it into the local docker under the name "docker-ut".

90
contrib/mkimage-yum.sh Executable file
View File

@@ -0,0 +1,90 @@
#!/usr/bin/env bash
#
# Create a base CentOS Docker image.
#
# This script is useful on systems with yum installed (e.g., building
# a CentOS image on CentOS). See contrib/mkimage-rinse.sh for a way
# to build CentOS images on other systems.
usage() {
cat <<EOOPTS
$(basename $0) [OPTIONS] <name>
OPTIONS:
-y <yumconf> The path to the yum config to install packages from. The
default is /etc/yum.conf.
EOOPTS
exit 1
}
# option defaults
yum_config=/etc/yum.conf
while getopts ":y:h" opt; do
case $opt in
y)
yum_config=$OPTARG
;;
h)
usage
;;
\?)
echo "Invalid option: -$OPTARG"
usage
;;
esac
done
shift $((OPTIND - 1))
name=$1
if [[ -z $name ]]; then
usage
fi
#--------------------
target=$(mktemp -d --tmpdir $(basename $0).XXXXXX)
set -x
for dev in console null zero urandom; do
/sbin/MAKEDEV -d "$target"/dev -x $dev
done
yum -c "$yum_config" --installroot="$target" --setopt=tsflags=nodocs \
--setopt=group_package_types=mandatory -y groupinstall Core
yum -c "$yum_config" --installroot="$mount" -y clean all
cat > "$target"/etc/sysconfig/network <<EOF
NETWORKING=yes
HOSTNAME=localhost.localdomain
EOF
# effectively: febootstrap-minimize --keep-zoneinfo --keep-rpmdb
# --keep-services "$target". Stolen from mkimage-rinse.sh
# locales
rm -rf "$target"/usr/{{lib,share}/locale,{lib,lib64}/gconv,bin/localedef,sbin/build-locale-archive}
# docs
rm -rf "$target"/usr/share/{man,doc,info,gnome/help}
# cracklib
rm -rf "$target"/usr/share/cracklib
# i18n
rm -rf "$target"/usr/share/i18n
# sln
rm -rf "$target"/sbin/sln
# ldconfig
rm -rf "$target"/etc/ld.so.cache
rm -rf "$target"/var/cache/ldconfig/*
version=
if [ -r "$target"/etc/redhat-release ]; then
version="$(sed 's/^[^0-9\]*\([0-9.]\+\).*$/\1/' /etc/redhat-release)"
fi
if [ -z "$version" ]; then
echo >&2 "warning: cannot autodetect OS version, using '$name' as tag"
version=$name
fi
tar --numeric-owner -c -C "$target" . | docker import - $name:$version
docker run -i -t $name:$version echo success
rm -rf "$target"

View File

@@ -41,7 +41,7 @@ use warnings;
if( -t ) {
print STDERR "Helper script to make seccomp filters for Docker/LXC.\n";
print STDERR "Usage: mkseccomp.pl [files...]\n";
print STDERR "Usage: mkseccomp.pl < [files...]\n";
exit 1;
}

View File

@@ -195,6 +195,7 @@ shutdown
socket // (*)
socketcall
socketpair
sethostname // (*)
// Signal related
pause
@@ -261,7 +262,7 @@ vmsplice
// Process control
capget
//capset
capset // (*)
clone // (*)
execve // (*)
exit // (*)
@@ -401,7 +402,6 @@ tkill
//quotactl
//reboot
//setdomainname
//sethostname
//setns
//settimeofday
//sgetmask // Obsolete

View File

@@ -0,0 +1,7 @@
#!/bin/sh
# Auto sign all commits to allow them to be used by the Docker project.
# see https://github.com/dotcloud/docker/blob/master/CONTRIBUTING.md#sign-your-work
#
GH_USER=$(git config --get github.user)
SOB=$(git var GIT_AUTHOR_IDENT | sed -n "s/^\(.*>\).*$/Docker-DCO-1.1-Signed-off-by: \1 \(github: $GH_USER\)/p")
grep -qs "^$SOB" "$1" || echo "\n$SOB" >> "$1"

View File

@@ -4,6 +4,10 @@
<dict>
<key>name</key>
<string>Dockerfile</string>
<key>fileTypes</key>
<array>
<string>Dockerfile</string>
</array>
<key>patterns</key>
<array>
<dict>

View File

@@ -1,15 +1,17 @@
package main
import (
"flag"
"fmt"
"github.com/dotcloud/docker"
"github.com/dotcloud/docker/engine"
"github.com/dotcloud/docker/sysinit"
"github.com/dotcloud/docker/utils"
"log"
"os"
"strings"
"github.com/dotcloud/docker"
"github.com/dotcloud/docker/api"
"github.com/dotcloud/docker/engine"
flag "github.com/dotcloud/docker/pkg/mflag"
"github.com/dotcloud/docker/sysinit"
"github.com/dotcloud/docker/utils"
)
var (
@@ -25,24 +27,26 @@ func main() {
}
var (
flVersion = flag.Bool("v", false, "Print version information and quit")
flDaemon = flag.Bool("d", false, "Enable daemon mode")
flDebug = flag.Bool("D", false, "Enable debug mode")
flAutoRestart = flag.Bool("r", true, "Restart previously running containers")
bridgeName = flag.String("b", "", "Attach containers to a pre-existing network bridge; use 'none' to disable container networking")
bridgeIp = flag.String("bip", "", "Use this CIDR notation address for the network bridge's IP, not compatible with -b")
pidfile = flag.String("p", "/var/run/docker.pid", "Path to use for daemon PID file")
flRoot = flag.String("g", "/var/lib/docker", "Path to use as the root of the docker runtime")
flEnableCors = flag.Bool("api-enable-cors", false, "Enable CORS headers in the remote API")
flVersion = flag.Bool([]string{"v", "-version"}, false, "Print version information and quit")
flDaemon = flag.Bool([]string{"d", "-daemon"}, false, "Enable daemon mode")
flDebug = flag.Bool([]string{"D", "-debug"}, false, "Enable debug mode")
flAutoRestart = flag.Bool([]string{"r", "-restart"}, true, "Restart previously running containers")
bridgeName = flag.String([]string{"b", "-bridge"}, "", "Attach containers to a pre-existing network bridge; use 'none' to disable container networking")
bridgeIp = flag.String([]string{"#bip", "-bip"}, "", "Use this CIDR notation address for the network bridge's IP, not compatible with -b")
pidfile = flag.String([]string{"p", "-pidfile"}, "/var/run/docker.pid", "Path to use for daemon PID file")
flRoot = flag.String([]string{"g", "-graph"}, "/var/lib/docker", "Path to use as the root of the docker runtime")
flEnableCors = flag.Bool([]string{"#api-enable-cors", "-api-enable-cors"}, false, "Enable CORS headers in the remote API")
flDns = docker.NewListOpts(docker.ValidateIp4Address)
flEnableIptables = flag.Bool("iptables", true, "Disable docker's addition of iptables rules")
flDefaultIp = flag.String("ip", "0.0.0.0", "Default IP address to use when binding container ports")
flInterContainerComm = flag.Bool("icc", true, "Enable inter-container communication")
flGraphDriver = flag.String("s", "", "Force the docker runtime to use a specific storage driver")
flEnableIptables = flag.Bool([]string{"#iptables", "-iptables"}, true, "Disable docker's addition of iptables rules")
flEnableIpForward = flag.Bool([]string{"#ip-forward", "-ip-forward"}, true, "Disable enabling of net.ipv4.ip_forward")
flDefaultIp = flag.String([]string{"#ip", "-ip"}, "0.0.0.0", "Default IP address to use when binding container ports")
flInterContainerComm = flag.Bool([]string{"#icc", "-icc"}, true, "Enable inter-container communication")
flGraphDriver = flag.String([]string{"s", "-storage-driver"}, "", "Force the docker runtime to use a specific storage driver")
flHosts = docker.NewListOpts(docker.ValidateHost)
flMtu = flag.Int([]string{"#mtu", "-mtu"}, 0, "Set the containers network MTU; if no value is provided: default to the default route MTU or 1500 if not default route is available")
)
flag.Var(&flDns, "dns", "Force docker to use specific DNS servers")
flag.Var(&flHosts, "H", "Multiple tcp://host:port or unix://path/to/socket to bind in daemon mode, single connection otherwise")
flag.Var(&flDns, []string{"#dns", "-dns"}, "Force docker to use specific DNS servers")
flag.Var(&flHosts, []string{"H", "-host"}, "tcp://host:port, unix://path/to/socket, fd://* or fd://socketfd to use in daemon mode. Multiple sockets can be specified")
flag.Parse()
@@ -51,12 +55,17 @@ func main() {
return
}
if flHosts.Len() == 0 {
// If we do not have a host, default to unix socket
flHosts.Set(fmt.Sprintf("unix://%s", docker.DEFAULTUNIXSOCKET))
defaultHost := os.Getenv("DOCKER_HOST")
if defaultHost == "" || *flDaemon {
// If we do not have a host, default to unix socket
defaultHost = fmt.Sprintf("unix://%s", api.DEFAULTUNIXSOCKET)
}
flHosts.Set(defaultHost)
}
if *bridgeName != "" && *bridgeIp != "" {
log.Fatal("You specified -b & -bip, mutually exclusive options. Please specify only one.")
log.Fatal("You specified -b & --bip, mutually exclusive options. Please specify only one.")
}
if *flDebug {
@@ -69,29 +78,33 @@ func main() {
flag.Usage()
return
}
eng, err := engine.New(*flRoot)
if err != nil {
log.Fatal(err)
}
// Load plugin: httpapi
job := eng.Job("initapi")
job := eng.Job("initserver")
job.Setenv("Pidfile", *pidfile)
job.Setenv("Root", *flRoot)
job.SetenvBool("AutoRestart", *flAutoRestart)
job.SetenvBool("EnableCors", *flEnableCors)
job.SetenvList("Dns", flDns.GetAll())
job.SetenvBool("EnableIptables", *flEnableIptables)
job.SetenvBool("EnableIpForward", *flEnableIpForward)
job.Setenv("BridgeIface", *bridgeName)
job.Setenv("BridgeIp", *bridgeIp)
job.Setenv("BridgeIP", *bridgeIp)
job.Setenv("DefaultIp", *flDefaultIp)
job.SetenvBool("InterContainerCommunication", *flInterContainerComm)
job.Setenv("GraphDriver", *flGraphDriver)
job.SetenvInt("Mtu", *flMtu)
if err := job.Run(); err != nil {
log.Fatal(err)
}
// Serve api
job = eng.Job("serveapi", flHosts.GetAll()...)
job.SetenvBool("Logging", true)
job.SetenvBool("EnableCors", *flEnableCors)
job.Setenv("Version", VERSION)
if err := job.Run(); err != nil {
log.Fatal(err)
}

View File

@@ -1,20 +1,19 @@
from ubuntu:12.04
maintainer Nick Stinemates
FROM ubuntu:12.04
MAINTAINER Nick Stinemates
#
# docker build -t docker:docs . && docker run -p 8000:8000 docker:docs
#
run apt-get update
run apt-get install -y python-setuptools make
run easy_install pip
#from docs/requirements.txt, but here to increase cacheability
run pip install Sphinx==1.1.3
run pip install sphinxcontrib-httpdomain==1.1.9
add . /docs
run cd /docs; make docs
# TODO switch to http://packages.ubuntu.com/trusty/python-sphinxcontrib-httpdomain once trusty is released
expose 8000
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -yq make python-pip python-setuptools
# pip installs from docs/requirements.txt, but here to increase cacheability
RUN pip install Sphinx==1.2.1
RUN pip install sphinxcontrib-httpdomain==1.2.0
ADD . /docs
RUN make -C /docs clean docs
workdir /docs/_build/html
entrypoint ["python", "-m", "SimpleHTTPServer"]
WORKDIR /docs/_build/html
CMD ["python", "-m", "SimpleHTTPServer"]
# note, EXPOSE is only last because of https://github.com/dotcloud/docker/issues/3525
EXPOSE 8000

View File

@@ -1,4 +1,3 @@
Andy Rothfusz <andy@dotcloud.com> (@metalivedev)
Ken Cochrane <ken@dotcloud.com> (@kencochrane)
James Turnbull <james@lovedthanlost.net> (@jamtur01)
Sven Dowideit <SvenDowideit@fosiki.com> (@SvenDowideit)

View File

@@ -46,7 +46,7 @@ directory:
* Linux: `pip install -r docs/requirements.txt`
* Mac OS X: `[sudo] pip-2.7 -r docs/requirements.txt`
* Mac OS X: `[sudo] pip-2.7 install -r docs/requirements.txt`
###Alternative Installation: Docker Container

View File

@@ -1,2 +1,2 @@
Sphinx==1.1.3
sphinxcontrib-httpdomain==1.1.9
Sphinx==1.2.1
sphinxcontrib-httpdomain==1.2.0

View File

@@ -1 +0,0 @@
Solomon Hykes <solomon@dotcloud.com> (@shykes)

File diff suppressed because it is too large Load Diff

View File

@@ -34,10 +34,13 @@ It can be as simple as this to create an Ubuntu base image::
DISTRIB_DESCRIPTION="Ubuntu 13.04"
There are more example scripts for creating base images in the
Docker Github Repo:
Docker GitHub Repo:
* `BusyBox <https://github.com/dotcloud/docker/blob/master/contrib/mkimage-busybox.sh>`_
* `CentOS / Scientific Linux CERN (SLC)
* CentOS / Scientific Linux CERN (SLC) `on Debian/Ubuntu
<https://github.com/dotcloud/docker/blob/master/contrib/mkimage-rinse.sh>`_
or
`on CentOS/RHEL/SLC/etc.
<https://github.com/dotcloud/docker/blob/master/contrib/mkimage-yum.sh>`_
* `Debian / Ubuntu
<https://github.com/dotcloud/docker/blob/master/contrib/mkimage-debootstrap.sh>`_

View File

@@ -0,0 +1,15 @@
:title: Docker articles
:description: various articles related to Docker
:keywords: docker, articles
.. _articles_list:
Articles
========
.. toctree::
:maxdepth: 1
security
baseimages
runmetrics

View File

@@ -0,0 +1,463 @@
:title: Runtime Metrics
:description: Measure the behavior of running containers
:keywords: docker, metrics, CPU, memory, disk, IO, run, runtime
.. _run_metrics:
Runtime Metrics
===============
Linux Containers rely on `control groups
<https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt>`_ which
not only track groups of processes, but also expose metrics about CPU,
memory, and block I/O usage. You can access those metrics and obtain
network usage metrics as well. This is relevant for "pure" LXC
containers, as well as for Docker containers.
Control Groups
--------------
Control groups are exposed through a pseudo-filesystem. In recent
distros, you should find this filesystem under
``/sys/fs/cgroup``. Under that directory, you will see multiple
sub-directories, called devices, freezer, blkio, etc.; each
sub-directory actually corresponds to a different cgroup hierarchy.
On older systems, the control groups might be mounted on ``/cgroup``,
without distinct hierarchies. In that case, instead of seeing the
sub-directories, you will see a bunch of files in that directory, and
possibly some directories corresponding to existing containers.
To figure out where your control groups are mounted, you can run:
::
grep cgroup /proc/mounts
.. _run_findpid:
Enumerating Cgroups
-------------------
You can look into ``/proc/cgroups`` to see the different control group
subsystems known to the system, the hierarchy they belong to, and how
many groups they contain.
You can also look at ``/proc/<pid>/cgroup`` to see which control
groups a process belongs to. The control group will be shown as a path
relative to the root of the hierarchy mountpoint; e.g. ``/`` means
“this process has not been assigned into a particular group”, while
``/lxc/pumpkin`` means that the process is likely to be a member of a
container named ``pumpkin``.
Finding the Cgroup for a Given Container
----------------------------------------
For each container, one cgroup will be created in each hierarchy. On
older systems with older versions of the LXC userland tools, the name
of the cgroup will be the name of the container. With more recent
versions of the LXC tools, the cgroup will be ``lxc/<container_name>.``
For Docker containers using cgroups, the container name will be the
full ID or long ID of the container. If a container shows up as
ae836c95b4c3 in ``docker ps``, its long ID might be something like
``ae836c95b4c3c9e9179e0e91015512da89fdec91612f63cebae57df9a5444c79``. You
can look it up with ``docker inspect`` or ``docker ps -notrunc``.
Putting everything together to look at the memory metrics for a Docker
container, take a look at ``/sys/fs/cgroup/memory/lxc/<longid>/``.
Metrics from Cgroups: Memory, CPU, Block IO
-------------------------------------------
For each subsystem (memory, CPU, and block I/O), you will find one or
more pseudo-files containing statistics.
Memory Metrics: ``memory.stat``
...............................
Memory metrics are found in the "memory" cgroup. Note that the memory
control group adds a little overhead, because it does very
fine-grained accounting of the memory usage on your host. Therefore,
many distros chose to not enable it by default. Generally, to enable
it, all you have to do is to add some kernel command-line parameters:
``cgroup_enable=memory swapaccount=1``.
The metrics are in the pseudo-file ``memory.stat``. Here is what it
will look like:
::
cache 11492564992
rss 1930993664
mapped_file 306728960
pgpgin 406632648
pgpgout 403355412
swap 0
pgfault 728281223
pgmajfault 1724
inactive_anon 46608384
active_anon 1884520448
inactive_file 7003344896
active_file 4489052160
unevictable 32768
hierarchical_memory_limit 9223372036854775807
hierarchical_memsw_limit 9223372036854775807
total_cache 11492564992
total_rss 1930993664
total_mapped_file 306728960
total_pgpgin 406632648
total_pgpgout 403355412
total_swap 0
total_pgfault 728281223
total_pgmajfault 1724
total_inactive_anon 46608384
total_active_anon 1884520448
total_inactive_file 7003344896
total_active_file 4489052160
total_unevictable 32768
The first half (without the ``total_`` prefix) contains statistics
relevant to the processes within the cgroup, excluding
sub-cgroups. The second half (with the ``total_`` prefix) includes
sub-cgroups as well.
Some metrics are "gauges", i.e. values that can increase or decrease
(e.g. swap, the amount of swap space used by the members of the
cgroup). Some others are "counters", i.e. values that can only go up,
because they represent occurrences of a specific event (e.g. pgfault,
which indicates the number of page faults which happened since the
creation of the cgroup; this number can never decrease).
cache
the amount of memory used by the processes of this control group
that can be associated precisely with a block on a block
device. When you read from and write to files on disk, this amount
will increase. This will be the case if you use "conventional" I/O
(``open``, ``read``, ``write`` syscalls) as well as mapped files
(with ``mmap``). It also accounts for the memory used by ``tmpfs``
mounts, though the reasons are unclear.
rss
the amount of memory that *doesn't* correspond to anything on
disk: stacks, heaps, and anonymous memory maps.
mapped_file
indicates the amount of memory mapped by the processes in the
control group. It doesn't give you information about *how much*
memory is used; it rather tells you *how* it is used.
pgfault and pgmajfault
indicate the number of times that a process of the cgroup triggered
a "page fault" and a "major fault", respectively. A page fault
happens when a process accesses a part of its virtual memory space
which is nonexistent or protected. The former can happen if the
process is buggy and tries to access an invalid address (it will
then be sent a ``SIGSEGV`` signal, typically killing it with the
famous ``Segmentation fault`` message). The latter can happen when
the process reads from a memory zone which has been swapped out, or
which corresponds to a mapped file: in that case, the kernel will
load the page from disk, and let the CPU complete the memory
access. It can also happen when the process writes to a
copy-on-write memory zone: likewise, the kernel will preempt the
process, duplicate the memory page, and resume the write operation
on the process' own copy of the page. "Major" faults happen when the
kernel actually has to read the data from disk. When it just has to
duplicate an existing page, or allocate an empty page, it's a
regular (or "minor") fault.
swap
the amount of swap currently used by the processes in this cgroup.
active_anon and inactive_anon
the amount of *anonymous* memory that has been identified has
respectively *active* and *inactive* by the kernel. "Anonymous"
memory is the memory that is *not* linked to disk pages. In other
words, that's the equivalent of the rss counter described above. In
fact, the very definition of the rss counter is **active_anon** +
**inactive_anon** - **tmpfs** (where tmpfs is the amount of memory
used up by ``tmpfs`` filesystems mounted by this control
group). Now, what's the difference between "active" and "inactive"?
Pages are initially "active"; and at regular intervals, the kernel
sweeps over the memory, and tags some pages as "inactive". Whenever
they are accessed again, they are immediately retagged
"active". When the kernel is almost out of memory, and time comes to
swap out to disk, the kernel will swap "inactive" pages.
active_file and inactive_file
cache memory, with *active* and *inactive* similar to the *anon*
memory above. The exact formula is cache = **active_file** +
**inactive_file** + **tmpfs**. The exact rules used by the kernel to
move memory pages between active and inactive sets are different
from the ones used for anonymous memory, but the general principle
is the same. Note that when the kernel needs to reclaim memory, it
is cheaper to reclaim a clean (=non modified) page from this pool,
since it can be reclaimed immediately (while anonymous pages and
dirty/modified pages have to be written to disk first).
unevictable
the amount of memory that cannot be reclaimed; generally, it will
account for memory that has been "locked" with ``mlock``. It is
often used by crypto frameworks to make sure that secret keys and
other sensitive material never gets swapped out to disk.
memory and memsw limits
These are not really metrics, but a reminder of the limits applied
to this cgroup. The first one indicates the maximum amount of
physical memory that can be used by the processes of this control
group; the second one indicates the maximum amount of RAM+swap.
Accounting for memory in the page cache is very complex. If two
processes in different control groups both read the same file
(ultimately relying on the same blocks on disk), the corresponding
memory charge will be split between the control groups. It's nice, but
it also means that when a cgroup is terminated, it could increase the
memory usage of another cgroup, because they are not splitting the
cost anymore for those memory pages.
CPU metrics: ``cpuacct.stat``
.............................
Now that we've covered memory metrics, everything else will look very
simple in comparison. CPU metrics will be found in the ``cpuacct``
controller.
For each container, you will find a pseudo-file ``cpuacct.stat``,
containing the CPU usage accumulated by the processes of the
container, broken down between ``user`` and ``system`` time. If you're
not familiar with the distinction, ``user`` is the time during which
the processes were in direct control of the CPU (i.e. executing
process code), and ``system`` is the time during which the CPU was
executing system calls on behalf of those processes.
Those times are expressed in ticks of 1/100th of a second. Actually,
they are expressed in "user jiffies". There are ``USER_HZ``
*"jiffies"* per second, and on x86 systems, ``USER_HZ`` is 100. This
used to map exactly to the number of scheduler "ticks" per second; but
with the advent of higher frequency scheduling, as well as `tickless
kernels <http://lwn.net/Articles/549580/>`_, the number of kernel
ticks wasn't relevant anymore. It stuck around anyway, mainly for
legacy and compatibility reasons.
Block I/O metrics
.................
Block I/O is accounted in the ``blkio`` controller. Different metrics
are scattered across different files. While you can find in-depth
details in the `blkio-controller
<https://www.kernel.org/doc/Documentation/cgroups/blkio-controller.txt>`_
file in the kernel documentation, here is a short list of the most
relevant ones:
blkio.sectors
contain the number of 512-bytes sectors read and written by the
processes member of the cgroup, device by device. Reads and writes
are merged in a single counter.
blkio.io_service_bytes
indicates the number of bytes read and written by the cgroup. It has
4 counters per device, because for each device, it differentiates
between synchronous vs. asynchronous I/O, and reads vs. writes.
blkio.io_serviced
the number of I/O operations performed, regardless of their size. It
also has 4 counters per device.
blkio.io_queued
indicates the number of I/O operations currently queued for this
cgroup. In other words, if the cgroup isn't doing any I/O, this will
be zero. Note that the opposite is not true. In other words, if
there is no I/O queued, it does not mean that the cgroup is idle
(I/O-wise). It could be doing purely synchronous reads on an
otherwise quiescent device, which is therefore able to handle them
immediately, without queuing. Also, while it is helpful to figure
out which cgroup is putting stress on the I/O subsystem, keep in
mind that is is a relative quantity. Even if a process group does
not perform more I/O, its queue size can increase just because the
device load increases because of other devices.
Network Metrics
---------------
Network metrics are not exposed directly by control groups. There is a
good explanation for that: network interfaces exist within the context
of *network namespaces*. The kernel could probably accumulate metrics
about packets and bytes sent and received by a group of processes, but
those metrics wouldn't be very useful. You want per-interface metrics
(because traffic happening on the local ``lo`` interface doesn't
really count). But since processes in a single cgroup can belong to
multiple network namespaces, those metrics would be harder to
interpret: multiple network namespaces means multiple ``lo``
interfaces, potentially multiple ``eth0`` interfaces, etc.; so this is
why there is no easy way to gather network metrics with control
groups.
Instead we can gather network metrics from other sources:
IPtables
........
IPtables (or rather, the netfilter framework for which iptables is
just an interface) can do some serious accounting.
For instance, you can setup a rule to account for the outbound HTTP
traffic on a web server:
::
iptables -I OUTPUT -p tcp --sport 80
There is no ``-j`` or ``-g`` flag, so the rule will just count matched
packets and go to the following rule.
Later, you can check the values of the counters, with:
::
iptables -nxvL OUTPUT
Technically, ``-n`` is not required, but it will prevent iptables from
doing DNS reverse lookups, which are probably useless in this
scenario.
Counters include packets and bytes. If you want to setup metrics for
container traffic like this, you could execute a ``for`` loop to add
two ``iptables`` rules per container IP address (one in each
direction), in the ``FORWARD`` chain. This will only meter traffic
going through the NAT layer; you will also have to add traffic going
through the userland proxy.
Then, you will need to check those counters on a regular basis. If you
happen to use ``collectd``, there is a nice plugin to automate
iptables counters collection.
Interface-level counters
........................
Since each container has a virtual Ethernet interface, you might want
to check directly the TX and RX counters of this interface. You will
notice that each container is associated to a virtual Ethernet
interface in your host, with a name like ``vethKk8Zqi``. Figuring out
which interface corresponds to which container is, unfortunately,
difficult.
But for now, the best way is to check the metrics *from within the
containers*. To accomplish this, you can run an executable from the
host environment within the network namespace of a container using
**ip-netns magic**.
The ``ip-netns exec`` command will let you execute any program
(present in the host system) within any network namespace visible to
the current process. This means that your host will be able to enter
the network namespace of your containers, but your containers won't be
able to access the host, nor their sibling containers. Containers will
be able to “see” and affect their sub-containers, though.
The exact format of the command is::
ip netns exec <nsname> <command...>
For example::
ip netns exec mycontainer netstat -i
``ip netns`` finds the "mycontainer" container by using namespaces
pseudo-files. Each process belongs to one network namespace, one PID
namespace, one ``mnt`` namespace, etc., and those namespaces are
materialized under ``/proc/<pid>/ns/``. For example, the network
namespace of PID 42 is materialized by the pseudo-file
``/proc/42/ns/net``.
When you run ``ip netns exec mycontainer ...``, it expects
``/var/run/netns/mycontainer`` to be one of those
pseudo-files. (Symlinks are accepted.)
In other words, to execute a command within the network namespace of a
container, we need to:
* Find out the PID of any process within the container that we want to
investigate;
* Create a symlink from ``/var/run/netns/<somename>`` to
``/proc/<thepid>/ns/net``
* Execute ``ip netns exec <somename> ....``
Please review :ref:`run_findpid` to learn how to find the cgroup of a
pprocess running in the container of which you want to measure network
usage. From there, you can examine the pseudo-file named ``tasks``,
which containes the PIDs that are in the control group (i.e. in the
container). Pick any one of them.
Putting everything together, if the "short ID" of a container is held
in the environment variable ``$CID``, then you can do this::
TASKS=/sys/fs/cgroup/devices/$CID*/tasks
PID=$(head -n 1 $TASKS)
mkdir -p /var/run/netns
ln -sf /proc/$PID/ns/net /var/run/netns/$CID
ip netns exec $CID netstat -i
Tips for high-performance metric collection
-------------------------------------------
Note that running a new process each time you want to update metrics
is (relatively) expensive. If you want to collect metrics at high
resolutions, and/or over a large number of containers (think 1000
containers on a single host), you do not want to fork a new process
each time.
Here is how to collect metrics from a single process. You will have to
write your metric collector in C (or any language that lets you do
low-level system calls). You need to use a special system call,
``setns()``, which lets the current process enter any arbitrary
namespace. It requires, however, an open file descriptor to the
namespace pseudo-file (remember: thats the pseudo-file in
``/proc/<pid>/ns/net``).
However, there is a catch: you must not keep this file descriptor
open. If you do, when the last process of the control group exits, the
namespace will not be destroyed, and its network resources (like the
virtual interface of the container) will stay around for ever (or
until you close that file descriptor).
The right approach would be to keep track of the first PID of each
container, and re-open the namespace pseudo-file each time.
Collecting metrics when a container exits
-----------------------------------------
Sometimes, you do not care about real time metric collection, but when
a container exits, you want to know how much CPU, memory, etc. it has
used.
Docker makes this difficult because it relies on ``lxc-start``, which
carefully cleans up after itself, but it is still possible. It is
usually easier to collect metrics at regular intervals (e.g. every
minute, with the collectd LXC plugin) and rely on that instead.
But, if you'd still like to gather the stats when a container stops,
here is how:
For each container, start a collection process, and move it to the
control groups that you want to monitor by writing its PID to the
tasks file of the cgroup. The collection process should periodically
re-read the tasks file to check if it's the last process of the
control group. (If you also want to collect network statistics as
explained in the previous section, you should also move the process to
the appropriate network namespace.)
When the container exits, ``lxc-start`` will try to delete the control
groups. It will fail, since the control group is still in use; but
thats fine. You process should now detect that it is the only one
remaining in the group. Now is the right time to collect all the
metrics you need!
Finally, your process should move itself back to the root control
group, and remove the container control group. To remove a control
group, just ``rmdir`` its directory. It's counter-intuitive to
``rmdir`` a directory as it still contains files; but remember that
this is a pseudo-filesystem, so usual rules don't apply. After the
cleanup is done, the collection process can exit safely.

View File

@@ -62,7 +62,7 @@ master_doc = 'toctree'
# General information about the project.
project = u'Docker'
copyright = u'2013, Team Docker'
copyright = u'2014 Docker, Inc.'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@@ -175,7 +175,7 @@ html_show_sourcelink = False
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
@@ -235,8 +235,10 @@ latex_documents = [
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('commandline/cli', 'docker', u'Docker Documentation',
[u'Team Docker'], 1)
('reference/commandline/cli', 'docker', u'Docker CLI Documentation',
[u'Team Docker'], 1),
('reference/builder', 'Dockerfile', u'Dockerfile Documentation',
[u'Team Docker'], 5),
]
# If true, show URL addresses after external links.

View File

@@ -136,7 +136,7 @@ You can run an interactive session in the newly built container:
Extra Step: Build and view the Documentation
-------------------------------------------
--------------------------------------------
If you want to read the documentation from a local website, or are making changes
to it, you can build the documentation and then serve it by:

View File

@@ -41,7 +41,7 @@ This time, we're requesting shared access to ``$COUCH1``'s volumes.
.. code-block:: bash
COUCH2=$(sudo docker run -d -p 5984 -volumes-from $COUCH1 shykes/couchdb:2013-05-03)
COUCH2=$(sudo docker run -d -p 5984 --volumes-from $COUCH1 shykes/couchdb:2013-05-03)
Browse data on the second database
----------------------------------

View File

@@ -9,25 +9,23 @@ Hello World
.. _running_examples:
Running the Examples
====================
Check your Docker install
-------------------------
All the examples assume your machine is running the ``docker`` daemon. To
run the ``docker`` daemon in the background, simply type:
This guide assumes you have a working installation of Docker. To check
your Docker install, run the following command:
.. code-block:: bash
sudo docker -d &
# Check that you have a working install
docker info
Now you can run Docker in client mode: by default all commands will be
forwarded to the ``docker`` daemon via a protected Unix socket, so you
must run as the ``root`` or via the ``sudo`` command.
If you get ``docker: command not found`` or something like
``/var/lib/docker/repositories: permission denied`` you may have an incomplete
Docker installation or insufficient privileges to access docker on your machine.
.. code-block:: bash
Please refer to :ref:`installation_list` for installation instructions.
sudo docker help
----
.. _hello_world:
@@ -72,10 +70,12 @@ See the example in action
.. raw:: html
<div style="margin-top:10px;">
<iframe width="560" height="350" src="http://ascii.io/a/2603/raw" frameborder="0"></iframe>
</div>
<iframe width="560" height="400" frameborder="0"
sandbox="allow-same-origin allow-scripts"
srcdoc="<body><script type=&quot;text/javascript&quot;
src=&quot;https://asciinema.org/a/2603.js&quot;
id=&quot;asciicast-2603&quot; async></script></body>">
</iframe>
----
@@ -88,9 +88,7 @@ Hello World Daemon
And now for the most boring daemon ever written!
This example assumes you have Docker installed and the Ubuntu
image already imported with ``docker pull ubuntu``. We will use the Ubuntu
image to run a simple hello world daemon that will just print hello
We will use the Ubuntu image to run a simple hello world daemon that will just print hello
world to standard out every second. It will continue to do this until
we stop it.
@@ -125,12 +123,14 @@ Check the logs make sure it is working correctly.
.. code-block:: bash
sudo docker attach $CONTAINER_ID
sudo docker attach -sig-proxy=false $CONTAINER_ID
Attach to the container to see the results in real-time.
- **"docker attach**" This will allow us to attach to a background
process to see what is going on.
- **"-sig-proxy=false"** Do not forward signals to the container; allows
us to exit the attachment using Control-C without stopping the container.
- **$CONTAINER_ID** The Id of the container we want to attach too.
Exit from the container attachment by pressing Control-C.
@@ -165,9 +165,12 @@ See the example in action
.. raw:: html
<div style="margin-top:10px;">
<iframe width="560" height="350" src="http://ascii.io/a/2562/raw" frameborder="0"></iframe>
</div>
<iframe width="560" height="400" frameborder="0"
sandbox="allow-same-origin allow-scripts"
srcdoc="<body><script type=&quot;text/javascript&quot;
src=&quot;https://asciinema.org/a/2562.js&quot;
id=&quot;asciicast-2562&quot; async></script></body>">
</iframe>
The next example in the series is a :ref:`python_web_app` example, or
you could skip to any of the other examples:

View File

@@ -43,7 +43,7 @@ container. The ``BUILD_JOB`` environment variable will be set with the new conta
[...]
While this container is running, we can attach to the new container to
see what is going on. The flag ``-sig-proxy`` set as ``false`` allows you to connect and
see what is going on. The flag ``--sig-proxy`` set as ``false`` allows you to connect and
disconnect (Ctrl-C) to it without stopping the container.
.. code-block:: bash
@@ -107,8 +107,11 @@ See the example in action
.. raw:: html
<div style="margin-top:10px;">
<iframe width="720" height="350" src="http://ascii.io/a/2573/raw" frameborder="0"></iframe>
</div>
<iframe width="720" height="400" frameborder="0"
sandbox="allow-same-origin allow-scripts"
srcdoc="<body><script type=&quot;text/javascript&quot;
src=&quot;https://asciinema.org/a/2573.js&quot;
id=&quot;asciicast-2573&quot; async></script></body>">
</iframe>
Continue to :ref:`running_ssh_service`.

View File

@@ -44,7 +44,7 @@ use a container link to provide access to our Redis database.
.. code-block:: bash
sudo docker run -name redis -d <your username>/redis
sudo docker run --name redis -d <your username>/redis
Create your web application container
-------------------------------------
@@ -56,7 +56,7 @@ Redis instance running inside that container to only this container.
.. code-block:: bash
sudo docker run -link redis:db -i -t ubuntu:12.10 /bin/bash
sudo docker run --link redis:db -i -t ubuntu:12.10 /bin/bash
Once inside our freshly created container we need to install Redis to get the
``redis-cli`` binary to test our connection.

View File

@@ -25,9 +25,12 @@ smooth, but it gives you a good idea.
.. raw:: html
<div style="margin-top:10px;">
<iframe width="800" height="400" src="http://ascii.io/a/2637/raw" frameborder="0"></iframe>
</div>
<iframe width="815" height="450" frameborder="0"
sandbox="allow-same-origin allow-scripts"
srcdoc="<body><script type=&quot;text/javascript&quot;
src=&quot;https://asciinema.org/a/2637.js&quot;
id=&quot;asciicast-2637&quot; async></script></body>">
</iframe>
You can also get this sshd container by using:
@@ -94,5 +97,13 @@ The password is ``screencast``.
$ ifconfig
$ ssh root@192.168.33.10 -p 49154
# Thanks for watching, Thatcher thatcher@dotcloud.com
Update:
-------
For Ubuntu 13.10 using stackbrew/ubuntu, you may need do these additional steps:
1. change /etc/pam.d/sshd, pam_loginuid line 'required' to 'optional'
2. echo LANG=\"en_US.UTF-8\" > /etc/default/locale

View File

@@ -70,7 +70,7 @@ Let's see what is inside our ``supervisord.conf`` file.
command=/usr/sbin/sshd -D
[program:apache2]
command=/bin/bash -c "source /etc/apache2/envvars && /usr/sbin/apache2 -DFOREGROUND"
command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND"
The ``supervisord.conf`` configuration file contains directives that configure
Supervisor and the processes it manages. The first block ``[supervisord]``

View File

@@ -26,7 +26,7 @@ Does Docker run on Mac OS X or Windows?
Not at this time, Docker currently only runs on Linux, but you can
use VirtualBox to run Docker in a virtual machine on your box, and
get the best of both worlds. Check out the
:ref:`install_using_vagrant` and :ref:`windows` installation
:ref:`macosx` and :ref:`windows` installation
guides.
How do containers compare to virtual machines?
@@ -111,7 +111,7 @@ What does Docker add to just plain LXC?
registry to store and transfer private containers, for internal
server deployments for example.
* *Tool ecosystem.*
* *Tool ecosystem.*
Docker defines an API for automating and customizing the
creation and deployment of containers. There are a huge number
of tools integrating with Docker to extend its
@@ -122,6 +122,11 @@ What does Docker add to just plain LXC?
(Jenkins, Strider, Travis), etc. Docker is rapidly establishing
itself as the standard for container-based tooling.
What is different between a Docker container and a VM?
......................................................
There's a great StackOverflow answer `showing the differences <http://stackoverflow.com/questions/16047306/how-is-docker-io-different-from-a-normal-virtual-machine>`_.
Do I lose my data when the container exits?
...........................................
@@ -129,6 +134,54 @@ Not at all! Any data that your application writes to disk gets preserved
in its container until you explicitly delete the container. The file
system for the container persists even after the container halts.
How far do Docker containers scale?
...................................
Some of the largest server farms in the world today are based on containers.
Large web deployments like Google and Twitter, and platform providers such as
Heroku and dotCloud all run on container technology, at a scale of hundreds of
thousands or even millions of containers running in parallel.
How do I connect Docker containers?
...................................
Currently the recommended way to link containers is via the `link` primitive.
You can see details of how to `work with links here
<http://docs.docker.io/en/latest/use/working_with_links_names/>`_.
Also of useful when enabling more flexible service portability is the
`Ambassador linking pattern
<http://docs.docker.io/en/latest/use/ambassador_pattern_linking/>`_.
How do I run more than one process in a Docker container?
.........................................................
Any capable process supervisor such as http://supervisord.org/, runit, s6, or
daemontools can do the trick. Docker will start up the process management
daemon which will then fork to run additional processes. As long as the
processor manager daemon continues to run, the container will continue to as
well. You can see a more substantial example `that uses supervisord here
<http://docs.docker.io/en/latest/examples/using_supervisord/>`_.
What platforms does Docker run on?
..................................
Linux:
- Ubuntu 12.04, 13.04 et al
- Fedora 19/20+
- RHEL 6.5+
- Centos 6+
- Gentoo
- ArchLinux
- openSUSE 12.3+
Cloud:
- Amazon EC2
- Google Compute Engine
- Rackspace
Can I help by adding some questions and answers?
................................................
@@ -143,7 +196,7 @@ Where can I find more answers?
* `Docker user mailinglist`_
* `Docker developer mailinglist`_
* `IRC, docker on freenode`_
* `Github`_
* `GitHub`_
* `Ask questions on Stackoverflow`_
* `Join the conversation on Twitter`_

View File

@@ -5,27 +5,22 @@
Introduction
------------
``docker``, the Linux Container Runtime, runs Unix processes with
strong guarantees of isolation across servers. Your software runs
repeatably everywhere because its :ref:`container_def` includes any
dependencies.
Docker is an open-source engine to easily create lightweight, portable,
self-sufficient containers from any application. The same container that a
developer builds and tests on a laptop can run at scale, in production, on
VMs, bare metal, OpenStack clusters, or any major infrastructure provider.
``docker`` runs three ways:
Common use cases for Docker include:
* as a daemon to manage LXC containers on your :ref:`Linux host
<kernel>` (``sudo docker -d``)
* as a :ref:`CLI <cli>` which talks to the daemon's `REST API
<api/docker_remote_api>`_ (``docker run ...``)
* as a client of :ref:`Repositories <working_with_the_repository>`
that let you share what you've built (``docker pull, docker
commit``).
- Automating the packaging and deployment of web applications.
- Automated testing and continuous integration/deployment.
- Deploying and scaling databases and backend services in a service-oriented environment.
- Building custom PaaS environments, either from scratch or as an extension of off-the-shelf platforms like OpenShift or Cloud Foundry.
Each use of ``docker`` is documented here. The features of Docker are
currently in active development, so this documentation will change
frequently.
Please note Docker is currently under heavy developement. It should not be used in production (yet).
For an overview of Docker, please see the `Introduction
<http://www.docker.io>`_. When you're ready to start working with
For a high-level overview of Docker, please see the `Introduction
<http://www.docker.io/learn_more/>`_. When you're ready to start working with
Docker, we have a `quick start <http://www.docker.io/gettingstarted>`_
and a more in-depth guide to :ref:`ubuntu_linux` and other
:ref:`installation_list` paths including prebuilt binaries,

View File

@@ -26,18 +26,13 @@ Amazon QuickStart
<https://console.aws.amazon.com/ec2/v2/home?#LaunchInstanceWizard:>`_ menu
on your AWS Console.
* When picking the source AMI for your instance type, select "Community
AMIs".
* Click the ``Select`` button for a 64Bit Ubuntu image. For example: Ubuntu Server 12.04.3 LTS
* Search for ``amd64 precise``. Pick one of the amd64 Ubuntu images.
* If you choose a EBS enabled AMI, you'll also be able to launch a
* For testing you can use the default (possibly free)
``t1.micro`` instance (more info on `pricing
<http://aws.amazon.com/en/ec2/pricing/>`_). ``t1.micro`` instances are
eligible for Amazon's Free Usage Tier.
<http://aws.amazon.com/en/ec2/pricing/>`_).
* When you click select you'll be taken to the instance setup, and you're one
click away from having your Ubuntu VM up and running.
* Click the ``Next: Configure Instance Details`` button at the bottom right.
2. **Tell CloudInit to install Docker:**

View File

@@ -71,21 +71,3 @@ To start on system boot:
::
sudo systemctl enable docker
Network Configuration
---------------------
IPv4 packet forwarding is disabled by default on Arch, so internet access from inside
the container may not work.
To enable the forwarding, run as root on the host system:
::
sysctl net.ipv4.ip_forward=1
And, to make it persistent across reboots, enable it on the host's **/etc/sysctl.d/docker.conf**:
::
net.ipv4.ip_forward=1

View File

@@ -12,14 +12,37 @@ Binaries
**This instruction set is meant for hackers who want to try out Docker
on a variety of environments.**
Before following these directions, you should really check if a packaged version
of Docker is already available for your distribution. We have packages for many
distributions, and more keep showing up all the time!
Before following these directions, you should really check if a
packaged version of Docker is already available for your distribution.
We have packages for many distributions, and more keep showing up all
the time!
Check Your Kernel
-----------------
Your host's Linux kernel must meet the Docker :ref:`kernel`
Check runtime dependencies
--------------------------
.. DOC COMMENT: this should be kept in sync with
https://github.com/dotcloud/docker/blob/master/hack/PACKAGERS.md#runtime-dependencies
To run properly, docker needs the following software to be installed at runtime:
- iproute2 version 3.5 or later (build after 2012-05-21), and
specifically the "ip" utility
- iptables version 1.4 or later
- The LXC utility scripts (http://lxc.sourceforge.net) version 0.8 or later
- Git version 1.7 or later
- XZ Utils 4.9 or later
Check kernel dependencies
-------------------------
Docker in daemon mode has specific kernel requirements. For details,
check your distribution in :ref:`installation_list`.
Note that Docker also has a client mode, which can run on virtually
any linux kernel (it even builds on OSX!).
Get the docker binary:
----------------------
@@ -39,6 +62,40 @@ Run the docker daemon
sudo ./docker -d &
.. _dockergroup:
Giving non-root access
----------------------
The ``docker`` daemon always runs as the root user, and since Docker
version 0.5.2, the ``docker`` daemon binds to a Unix socket instead of
a TCP port. By default that Unix socket is owned by the user *root*,
and so, by default, you can access it with ``sudo``.
Starting in version 0.5.3, if you (or your Docker installer) create a
Unix group called *docker* and add users to it, then the ``docker``
daemon will make the ownership of the Unix socket read/writable by the
*docker* group when the daemon starts. The ``docker`` daemon must
always run as the root user, but if you run the ``docker`` client as a
user in the *docker* group then you don't need to add ``sudo`` to all
the client commands.
.. warning:: The *docker* group is root-equivalent.
Upgrades
--------
To upgrade your manual installation of Docker, first kill the docker
daemon:
.. code-block:: bash
killall docker
Then follow the regular installation steps.
Run your first container!
-------------------------

View File

@@ -1,6 +1,6 @@
:title: Requirements and Installation on Fedora
:description: Please note this project is currently under heavy development. It should not be used in production.
:keywords: Docker, Docker documentation, fedora, requirements, virtualbox, vagrant, git, ssh, putty, cygwin, linux
:keywords: Docker, Docker documentation, Fedora, requirements, virtualbox, vagrant, git, ssh, putty, cygwin, linux
.. _fedora:
@@ -18,13 +18,34 @@ architecture.
Installation
------------
The ``docker-io`` package provides Docker on Fedora.
If you have the (unrelated) ``docker`` package installed already, it will
conflict with ``docker-io``. There's a `bug report`_ filed for it.
To proceed with ``docker-io`` installation on Fedora 19, please remove
``docker`` first.
.. code-block:: bash
sudo yum -y remove docker
For Fedora 20 and later, the ``wmdocker`` package will provide the same
functionality as ``docker`` and will also not conflict with ``docker-io``.
.. code-block:: bash
sudo yum -y install wmdocker
sudo yum -y remove docker
Install the ``docker-io`` package which will install Docker on our host.
.. code-block:: bash
sudo yum -y install docker-io
To update the ``docker-io`` package
To update the ``docker-io`` package:
.. code-block:: bash
@@ -46,7 +67,9 @@ Now let's verify that Docker is working.
.. code-block:: bash
sudo docker run -i -t mattdm/fedora /bin/bash
sudo docker run -i -t fedora /bin/bash
**Done!**, now continue with the :ref:`hello_world` example.
.. _bug report: https://bugzilla.redhat.com/show_bug.cgi?id=1043676

View File

@@ -0,0 +1,62 @@
:title: Installation on FrugalWare
:description: Docker installation on FrugalWare.
:keywords: frugalware linux, virtualization, docker, documentation, installation
.. _frugalware:
FrugalWare
==========
.. include:: install_header.inc
.. include:: install_unofficial.inc
Installing on FrugalWare is handled via the official packages:
* `lxc-docker i686 <http://www.frugalware.org/packages/200141>`_
* `lxc-docker x86_64 <http://www.frugalware.org/packages/200130>`_
The `lxc-docker` package will install the latest tagged version of Docker.
Dependencies
------------
Docker depends on several packages which are specified as dependencies in
the packages. The core dependencies are:
* systemd
* lvm2
* sqlite3
* libguestfs
* lxc
* iproute2
* bridge-utils
Installation
------------
A simple
::
pacman -S lxc-docker
is all that is needed.
Starting Docker
---------------
There is a systemd service unit created for Docker. To start Docker as service:
::
sudo systemctl start lxc-docker
To start on system boot:
::
sudo systemctl enable lxc-docker

View File

@@ -82,19 +82,3 @@ To start on system boot:
.. code-block:: bash
sudo systemctl enable docker.service
Network Configuration
^^^^^^^^^^^^^^^^^^^^^
IPv4 packet forwarding is disabled by default, so internet access from inside
the container will not work unless ``net.ipv4.ip_forward`` is enabled:
.. code-block:: bash
sudo sysctl -w net.ipv4.ip_forward=1
Or, to enable it more permanently:
.. code-block:: bash
echo net.ipv4.ip_forward = 1 | sudo tee /etc/sysctl.d/docker.conf

View File

@@ -43,23 +43,25 @@
$ gcutil ssh docker-playground
docker-playground:~$
5. Enable IP forwarding:
.. code-block:: bash
docker-playground:~$ echo net.ipv4.ip_forward=1 | sudo tee /etc/sysctl.d/99-docker.conf
docker-playground:~$ sudo sysctl --system
6. Install the latest Docker release and configure it to start when the instance boots:
5. Install the latest Docker release and configure it to start when the instance boots:
.. code-block:: bash
docker-playground:~$ curl get.docker.io | bash
docker-playground:~$ sudo update-rc.d docker defaults
6. If running in zones: ``us-central1-a``, ``europe-west1-1``, and ``europe-west1-b``, the docker daemon must be started with the ``-mtu`` flag. Without the flag, you may experience intermittent network pauses.
`See this issue <https://code.google.com/p/google-compute-engine/issues/detail?id=57>`_ for more details.
.. code-block:: bash
docker-playground:~$ echo 'DOCKER_OPTS="$DOCKER_OPTS -mtu 1460"' | sudo tee -a /etc/default/docker
docker-playground:~$ sudo service docker restart
7. Start a new container:
.. code-block:: bash
docker-playground:~$ sudo docker run busybox echo 'docker on GCE \o/'
docker on GCE \o/

View File

@@ -22,12 +22,11 @@ Contents:
fedora
archlinux
gentoolinux
vagrant
openSUSE
frugalware
mac
windows
amazon
rackspace
google
kernel
binaries
security
upgrading

View File

@@ -1,150 +0,0 @@
:title: Kernel Requirements
:description: Kernel supports
:keywords: kernel requirements, kernel support, docker, installation, cgroups, namespaces
.. _kernel:
Kernel Requirements
===================
In short, Docker has the following kernel requirements:
- Linux version 3.8 or above.
- Cgroups and namespaces must be enabled.
*Note: as of 0.7 docker no longer requires aufs. AUFS support is still available as an optional driver.*
The officially supported kernel is the one recommended by the
:ref:`ubuntu_linux` installation path. It is the one that most developers
will use, and the one that receives the most attention from the core
contributors. If you decide to go with a different kernel and hit a bug,
please try to reproduce it with the official kernels first.
If you cannot or do not want to use the "official" kernels,
here is some technical background about the features (both optional and
mandatory) that docker needs to run successfully.
Linux version 3.8 or above
--------------------------
Kernel versions 3.2 to 3.5 are not stable when used with docker.
In some circumstances, you will experience kernel "oopses", or even crashes.
The symptoms include:
- a container being killed in the middle of an operation (e.g. an ``apt-get``
command doesn't complete);
- kernel messages including mentioning calls to ``mntput`` or
``d_hash_and_lookup``;
- kernel crash causing the machine to freeze for a few minutes, or even
completely.
Additionally, kernels prior 3.4 did not implement ``reboot_pid_ns``,
which means that the ``reboot()`` syscall could reboot the host machine,
instead of terminating the container. To work around that problem,
LXC userland tools (since version 0.8) automatically drop the ``SYS_BOOT``
capability when necessary. Still, if you run a pre-3.4 kernel with pre-0.8
LXC tools, be aware that containers can reboot the whole host! This is
not something that Docker wants to address in the short term, since you
shouldn't use kernels prior 3.8 with Docker anyway.
While it is still possible to use older kernels for development, it is
really not advised to do so.
Docker checks the kernel version when it starts, and emits a warning if it
detects something older than 3.8.
See issue `#407 <https://github.com/dotcloud/docker/issues/407>`_ for details.
Cgroups and namespaces
----------------------
You need to enable namespaces and cgroups, to the extent of what is needed
to run LXC containers. Technically, while namespaces have been introduced
in the early 2.6 kernels, we do not advise to try any kernel before 2.6.32
to run LXC containers. Note that 2.6.32 has some documented issues regarding
network namespace setup and teardown; those issues are not a risk if you
run containers in a private environment, but can lead to denial-of-service
attacks if you want to run untrusted code in your containers. For more details,
see `LP#720095 <https://bugs.launchpad.net/ubuntu/+source/linux/+bug/720095>`_.
Kernels 2.6.38, and every version since 3.2, have been deployed successfully
to run containerized production workloads. Feature-wise, there is no huge
improvement between 2.6.38 and up to 3.6 (as far as docker is concerned!).
Extra Cgroup Controllers
------------------------
Most control groups can be enabled or disabled individually. For instance,
you can decide that you do not want to compile support for the CPU or memory
controller. In some cases, the feature can be enabled or disabled at boot
time. It is worth mentioning that some distributions (like Debian) disable
"expensive" features, like the memory controller, because they can have
a significant performance impact.
In the specific case of the memory cgroup, docker will detect if the cgroup
is available or not. If it's not, it will print a warning, and it won't
use the feature. If you want to enable that feature -- read on!
Memory and Swap Accounting on Debian/Ubuntu
-------------------------------------------
If you use Debian or Ubuntu kernels, and want to enable memory and swap
accounting, you must add the following command-line parameters to your kernel::
cgroup_enable=memory swapaccount=1
On Debian or Ubuntu systems, if you use the default GRUB bootloader, you can
add those parameters by editing ``/etc/default/grub`` and extending
``GRUB_CMDLINE_LINUX``. Look for the following line::
GRUB_CMDLINE_LINUX=""
And replace it by the following one::
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
Then run ``update-grub``, and reboot.
Details
-------
Networking:
- CONFIG_BRIDGE
- CONFIG_NETFILTER_XT_MATCH_ADDRTYPE
- CONFIG_NF_NAT
- CONFIG_NF_NAT_IPV4
- CONFIG_NF_NAT_NEEDED
LVM:
- CONFIG_BLK_DEV_DM
- CONFIG_DM_THIN_PROVISIONING
- CONFIG_EXT4_FS
Namespaces:
- CONFIG_NAMESPACES
- CONFIG_UTS_NS
- CONFIG_IPC_NS
- CONFIG_UID_NS
- CONFIG_PID_NS
- CONFIG_NET_NS
Cgroups:
- CONFIG_CGROUPS
Cgroup controllers (optional but highly recommended):
- CONFIG_CGROUP_CPUACCT
- CONFIG_BLK_CGROUP
- CONFIG_MEMCG
- CONFIG_MEMCG_SWAP

View File

@@ -0,0 +1,160 @@
:title: Requirements and Installation on Mac OS X 10.6 Snow Leopard
:description: Please note this project is currently under heavy development. It should not be used in production.
:keywords: Docker, Docker documentation, requirements, virtualbox, ssh, linux, os x, osx, mac
.. _macosx:
========
Mac OS X
========
.. note::
These instructions are available with the new release of Docker
(version 0.8). However, they are subject to change.
.. include:: install_header.inc
Docker is supported on Mac OS X 10.6 "Snow Leopard" or newer.
How To Install Docker On Mac OS X
=================================
VirtualBox
----------
Docker on OS X needs VirtualBox to run. To begin with, head over to
`VirtualBox Download Page`_ and get the tool for ``OS X hosts x86/amd64``.
.. _VirtualBox Download Page: https://www.virtualbox.org/wiki/Downloads
Once the download is complete, open the disk image, run the set up file
(i.e. ``VirtualBox.pkg``) and install VirtualBox. Do not simply copy the
package without running the installer.
boot2docker
-----------
`boot2docker`_ provides a handy script to easily manage the VM running the
``docker`` daemon. It also takes care of the installation for the OS image
that is used for the job.
.. _GitHub page: https://github.com/steeve/boot2docker
Open up a new terminal window, if you have not already.
Run the following commands to get boot2docker:
.. code-block:: bash
# Enter the installation directory
cd ~/bin
# Get the file
curl https://raw.github.com/steeve/boot2docker/master/boot2docker > boot2docker
# Mark it executable
chmod +x boot2docker
Docker OS X Client
------------------
The ``docker`` daemon is accessed using the ``docker`` client.
Run the following commands to get it downloaded and set up:
.. code-block:: bash
# Get the file
curl -o docker http://get.docker.io/builds/Darwin/x86_64/docker-latest
# Mark it executable
chmod +x docker
# Set the environment variable for the docker daemon
export DOCKER_HOST=tcp://
# Copy the executable file
sudo cp docker /usr/local/bin/
And thats it! Lets check out how to use it.
How To Use Docker On Mac OS X
=============================
The ``docker`` daemon (via boot2docker)
---------------------------------------
Inside the ``~/bin`` directory, run the following commands:
.. code-block:: bash
# Initiate the VM
./boot2docker init
# Run the VM (the docker daemon)
./boot2docker up
# To see all available commands:
./boot2docker
# Usage ./boot2docker {init|start|up|pause|stop|restart|status|info|delete|ssh|download}
The ``docker`` client
---------------------
Once the VM with the ``docker`` daemon is up, you can use the ``docker``
client just like any other application.
.. code-block:: bash
docker version
# Client version: 0.7.6
# Go version (client): go1.2
# Git commit (client): bc3b2ec
# Server version: 0.7.5
# Git commit (server): c348c04
# Go version (server): go1.2
SSH-ing The VM
--------------
If you feel the need to connect to the VM, you can simply run:
.. code-block:: bash
./boot2docker ssh
# User: docker
# Pwd: tcuser
You can now continue with the :ref:`hello_world` example.
Learn More
==========
boot2docker:
------------
See the GitHub page for `boot2docker`_.
.. _boot2docker: https://github.com/steeve/boot2docker
If SSH complains about keys:
----------------------------
.. code-block:: bash
ssh-keygen -R '[localhost]:2022'
About the way Docker works on Mac OS X:
---------------------------------------
Docker has two key components: the ``docker`` daemon and the ``docker``
client. The tool works by client commanding the daemon. In order to
work and do its magic, the daemon makes use of some Linux Kernel
features (e.g. LXC, name spaces etc.), which are not supported by OS X.
Therefore, the solution of getting Docker to run on OS X consists of
running it inside a lightweight virtual machine. In order to simplify
things, Docker comes with a bash script to make this whole process as
easy as possible (i.e. boot2docker).

View File

@@ -0,0 +1,73 @@
:title: Installation on openSUSE
:description: Docker installation on openSUSE.
:keywords: openSUSE, virtualbox, docker, documentation, installation
.. _openSUSE:
openSUSE
========
.. include:: install_header.inc
.. include:: install_unofficial.inc
Docker is available in **openSUSE 12.3 and later**. Please note that due to the
current Docker limitations Docker is able to run only on the **64 bit**
architecture.
Installation
------------
The ``docker`` package from the `Virtualization project`_ on `OBS`_ provides
Docker on openSUSE.
To proceed with Docker installation please add the right Virtualization
repository.
.. code-block:: bash
# openSUSE 12.3
sudo zypper ar -f http://download.opensuse.org/repositories/Virtualization/openSUSE_12.3/ Virtualization
# openSUSE 13.1
sudo zypper ar -f http://download.opensuse.org/repositories/Virtualization/openSUSE_13.1/ Virtualization
Install the Docker package.
.. code-block:: bash
sudo zypper in docker
It's also possible to install Docker using openSUSE's 1-click install. Just
visit `this`_ page, select your openSUSE version and click on the installation
link. This will add the right repository to your system and it will
also install the `docker` package.
Now that it's installed, let's start the Docker daemon.
.. code-block:: bash
sudo systemctl start docker
If we want Docker to start at boot, we should also:
.. code-block:: bash
sudo systemctl enable docker
The `docker` package creates a new group named `docker`. Users, other than
`root` user, need to be part of this group in order to interact with the
Docker daemon.
.. code-block:: bash
sudo usermod -G docker <username>
**Done!**, now continue with the :ref:`hello_world` example.
.. _Virtualization project: https://build.opensuse.org/project/show/Virtualization
.. _OBS: https://build.opensuse.org/
.. _this: http://software.opensuse.org/package/docker

View File

@@ -28,6 +28,15 @@ Installation
Firstly, you need to install the EPEL repository. Please follow the `EPEL installation instructions`_.
The ``docker-io`` package provides Docker on EPEL.
If you already have the (unrelated) ``docker`` package installed, it will
conflict with ``docker-io``. There's a `bug report`_ filed for it.
To proceed with ``docker-io`` installation, please remove
``docker`` first.
Next, let's install the ``docker-io`` package which will install Docker on our host.
.. code-block:: bash
@@ -56,7 +65,7 @@ Now let's verify that Docker is working.
.. code-block:: bash
sudo docker run -i -t mattdm/fedora /bin/bash
sudo docker run -i -t fedora /bin/bash
**Done!**, now continue with the :ref:`hello_world` example.
@@ -68,4 +77,5 @@ If you have any issues - please report them directly in the `Red Hat Bugzilla fo
.. _Extra Packages for Enterprise Linux (EPEL): https://fedoraproject.org/wiki/EPEL
.. _EPEL installation instructions: https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F
.. _Red Hat Bugzilla for docker-io component : https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora%20EPEL&component=docker-io
.. _bug report: https://bugzilla.redhat.com/show_bug.cgi?id=1043676

View File

@@ -17,7 +17,7 @@ Ubuntu
Docker is supported on the following versions of Ubuntu:
- :ref:`ubuntu_precise`
- :ref:`ubuntu_raring`
- :ref:`ubuntu_raring_saucy`
Please read :ref:`ufw`, if you plan to use `UFW (Uncomplicated
Firewall) <https://help.ubuntu.com/community/UFW>`_
@@ -35,7 +35,7 @@ Dependencies
**Linux kernel 3.8**
Due to a bug in LXC, docker works best on the 3.8 kernel. Precise
Due to a bug in LXC, Docker works best on the 3.8 kernel. Precise
comes with a 3.2 kernel, so we need to upgrade it. The kernel you'll
install when following these steps comes with AUFS built in. We also
include the generic headers to enable packages that depend on them,
@@ -68,13 +68,11 @@ easy. **See the :ref:`installmirrors` section below if you are not in
the United States.** Other sources of the Debian packages may be
faster for you to install.
First add the Docker repository key to your local keychain. You can use the
``apt-key`` command to check the fingerprint matches: ``36A1 D786 9245 C895 0F96
6E92 D857 6A8B A88D 21E9``
First add the Docker repository key to your local keychain.
.. code-block:: bash
sudo sh -c "wget -qO- https://get.docker.io/gpg | apt-key add -"
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
Add the Docker repository to your apt sources list, update and install the
``lxc-docker`` package.
@@ -108,10 +106,12 @@ Type ``exit`` to exit
**Done!**, now continue with the :ref:`hello_world` example.
.. _ubuntu_raring:
.. _ubuntu_raring_saucy:
Ubuntu Raring 13.04 (64 bit)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Ubuntu Raring 13.04 and Saucy 13.10 (64 bit)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
These instructions cover both Ubuntu Raring 13.04 and Saucy 13.10.
Dependencies
------------
@@ -140,13 +140,11 @@ Docker is available as a Debian package, which makes installation easy.
Please note that these instructions have changed for 0.6. If you are upgrading from an earlier version, you will need
to follow them again.
First add the Docker repository key to your local keychain. You can use the
``apt-key`` command to check the fingerprint matches: ``36A1 D786 9245 C895 0F96
6E92 D857 6A8B A88D 21E9``
First add the Docker repository key to your local keychain.
.. code-block:: bash
sudo sh -c "wget -qO- https://get.docker.io/gpg | apt-key add -"
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
Add the Docker repository to your apt sources list, update and install the
``lxc-docker`` package.
@@ -170,13 +168,72 @@ Type ``exit`` to exit
**Done!**, now continue with the :ref:`hello_world` example.
Giving non-root access
----------------------
The ``docker`` daemon always runs as the root user, and since Docker version
0.5.2, the ``docker`` daemon binds to a Unix socket instead of a TCP port. By
default that Unix socket is owned by the user *root*, and so, by default, you
can access it with ``sudo``.
Starting in version 0.5.3, if you (or your Docker installer) create a
Unix group called *docker* and add users to it, then the ``docker``
daemon will make the ownership of the Unix socket read/writable by the
*docker* group when the daemon starts. The ``docker`` daemon must
always run as the root user, but if you run the ``docker`` client as a user in
the *docker* group then you don't need to add ``sudo`` to all the
client commands.
.. warning:: The *docker* group is root-equivalent.
**Example:**
.. code-block:: bash
# Add the docker group if it doesn't already exist.
sudo groupadd docker
# Add the connected user "${USER}" to the docker group.
# Change the user name to match your preferred user.
# You may have to logout and log back in again for
# this to take effect.
sudo gpasswd -a ${USER} docker
# Restart the Docker daemon.
sudo service docker restart
Upgrade
--------
To install the latest version of docker, use the standard ``apt-get`` method:
.. code-block:: bash
# update your sources list
sudo apt-get update
# install the latest
sudo apt-get install lxc-docker
Troubleshooting
^^^^^^^^^^^^^^^
On Linux Mint, the ``cgroups-lite`` package is not installed by default.
Before Docker will work correctly, you will need to install this via:
.. code-block:: bash
sudo apt-get update && sudo apt-get install cgroups-lite
.. _ufw:
Docker and UFW
^^^^^^^^^^^^^^
Docker uses a bridge to manage container networking. By default, UFW drops all
`forwarding` traffic. As a result will you need to enable UFW forwarding:
`forwarding` traffic. As a result you will need to enable UFW forwarding:
.. code-block:: bash

View File

@@ -1,73 +0,0 @@
:title: Upgrading
:description: These instructions are for upgrading Docker
:keywords: Docker, Docker documentation, upgrading docker, upgrade
.. _upgrading:
Upgrading
=========
The technique for upgrading ``docker`` to a newer version depends on
how you installed ``docker``.
.. versionadded:: 0.5.3
You may wish to add a ``docker`` group to your system to avoid using sudo with ``docker``. (see :ref:`dockergroup`)
After ``apt-get``
-----------------
If you installed Docker using ``apt-get`` or Vagrant, then you should
use ``apt-get`` to upgrade.
.. versionadded:: 0.6
Add Docker repository information to your system first.
.. code-block:: bash
# Add the Docker repository key to your local keychain
sudo sh -c "curl https://get.docker.io/gpg | apt-key add -"
# Add the Docker repository to your apt sources list.
sudo sh -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
# update your sources list
sudo apt-get update
# install the latest
sudo apt-get install lxc-docker
After manual installation
-------------------------
If you installed the Docker :ref:`binaries` then follow these steps:
.. code-block:: bash
# kill the running docker daemon
killall docker
.. code-block:: bash
# get the latest binary
wget http://get.docker.io/builds/Linux/x86_64/docker-latest -O docker
# make it executable
chmod +x docker
Start docker in daemon mode (``-d``) and disconnect, running the
daemon in the background (``&``). Starting as ``./docker`` guarantees
to run the version in your current directory rather than a version
which might reside in your path.
.. code-block:: bash
# start the new version
sudo ./docker -d &
Alternatively you can replace the docker binary in ``/usr/local/bin``.

View File

@@ -1,80 +0,0 @@
:title: Using Vagrant (Mac, Linux)
:description: This guide will setup a new virtualbox virtual machine with docker installed on your computer.
:keywords: Docker, Docker documentation, virtualbox, vagrant, git, ssh, putty, cygwin
.. _install_using_vagrant:
Using Vagrant (Mac, Linux)
==========================
This guide will setup a new virtualbox virtual machine with docker
installed on your computer. This works on most operating systems,
including MacOSX, Windows, Linux, FreeBSD and others. If you can
install these and have at least 400MB RAM to spare you should be good.
Install Vagrant and Virtualbox
------------------------------
.. include:: install_header.inc
.. include:: install_unofficial.inc
#. Install virtualbox from https://www.virtualbox.org/ (or use your
package manager)
#. Install vagrant from http://www.vagrantup.com/ (or use your package
manager)
#. Install git if you had not installed it before, check if it is
installed by running ``git`` in a terminal window
Spin it up
----------
1. Fetch the docker sources (this includes the ``Vagrantfile`` for
machine setup).
.. code-block:: bash
git clone https://github.com/dotcloud/docker.git
2. Change directory to docker
.. code-block:: bash
cd docker
3. Run vagrant from the sources directory
.. code-block:: bash
vagrant up
Vagrant will:
* Download the 'official' Precise64 base ubuntu virtual machine image from vagrantup.com
* Boot this image in virtualbox
* Follow official :ref:`ubuntu_linux` installation path
You now have a Ubuntu Virtual Machine running with docker pre-installed.
Connect
-------
To access the VM and use Docker, Run ``vagrant ssh`` from the same directory as where you ran
``vagrant up``. Vagrant will connect you to the correct VM.
.. code-block:: bash
vagrant ssh
Run
-----
Now you are in the VM, run docker
.. code-block:: bash
sudo docker
Continue with the :ref:`hello_world` example.

View File

@@ -4,8 +4,8 @@
.. _windows:
Using Vagrant (Windows)
=======================
Installing Docker on Windows
============================
Docker can run on Windows using a VM like VirtualBox. You then run
Linux within the VM.

View File

@@ -26,15 +26,33 @@ Docker Remote API
2. Versions
===========
The current version of the API is 1.7
The current version of the API is 1.9
Calling /images/<name>/insert is the same as calling
/v1.7/images/<name>/insert
/v1.9/images/<name>/insert
You can still call an old version of the api using
/v1.0/images/<name>/insert
v1.9
****
Full Documentation
------------------
:doc:`docker_remote_api_v1.9`
What's new
----------
.. http:post:: /build
**New!** This endpoint now takes a serialized ConfigFile which it uses to
resolve the proper registry auth credentials for pulling the base image.
Clients which previously implemented the version accepting an AuthConfig
object must be updated.
v1.8
****
@@ -139,7 +157,7 @@ What's new
[
{
"RepoTag": [
"RepoTags": [
"ubuntu:12.04",
"ubuntu:precise",
"ubuntu:latest"
@@ -150,7 +168,7 @@ What's new
"VirtualSize": 131506275
},
{
"RepoTag": [
"RepoTags": [
"ubuntu:12.10",
"ubuntu:quantal"
],

View File

@@ -1078,7 +1078,7 @@ Monitor Docker's events
.. sourcecode:: http
POST /events?since=1374067924
GET /events?since=1374067924
**Example response**:

View File

@@ -1122,7 +1122,7 @@ Monitor Docker's events
.. sourcecode:: http
POST /events?since=1374067924
GET /events?since=1374067924
**Example response**:

View File

@@ -1093,7 +1093,7 @@ Monitor Docker's events
.. sourcecode:: http
POST /events?since=1374067924
GET /events?since=1374067924
**Example response**:

Some files were not shown because too many files have changed in this diff Show More