Please view the git log to see all the minor changes made to the code. This document only tracks major/breaking changes.
- There is no default global timeout for starting services anymore. Previously,
if the services took more than 5 seconds to be brought up, they would
fail; the intent was to detect hanged containers (waiting on a dysfunctional
network connection, for instance) and make them fail early, but it has
proven to create more problems than it was solving - so the timeout has
been removed. If you need it, you can, as before, use the
S6_CMD_WAIT_FOR_SERVICES_MAXTIME
variable. - More unprivileged configurations are supported: you should now be able to use s6-overlay in containers created by Kubernetes, for instance.
/etc/s6-overlay/config/global_path
isn't provided or taken into account anymore. Instead, the initial value of PATH for all the services is inherited from thePATH
environment variable, that you can set in the Dockerfile.- Generated tarballs don't encode the version numbers anymore. (The download URLs provided by GitHub still encode the version numbers, so there is no possible confusion on what tarball you're downloading.)
- justc-envdir does not exist anymore: use s6-envdir with the new -L option if you need environment variables with unlimited length.
docker stop
now normally exits 0 (or any predefined exit code in/run/s6-linux-init-container-results/exitcode
) instead of 111.
- Completely revamp the build system and the installation system.
- Building is now a single
make
invocation. - No more self-extracting installer.
- One to five tarballs to be installed, depending on user needs.
- Only one of these tarballs is architecture-dependent.
- Building is now a single
- Use shell where beneficial. Execline is still used where it makes sense.
- Take advantage of new skaware.
- Stage 1 is now handled by s6-linux-init.
- The new
S6_CATCHALL_USER
variable can be used to run the catch-all logger as non-root.
- The new
- Stage 2 is now handled by s6-rc.
fix-attrs
,cont-init
/cont-finish
, and/etc/services.d
are still supported; under the hood, they're run as s6-rc services.- A
user
bundle is provided for users to put all their services in.
- Stage 1 is now handled by s6-linux-init.
- Move binaries out of the way.
- All skaware is installed under
/package
and accessible via/command
. - All binaries are accessed via PATH resolution, making it transparent.
/usr/bin
symlinks are provided in optional tarballs.- Some distributions will provide skaware binaries in their own packages;
those will likely be accessible via
/bin
or/usr/bin
, but the overlay scripts do not care.
- All skaware is installed under
- All in all this is a complete rewrite of s6-overlay, but the transition from 2.1.0.2 to 3.0.0.0 should be painless for users.
- Add a new self-extracting installer as an installation
option. It works correctly on all distros, whether or not
/bin
is a symlink to/usr/bin
or a directory.
- Add initial support for Docker's
USER
directive. - Add a new binary to the tarball (
s6-overlay-preinit
), and move creating a specific folder from the build-time to runtime.
- Fix issues with shells overwriting the
cd
binary #278 and tarballs having too-loose permissions #274.
- Starting with version
2.0.0.0
,with-contenv
no longer usess6-envdir
, instead it uses justc-envdir, a small fork that uses the entire contents of the files in the envdir. A new script is introduced,with-contenv-legacy
, in case you rely on the old behavior.
- Up to and including version
1.21.8.0
, the init system would calls6-sync
to sync disks when the container exited. This actually syncs all block devices on the hosts, which is likely not what you want to do. As of version1.22.0.0
, this is disabled by default, see the README on how to re-enable it.