From 4d076ec152b0b0a4ac47ce664962c3dd04afe7ae Mon Sep 17 00:00:00 2001 From: Bhasker Hariharan Date: Mon, 27 Jul 2020 19:37:08 -0700 Subject: [PATCH] Fix for gvisor-builder image. As it happens gvisor/tools/bazel.mk:88 useradd --uid $(UID) --non-unique --no-create-home \ adds the user-id to /var/log/lastlog which happens to be a sparse file except Go's tar support can't handle sparse files so it actually tries to allocate the file to seek to the end causing the VM to run out of disk space. See: https://github.com/moby/moby/issues/5419#issuecomment-193876183 The fix is to pass -l to useradd to prevent it from trying to add to lastlog. Fixes #3397 PiperOrigin-RevId: 323492591 --- tools/bazel.mk | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/bazel.mk b/tools/bazel.mk index 45d6007cf..88faa0190 100644 --- a/tools/bazel.mk +++ b/tools/bazel.mk @@ -79,13 +79,18 @@ ifneq (,$(BAZEL_CONFIG)) OPTIONS += --config=$(BAZEL_CONFIG) endif +# NOTE: we pass -l to useradd below because otherwise you can hit a bug +# best described here: +# https://github.com/moby/moby/issues/5419#issuecomment-193876183 +# TLDR; trying to add to /var/log/lastlog (sparse file) runs the machine out +# out of disk space. bazel-image: load-default @if docker ps --all | grep $(BUILDER_NAME); then docker rm -f $(BUILDER_NAME); fi docker run --user 0:0 --entrypoint "" --name $(BUILDER_NAME) \ $(BUILDER_BASE) \ sh -c "groupadd --gid $(GID) --non-unique $(USER) && \ $(GROUPADD_DOCKER) \ - useradd --uid $(UID) --non-unique --no-create-home \ + useradd -l --uid $(UID) --non-unique --no-create-home \ --gid $(GID) $(USERADD_OPTIONS) -d $(HOME) $(USER) && \ if [[ -e /dev/kvm ]]; then chmod a+rw /dev/kvm; fi" docker commit $(BUILDER_NAME) $(BUILDER_IMAGE)