From: Fam Zheng <famz@redhat.com>
To: "Alex Bennée" <alex.bennee@linaro.org>
Cc: "open list:All patches CC here" <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH v2 4/7] tests/docker: add basic user mapping support
Date: Thu, 26 Jan 2017 17:08:29 +0800 [thread overview]
Message-ID: <20170126090829.GG6879@lemon> (raw)
In-Reply-To: <20170124143346.22240-5-alex.bennee@linaro.org>
On Tue, 01/24 14:33, Alex Bennée wrote:
> Currently all docker builds are done by exporting a tarball to the
> docker container and running the build as the containers root user.
> Other use cases are possible however and it is possible to map a part
> of users file-system to the container. This is useful for example for
> doing cross-builds of arbitrary source trees. For this to work
> smoothly the container needs to have a user created that maps cleanly
> to the host system.
>
> This adds a -u option to the docker script so that:
>
> DEB_ARCH=armhf DEB_TYPE=stable ./tests/docker/docker.py build \
> -u --include-executable=arm-linux-user/qemu-arm \
> debian:armhf ./tests/docker/dockerfiles/debian-bootstrap.docker
>
> Will build a container that can then be run like:
>
> docker run --rm -it -v /home/alex/lsrc/qemu/risu.git/:/src \
> --user=alex:alex -w /src/ debian:armhf \
> sh -c "make clean && ./configure -s && make"
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>
> ---
> v2
> - write the useradd directly
> - change long option to --add-current-user
> ---
> tests/docker/docker.py | 15 +++++++++++++--
> 1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/tests/docker/docker.py b/tests/docker/docker.py
> index 37d83199e7..b85739a9e2 100755
> --- a/tests/docker/docker.py
> +++ b/tests/docker/docker.py
> @@ -25,6 +25,7 @@ import signal
> from tarfile import TarFile, TarInfo
> from StringIO import StringIO
> from shutil import copy, rmtree
> +from pwd import getpwuid
>
>
> DEVNULL = open(os.devnull, 'wb')
> @@ -149,13 +150,20 @@ class Docker(object):
> labels = json.loads(resp)[0]["Config"].get("Labels", {})
> return labels.get("com.qemu.dockerfile-checksum", "")
>
> - def build_image(self, tag, docker_dir, dockerfile, quiet=True, argv=None):
> + def build_image(self, tag, docker_dir, dockerfile,
> + quiet=True, user=False, argv=None):
> if argv == None:
> argv = []
>
> tmp_df = tempfile.NamedTemporaryFile(dir=docker_dir, suffix=".docker")
> tmp_df.write(dockerfile)
>
> + if user:
> + uid = os.getuid()
> + uname = getpwuid(uid).pw_name
> + tmp_df.write("\n")
> + tmp_df.write("RUN useradd -u %d -U %s" % (uid, uname))
> +
> tmp_df.write("\n")
> tmp_df.write("LABEL com.qemu.dockerfile-checksum=%s" %
> _text_checksum(dockerfile))
> @@ -225,6 +233,9 @@ class BuildCommand(SubCommand):
> help="""Specify a binary that will be copied to the
> container together with all its dependent
> libraries""")
> + parser.add_argument("--add-current-user", "-u", dest="user",
> + action="store_true",
> + help="Add the current user to images passwd")
s/images/image's/ ?
otherwise looks good. If you fix that, you can add
Reviewed-by: Fam Zheng <famz@redhat.com>
> parser.add_argument("tag",
> help="Image Tag")
> parser.add_argument("dockerfile",
> @@ -261,7 +272,7 @@ class BuildCommand(SubCommand):
> docker_dir)
>
> dkr.build_image(tag, docker_dir, dockerfile,
> - quiet=args.quiet, argv=argv)
> + quiet=args.quiet, user=args.user, argv=argv)
>
> rmtree(docker_dir)
>
> --
> 2.11.0
>
>
next prev parent reply other threads:[~2017-01-26 9:08 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20170124143346.22240-1-alex.bennee@linaro.org>
2017-01-24 14:33 ` [Qemu-devel] [PATCH v2 1/7] .travis.yml: don't specify CONFIG twice Alex Bennée
2017-01-24 14:33 ` [Qemu-devel] [PATCH v2 2/7] .travis.yml: split VM based builds Alex Bennée
2017-01-24 14:33 ` [Qemu-devel] [PATCH v2 3/7] .travis.yml: DEBUG MacOSX build Alex Bennée
2017-01-26 11:26 ` Fam Zheng
2017-01-26 12:46 ` Alex Bennée
2017-01-24 14:33 ` [Qemu-devel] [PATCH v2 4/7] tests/docker: add basic user mapping support Alex Bennée
2017-01-26 9:08 ` Fam Zheng [this message]
2017-01-24 14:33 ` [Qemu-devel] [PATCH v2 5/7] new debian-multiarch-cross.docker: a cross-compiling docker guest Alex Bennée
2017-01-26 10:53 ` Fam Zheng
2017-01-26 12:48 ` Alex Bennée
2017-01-24 14:33 ` [Qemu-devel] [PATCH v2 6/7] .shippable.yml: new CI provider Alex Bennée
2017-01-24 14:33 ` [Qemu-devel] [PATCH v2 7/7] qemu-options: remove stray space Alex Bennée
2017-01-26 11:15 ` Fam Zheng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170126090829.GG6879@lemon \
--to=famz@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.