summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBhasker Hariharan <bhaskerh@google.com>2020-07-27 19:37:08 -0700
committergVisor bot <gvisor-bot@google.com>2020-07-27 19:38:35 -0700
commit4d076ec152b0b0a4ac47ce664962c3dd04afe7ae (patch)
tree579bb6dc4241fc57bd0da7eb085786cacf3cba5f
parent18c246359663ae7e424f94225f11f87cc63eccd9 (diff)
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
-rw-r--r--tools/bazel.mk7
1 files changed, 6 insertions, 1 deletions
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)