Commit Graph

86 Commits

Author SHA1 Message Date
ee66cdf051 docker.service: don't limit tasks
Signed-off-by: Pierre Carrier <pierre@meteor.com>
Upstream-commit: 33a8ab29ed9e51697772a0642b8d651b9a845532
Component: engine
2016-03-27 04:02:34 -07:00
48da675c58 Add "Delegate=yes" to docker's service file
We need to add delegate yes to docker's service file so that it can
manage the cgroups of the processes that it launches without systemd
interfering with them and moving the processes after it is reloaded.

```
       Delegate=
           Turns on delegation of further resource control partitioning to
           processes of the unit. For unprivileged services (i.e. those
           using the User= setting), this allows processes to create a
           subhierarchy beneath its control group path. For privileged
           services and scopes, this ensures the processes will have all
           control group controllers enabled.
```

This is the proper fix for issue #20152

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
Upstream-commit: d16737f971092767c1b9d28302a3f5aedbe2f576
Component: engine
2016-02-25 10:32:09 -08:00
a5ddabd8b8 remove tasksmax, people on newer kernels can add it themselves
Signed-off-by: Jessica Frazelle <acidburn@docker.com>
Upstream-commit: 624125082414d5ba4a987657a44a8506920da611
Component: engine
2016-02-09 14:07:23 -08:00
a2042aca33 Merge pull request #19886 from AndrewGuenther/185160-init-socket-fix
Wait to fire start event until socket is created
Upstream-commit: d47812dd1d1de206e29a644e125a0a0f28655c6c
Component: engine
2016-02-03 17:38:52 -08:00
fb14e6604b Allow disabling of colored Docker logs via daemon flag.
Signed-off-by: Vincent Woo <me@vincentwoo.com>
Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 87a450a37f0e934b67c90fbcdbff28459216e332
Component: engine
2016-02-01 16:19:18 -05:00
65de1378f5 Wait to fire start event until socket is created
Previously, this check only worked if no host was specified and was
hard coded to check for "/var/run/docker.sock"

This change generalizes that check and captures any specified socket
and waits for it to be created.

Caveat: This will only check the first socket specified, but it is an
improvement over none at all.

Fixes #185160

Signed-off-by: Andrew Guenther <guenther.andrew.j@gmail.com>
Upstream-commit: 9f401254bd8e097ef30a3bc5de5576de08bc979a
Component: engine
2016-02-01 08:40:26 -08:00
69dd6d149a Add a note to /etc/default/docker noting that it does not apply to systemd
Signed-off-by: Andrew "Tianon" Page <admwiggin@gmail.com>
Upstream-commit: 90e33640b883134be0fc7d526d2ba45aa6eef70f
Component: engine
2016-01-22 07:35:02 -08:00
b8f7499a3b Set TasksMax in addition to LimitNPROC in systemd service files
systemd sets an additional limit on processes and threads that defaults to 512 when run under Linux >= 4.3.
See more information here: http://unix.stackexchange.com/a/255603/59955

Signed-off-by: Candid Dauth <cdauth@cdauth.eu>
Upstream-commit: 105778343a2e5d510fae1cbdb1b7ab6879e5a028
Component: engine
2016-01-16 18:45:41 +01:00
02f28288ea Fix syntax error in init script
Signed-off-by: oyld <oyld0210@163.com>
Upstream-commit: bbbc01b86edf9a5676ad735d008097942e0a93ac
Component: engine
2015-12-22 04:00:00 -08:00
bceb4f3dff Disable timeout for systemd
With content addressability update starting upgraded
daemon for the first time can take a long time if
graph dir was not prepared with a migration tool before.
This avoids systemd timeouts while the migration is
taking place.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Upstream-commit: eff5e6498fa424587c339b5ae54e28f003775e4b
Component: engine
2015-12-03 13:15:31 -08:00
266b690d59 Update upstart init script to start on filesystem (not only on local ones).
Signed-off-by: Julien Pervillé <julien.perville@perfect-memory.com>
Upstream-commit: 6f83dd22a36b57fdc75bd2b6cbce7572b0695f99
Component: engine
2015-11-05 20:38:52 +01:00
b32a8c3c1d #16560 Add timeout to sudo service docker stop on sysvinit
Add 10 seconds timeout when running `sudo service docker stop`. This is
especially needed when running `sudo service docker restart`. Otherwise,
`restart` results in exitstatus 1, because `start` has nothing to do.

Signed-off-by: Ewa Czechowska <ewa@ai-traders.com>
Upstream-commit: 5c94a9e800ed4f2e43f472b214f699c22fd7e2fe
Component: engine
2015-09-24 19:41:32 +00:00
871fe73c24 Do not try to guess "docker" in Debian SysV init script
On boot, the init script is invoked from `/etc/rcN.d/S20docker` (where N
is the runlevel). Consequently, the init script tried to find the
defaults at `/etc/defaults/S20docker` and the binary at
`/usr/bin/S20docker`. This causes the docker daemon to fail at boot with
the error

    /usr/bin/S20docker not present or not executable

Starting it manually works because it invokes `/etc/init.d/docker` which
has the correct basename.

Fix this by hardcoding "docker" as the base name.

Signed-off-by: Matthias Rampke <mr@soundcloud.com>
Upstream-commit: 01c5cfcc5629e1d90a50a8447f9712fa6ff49f48
Component: engine
2015-09-23 11:27:34 +00:00
b6051b4d2b Fix OpenRC init script
The shebang for OpenRC init scripts is now #!/sbin/openrc-run, and we
can also use the default start and stop functions built into OpenRC.

Signed-off-by: William Hubbs <w.d.hubbs@gmail.com>
Upstream-commit: e3772538c0eb5c1478075979d222485cb3bd8c91
Component: engine
2015-08-25 12:02:01 -05:00
ba5891cb58 Drop execute bit from openrc init script
Signed-off-by: William Hubbs <w.d.hubbs@gmail.com>
Upstream-commit: 1c0c68b18fe3a32f3e9915c3bf6ae50b69fee288
Component: engine
2015-08-25 12:00:54 -05:00
2bf0729522 Merge pull request #14868 from jeffminard-ck/rhel-init-detect-failure
Allow RHEL init script to detect daemon start pid failure
Upstream-commit: ebe27cb34ca5e91173b004e2602c99704350eb7c
Component: engine
2015-08-24 14:24:36 -07:00
dfdfccc5a6 Fix silent failure in RedHat sysvinit script
The docker script in contrib/init/sysvinit-redhat will fail silently on
a start if Docker is not installed in the default /usr/bin/ location.
While a non-zero exit code is returned the user will receive no visible
indication (i.e. error message) as to why Docker was not started.

This commit changes the logic so that in the case that the docker
executable is not found in the expected location or the user does not
have execute permissions on the executable appropriate error messages
are now shown to the user as well as exiting with a non-zero exit code

Signed-off-by: Rob Vesse <rvesse@dotnetrdf.org>
Upstream-commit: f8387f69042b222e5b0a5d91cf49a840e345f88d
Component: engine
2015-08-06 12:07:38 +01:00
8f4ab799ef systemd: set service type to notify.
Currently the service type is 'simple', the default, meaning that
docker.service is considered to be started straight after
spawning. This is incorrect as there is significant amount of time
between spawning and docker ready to accept connections on the passed
sockets. Docker does implement systemd socket activate and
notification protocol, and send the ready signal to systemd, once it
is ready. However for systemd to take those notifications into
account, the service file type should be set to notify.

Signed-off-by: Dimitri John Ledkov <dimitri.j.ledkov@intel.com>
Upstream-commit: d3e5179c291a7646c71f1ca608d6700026756f7c
Component: engine
2015-07-29 14:02:12 +01:00
5b6d4b1770 Allow RHEL init script to detect daemon start pid failure
If you have some kind of bogus `other_args` in `/etc/sysconfig/docker` the start script will report "started" but it's full of lies. This enhances the flow so that if the pidfile never shows up (failure to start) you get a proper failure message.

I also added dots for fun.

Signed-off-by: Jeff Minard <jeff.minard@creditkarma.com>
Upstream-commit: 6f8fdb8aa893b2d5f319d342614dd159e0c8bb83
Component: engine
2015-07-22 11:36:34 -07:00
45caf3ce23 Update init scripts to use docker daemon.
Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 346ce4f8d24de0db5ccc17151f2207cee10abc2e
Component: engine
2015-07-22 11:24:38 -07:00
974ab12463 Revert "contrib/init: unshare mount namespace for inits"
This reverts commit b6569b6b82df4c5e29ee8f5ebd9db7e36919cefd.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: d8592eaff8bddb6f29c48cc39dec70db884eda00
Component: engine
2015-06-15 10:35:17 -07:00
2c15e96c15 Fix docs URL in systemd service file.
Fixes #13799.

Signed-off-by: Eric-Olivier Lamey <eo@lamey.me>
Upstream-commit: dbf5e36fd6257ed237f76a65ccbae4124a4f0bdf
Component: engine
2015-06-08 10:21:43 +00:00
0faed528d2 Merge pull request #13039 from stevenbrichards/13031-Upstart
Fix check for upstart not detecting properly
Upstream-commit: 0256bbdebbc2fa7911c6e12bfae488fab7b30301
Component: engine
2015-05-28 10:38:55 -07:00
5dd5db33a8 Fixes #13031 - Check for upstart or init is not detecting properly
This will now properly check whether /etc/init.d/docker or service docker is
invoking the script and respond to the user accordingly.

Signed-off-by: Steven Richards <steven@axiomzen.co>
Upstream-commit: e5ff643aed78fb5dfb5e3fef518dfe56b82b3023
Component: engine
2015-05-28 09:52:05 -07:00
f3325976cc Increase upstart kill timeout to 20 seconds
Give Docker more time to kill containers before upstart kills Docker.
The default kill timeout is 5 seconds.
This will help decrease the chance of but not eliminate the chance of
orphaned container processes.

Signed-off-by: David Xia <dxia@spotify.com>
Upstream-commit: 2f9e7a067a7273a0f344c1c9a6397e4bb61d7554
Component: engine
2015-05-20 14:20:46 -04:00
961f3662e8 contrib/init: unshare mount namespace for inits
* openrc
* sysvinit-debian
* upstart

Signed-off-by: Vincent Batts <vbatts@redhat.com>
Upstream-commit: b6569b6b82df4c5e29ee8f5ebd9db7e36919cefd
Component: engine
2015-04-23 14:08:37 -04:00
e5cca0d2d7 Prevent Upstart post-start stanza from hanging
Once the job has failed and is respawned, the status becomes `docker
respawn/post-start` after subsequent failures (as opposed to `docker
stop/post-start`), so the post-start script needs to take this into
account.

I could not find specific documentation on the job transitioning to the
`respawn/post-start` state, but this was observed on Ubuntu 14.04.2.

Signed-off-by: Lewis Marshall <lewis@lmars.net>
Upstream-commit: 302e3834a0bfa860f9d06b42a2955b0cbd135c38
Component: engine
2015-03-31 01:56:16 +01:00
d4497c7a2b .: remove trailing white spaces
blame tibor this one ;-)
```
find . -type f -not -name '*.png' -not -name '*.go' -not -name '*.md'
-not -name '*.tar' -not -name '*.pem' -not -path './vendor/*' -not -path
'./.git/*' -not -path '*/testdata/*' -not -path './docs/*images*' -not
-path '*/testfiles/*' -not -path './bundles/*' -not -path
'./docs/*static*/*' -not -path './docs/*article-img/*' -exec grep -HnEl
'[[:space:]]$' {} \; | xargs sed -iE 's/[[:space:]]*$//'
```

Signed-off-by: Vincent Batts <vbatts@redhat.com>
Upstream-commit: 7617ec176d266650b19c2378ccab4aa41e6dc5a2
Component: engine
2015-03-25 13:38:17 -04:00
abd71318ca Revert "Dealing with trailing whitespaces"
The validation script from #10681 is too pedantic, and does not handle
well situations like:

```
cat <<EOF   # or <<-EOF
	Whether the leading whitespace is stripped out or not by bash
	it should still be considered as valid.
EOF
```

This reverts commit 4e65c1c319afffc325853b88c9aef0c42ec83482.

Signed-off-by: Tibor Vass <tibor@docker.com>
Upstream-commit: 0252ad0adc37a34b88fa908ae74a13b940febdcb
Component: engine
2015-03-25 10:04:56 -06:00
a64392e089 Dealing with trailing whitespaces
Created a validation that detects all trailing whitespaces from every
text file that isn't *.go, *.md, vendor/*,
docs/theme/mkdocs/tipuesearch*

Removed trailing whitespaces from every text file except from vendor/*
builder/parser/testfiles*, docs/theme/mkdocs/tipuesearch* and *.md

Signed-off-by: André Martins <martins@noironetworks.com>
Upstream-commit: 4e65c1c319afffc325853b88c9aef0c42ec83482
Component: engine
2015-03-17 03:34:01 +00:00
5506a9a27c Remove subdirectories MAINTAINERS files
Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
Upstream-commit: 89bdaa35e04b74b7c6528783e0f7b8154b2a3d31
Component: engine
2015-03-06 18:21:51 -08:00
2dc29a37bd Merge pull request #10598 from lsm5/core-file-size
no limit on core size
Upstream-commit: 9944f8b95453e3d0726fc037aaed41a98e72e070
Component: engine
2015-02-09 17:31:40 -08:00
2989e6a633 no limit on core size
set LimitCORE=infinity to ensure complete core creation,
allows extraction of as much information as possible.

Thanks to Ulrich Obergfell <uobergfe@redhat.com>
and Jeremy Eder <jeder@redhat.com>

Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org>
Upstream-commit: ae9cdbbde7824951b124a648e897ac4c291108e3
Component: engine
2015-02-09 19:04:50 +00:00
71dfbf9d9b Fixing stale pidfile issue when docker dies abruptly
Signed-off-by: Mike Leone <mleone896@gmail.com>

fixing indent

Signed-off-by: Mike Leone <mleone896@gmail.com>
Upstream-commit: 05d04843e6b80f131c07882c882f7e4da018a306
Component: engine
2015-02-09 14:01:12 -05:00
2a76864b4e contrib/sysvinit-redhat: unshare mount namespace
unshare the mount namespace of the docker daemon to avoid other pids
outside the daemon holding mount references of docker containers.

Signed-off-by: Vincent Batts <vbatts@redhat.com>
Upstream-commit: 6bb65864589fbd720622cbd795763d108999a366
Component: engine
2015-01-20 16:00:41 -05:00
89ba84c840 contrib/systemd: mount namespace and subtree flags
This systemd.exec setting will construct a new mount namespace for the
docker daemon, and use slave shared-subtree mounts so that volume mounts
propogate correctly into containers.

By having an unshared mount namespace for the daemon it ensures that
mount references are not held by other pids outside of the docker
daemon. Frequently this can be seen in EBUSY or "device or resource
busy" errors.

Signed-off-by: Vincent Batts <vbatts@redhat.com>
Upstream-commit: eb76cb2301fc883941bc4ca2d9ebc3a486ab8e0a
Component: engine
2015-01-20 14:22:04 -05:00
4ee7be3ff1 upstart: Don't emit "started" event until docker.sock is available
Fixes #6647: Other upstart jobs that depend on docker by specifying
"start on started docker" would often start before the docker daemon was
ready, so they'd fail with "Cannot connect to the Docker daemon" or
"dial unix /var/run/docker.sock: no such file or directory".

This is because "docker -d" doesn't daemonize, it runs in the
foreground, so upstart can't know when the daemon is ready to receive
incoming connections. (Traditionally, a daemon will create all necessary
sockets and then fork to signal that it's ready; according to @tianon
this "isn't possible in Go"[1]. See also [2].)

Presumably this isn't a problem with systemd init with its socket
activation. The SysV init scripts may or may not suffer from this
problem but I have no motivation to fix them.

This commit adds a "post-start" stanza to the upstart configuration
that waits for the socket to be available. Upstart won't emit the
"started" event until the "post-start" script completes.[3]

Note that the system administrator might have specified a different path
for the socket, or a tcp socket instead, by customising
/etc/default/docker. In that case we don't try to figure out what the
new socket is, but at least we don't wait in vain for
/var/run/docker.sock to appear.

If the main script (`docker -d`) fails to start, the `initctl status
$UPSTART_JOB | grep -q "stop/"` line ensures that we don't loop forever.
I stole this idea from Steve Langasek.[4]

If for some reason we *still* end up in an infinite loop --I guess
`docker -d` must have hung-- then at least we'll be able to see the
"Waiting for /var/run/docker.sock" debug output in
/var/log/upstart/docker.log.

I considered using inotifywait instead of sleep, but it isn't worth
the complexity & the extra dependency.

[1] https://github.com/docker/docker/issues/6647#issuecomment-47001613
[2] https://code.google.com/p/go/issues/detail?id=227
[3] http://upstart.ubuntu.com/cookbook/#post-start
[4] https://lists.ubuntu.com/archives/upstart-devel/2013-April/002492.html

Signed-off-by: David Röthlisberger <david@rothlis.net>
Upstream-commit: f42c0a53a38a2a141bec8768d0836a3726de4a83
Component: engine
2014-12-16 21:25:01 +00:00
54a35eb340 Merge pull request #8198 from jfrazelle/add-jessie-to-various-maintainers
Adding self to various maintainers files.
Upstream-commit: f0327c99dd6fb7353d76726e0adb67a1b5a98451
Component: engine
2014-10-28 19:35:28 -07:00
4a5c5e00b6 Fix system socket/service unit files
Two problems how they are today:

In the current systemd unit files it is impossible to have the
docker.service started at system boot.  Instead enableing docker.service
will actually enable docker.socket.  This is a problem, as that means
any container with --restart=always will not launch on reboot.  And of
course as soon as you log in and type docker ps, docker.service will be
launched and now your images are running.  Talk about a PITA to debug!
The fix is to just install docker.service when people ask docker.service
to be enabled.  If an admin wants to enable docker.socket instead, that
is fine and will work just as it does today.

The second problem is a common docker devel workflow, although not
something normal admins would hit.  In this case consider a dev doing
the following:

systemctl stop docker.service

docker -d
[run commands]
[^C]

systemctl start docker.service

Running docker -d (without -F fd://) will clean up the
/var/run/docker.sock when it exits.  Remember, you just ran the docker
daemon not telling it about socket actviation, so cleaning up its socket
makes sense!  The new docker, started by systemd will expect socket
activation, but the last one cleaned up the docker.sock.  So things are
just broken.  You can, today, work around this by restarting
docker.socket.  This fixes it by telling docker.socket that it is
PartOf=docker.service.  So when docker.service is
started/stopped/restarted docker.socket will also be
started/stopped/restarted.  So the above semi-common devel workflow will
be fine.  When docker.service is stopped, so is docker.socket,   docker
-d (without -F fd://) will create and delete /var/run/docker.sock.
Starting docker.service again will restart docker.socket, which will
create the file an all is happy in the word.

Signed-off-by: Eric Paris <eparis@redhat.com>
Upstream-commit: 053c3557b3198466ecfbe066fefdbab2a78771d5
Component: engine
2014-10-07 14:09:08 -04:00
8734c910c3 Adding self to various maintainers files.
Docker-DCO-1.1-Signed-off-by: Jessica Frazelle <jess@docker.com> (github: jfrazelle)
Upstream-commit: 6c60e8c7849742c111a2b0a5ad4ff88fc8e960ef
Component: engine
2014-09-29 15:43:07 -07:00
cfaf0bf98f Try to avoid issues when the Docker daemon restarts.
This change will allow the Docker daemon's init script to wait up to 5
minutes before being forcibly terminated by the initscript. Many
non-trivial containers will take more than the default 3 seconds to
stop, which can result in containers whose rootfs is still mounted and
will not restart when the daemon starts up again, or worse, orphan
processes that are still running.

Signed-off-by: Steven Merrill <steven.merrill@gmail.com>
Upstream-commit: 640d2ef6f54d96ac4fc3f0f745cb1e6a35148607
Component: engine
2014-09-18 08:21:00 -04:00
b1b3c2f243 Fix several minor issues with Debian sysvinit script
- add `set -e` to make failing commands bail the script
- remove trailing `exit 0` which is just extraneous anyhow
- adjust `status_of_proc` options to pass in `$DOCKER_DESC` so we get consistently styled messages like `Docker is running` or `Docker is not running` or `could not access PID file for Docker`

Signed-off-by: Andrew Page <admwiggin@gmail.com>
Upstream-commit: 478fdaf93353c70a26c0043dadb650fd2f101c40
Component: engine
2014-08-07 16:45:22 -06:00
4569bccd5e Systemd service should not restart on failure
This should not be done by default but used by adminsys with a drop-in.d file,
for buggy daemons which crash without known fixes.

Docker-DCO-1.1-Signed-off-by: Sébastien Luttringer <seblu@seblu.net> (github: seblu)
Upstream-commit: 533916fa6bb0b19fb887b5b0b2b704b224154b41
Component: engine
2014-07-28 11:50:24 +02:00
d687489711 Systemd .service should install .socket
And remove the WantedBy directive.

See: https://bugs.archlinux.org/task/41338

Docker-DCO-1.1-Signed-off-by: Sébastien Luttringer <seblu@seblu.net> (github: seblu)
Upstream-commit: 0f26195a8ddd0bde95865816576d827a9ed0727c
Component: engine
2014-07-28 00:18:14 +02:00
e1fb484158 Fix ordering in systemd service file
See: https://bugs.archlinux.org/task/41338

Docker-DCO-1.1-Signed-off-by: Sébastien Luttringer <seblu@seblu.net> (github: seblu)
Upstream-commit: fe68df36fc9c85ae30af9bf53a13e8af0534e613
Component: engine
2014-07-28 00:17:40 +02:00
6ae4c9014c update go import path and libcontainer
Docker-DCO-1.1-Signed-off-by: Victor Vieux <vieux@docker.com> (github: vieux)
Upstream-commit: b3ee9ac74e171e00f14027e39278013629e681b8
Component: engine
2014-07-24 22:19:50 +00:00
554507d5b7 contrib/init/systemd: add philips as MAINTAINER
As requested after #7021 add me as a maintainer alongside the sword
toting @lsm5.

Docker-DCO-1.1-Signed-off-by: Brandon Philips <brandon.philips@coreos.com> (github: philips)
Upstream-commit: 81307680142d5ddd8e80c70c5da8afc799318556
Component: engine
2014-07-17 11:57:16 -07:00
927ac2785f systemd unitfile requires docker.socket
modified:   contrib/init/systemd/docker.service

Docker-DCO-1.1-Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org> (github: lsm5)
Upstream-commit: 0bde827c3f01fc5ae99eb0b93170e75c99cd5d77
Component: engine
2014-07-14 18:08:38 -05:00
e091331e86 use systemd socket-activation by default
modified:   contrib/init/systemd/docker.service
	renamed:    contrib/init/systemd/socket-activation/docker.socket -> contrib/init/systemd/docker.socket
	deleted:    contrib/init/systemd/socket-activation/docker.service

Docker-DCO-1.1-Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org> (github: lsm5)
Upstream-commit: 076ac1d7d212c3a81a401a2fba8b9965bc26df16
Component: engine
2014-07-14 17:41:07 -05:00
5901c9dd26 add systemd MAINTAINERS file
new file:   contrib/init/systemd/MAINTAINERS

Docker-DCO-1.1-Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org> (github: lsm5)
Upstream-commit: 5105981431def23a7424a0c0c09095d815243ea9
Component: engine
2014-07-14 17:38:23 -05:00