Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docker-containers: Don't unconditionally prune images #79253

Merged
merged 1 commit into from Feb 5, 2020

Conversation

@benley
Copy link
Member

@benley benley commented Feb 5, 2020

Motivation for this change

NixOS has virtualisation.docker.autoPrune.enable for this functionality; we probably should not do it every time a container starts up.

(also, some trivial documentation fixes)

Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Ensured that relevant documentation is up to date
  • Fits CONTRIBUTING.md.

cc @yorickvP

NixOS has `virtualisation.docker.autoPrune.enable` for this
functionality; we should not do it every time a container starts up.

(also, some trivial documentation fixes)
@@ -220,10 +220,9 @@ let
++ map escapeShellArg container.cmd
);

ExecStartPre = ["-${pkgs.docker}/bin/docker rm -f ${name}"
"-${pkgs.docker}/bin/docker image prune -f"] ++

This comment has been minimized.

@timstott

timstott Feb 5, 2020
Contributor

I wasn't able to find out why this was added in the first place 5083439#diff-a632ec0d1be978f9f4d3736c79cc51c3R224.

I thought maybe as a mean to ensure the image is always pulled, however it couldn't have worked provided the image needs to be in a dangling state (SO about dangling images).

A better way to ensure the latest image is used (to avoid outdated local cache) would be to always pull the image, which @mkaito added in the same PR, but then removed due to this comment because it was systematically pulling. While we may not want to always pull the image, making this available as an option is a very valid use case.

This comment has been minimized.

@benley

benley Feb 5, 2020
Author Member

Hmm, good thought. I had assumed it was done to avoid leaving stale images around when it gets updated but perhaps it had more to do with the image pulling policy.

Kubernetes pods have an imagePullPolicy field that you can set to Always, IfNotPresent, or Never. We could emulate the first two of those easily, but Never is harder unless docker run has a flag that I haven't seen to do it.

I'll look into this a bit and open another PR to add an option to control pulling at some point.

@benley benley merged commit d04bdce into NixOS:master Feb 5, 2020
13 checks passed
13 checks passed
Evaluation Performance Report Evaluator Performance Report
Details
grahamcofborg-eval ^.^!
Details
grahamcofborg-eval-check-maintainers matching changed paths to changed attrs...
Details
grahamcofborg-eval-check-meta config.nix: checkMeta = true
Details
grahamcofborg-eval-darwin nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="ofborg"; } ./pkgs/top-level/release.nix -A darwin-tested
Details
grahamcofborg-eval-nixos nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="ofborg"; } ./nixos/release-combined.nix -A tested
Details
grahamcofborg-eval-nixos-manual nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="ofborg"; } ./nixos/release.nix -A manual
Details
grahamcofborg-eval-nixos-options nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="ofborg"; } ./nixos/release.nix -A options
Details
grahamcofborg-eval-nixpkgs-manual nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="ofborg"; } ./pkgs/top-level/release.nix -A manual
Details
grahamcofborg-eval-nixpkgs-tarball nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="ofborg"; } ./pkgs/top-level/release.nix -A tarball
Details
grahamcofborg-eval-nixpkgs-unstable-jobset nix-instantiate --arg nixpkgs { outPath=./.; revCount=999999; shortRev="ofborg"; } ./pkgs/top-level/release.nix -A unstable
Details
grahamcofborg-eval-package-list nix-env -qa --json --file .
Details
grahamcofborg-eval-package-list-no-aliases nix-env -qa --json --file . --arg config { allowAliases = false; }
Details
@benley benley deleted the benley:benley/docker-no-prune branch Feb 5, 2020
dtzWill added a commit to dtzWill/nixpkgs that referenced this pull request Feb 5, 2020
NixOS has `virtualisation.docker.autoPrune.enable` for this
functionality; we should not do it every time a container starts up.

(also, some trivial documentation fixes)

(cherry picked from commit d04bdce)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

2 participants
You can’t perform that action at this time.