Commit Graph

72 Commits

Author SHA1 Message Date
Ashley Cui c8002d9739 Add support for secret mounts
Add support for secrets. Secrets is a two-part flag that allows secret files to
be accessed for a certain RUN instruction, but not any other
instructions, as well as now showing up in the final image.

Signed-off-by: Ashley Cui <acui@redhat.com>
2021-04-23 09:19:43 -04:00
Valentin Rothberg dcd2a92e56 use new containers/common/libimage package
Move all code related handling container image over to the new
`libimage` package in containers/common.  The new package is an
attempt to consolidate the code across the containers tools under the
github.com/containers umbrella.

The new `libimage` packages provides functionality to perform all kinds
of operations for managing images such as local lookups, pushing,
pulling, listing, removing, etc.

The following packages have been moved over the containers/common:

`manifests` -> `common/image/manifests`
`pkg/manifests` -> `common/pkg/manifests`
`pkg/supplemented` -> `common/pkg/supplemented`

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-04-22 17:39:00 +02:00
Daniel J Walsh 08201577e5
Remove some stuttering on returns errors
Golangs os.* functions return the name of the file/directory they
fail to use.  We should not wrap these errors with the file/directory
to use names, causes stuttering when the user sees the errors, and looks
bad having huge error messages.

Since this is just code cleanup, existing tests should handle the
changes.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-04-03 06:03:13 -04:00
Daniel J Walsh 7b4dd106b7
Export parse.Platform string to be used by podman-remote
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-03-30 18:07:17 -04:00
Daniel J Walsh b5eac0b88d
Isolation strings, should match user input
When we parse isolation we expect users to input chroot, oci, rootless.

So when we translate the constants back to strings, we should use the
same values.

These human names need to be passed over the podman-remote build
bindings, so we need to make them match.

Also docker describes an isolation of "default", which we should also
handle for potential scripts.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-02-23 13:26:51 -05:00
Daniel J Walsh 4704e6cb3f
Eliminate the use of containers/building import in pkg subdirs
We want to shrink the size of the import when importing pkg from
buildah. This should help us shrink the size of the golang bindings
in podman.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-02-12 12:43:08 -05:00
Daniel J Walsh c8f8b66bf7
Fix handling of TMPDIR environment variable
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1900822

Currently we are not passing the TMPDIR to the destination context
so when copying to containers storage we always fall back to /var/tmp.

This change sets the destination to match the source, so we can better
handle the storage.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-01-07 16:14:05 -05:00
Daniel J Walsh 47e4c3ce50
Only grab the OS, Arch if the user actually specified them
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-01-06 06:44:39 -05:00
Daniel J Walsh 7d9b57e9e1
Use --arch and --os and --variant options to select architecture and os
Remove --override-os and --override-arch flags.

Also use --platform option if specified when generating the SystemContext.
Conflict --platform option with --os, --arch and --variant options.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2021-01-06 06:43:13 -05:00
Josh Soref c7963db369 Spelling
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
2020-12-21 16:47:18 -05:00
Eduardo Vega 1f4e751770 Add U volume flag to chown source volumes
Signed-off-by: Eduardo Vega <edvegavalerio@gmail.com>
2020-12-16 14:07:26 -06:00
Daniel J Walsh 0cd2554858
Throw errors when using bogus --network flags
Currently if you give a bogus --network flag,
buildah just ignores it and continues on.

This change will throw proper errors.

Add tests to make sure it works correctly.

Also remove some stuttering to clean up error messages.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-12-02 10:03:07 -05:00
Nalin Dahyabhai 09b787a0a3 CI: re-enable several linters
When we carried over the linting configuration from podman, we carried
over the list of checkers that were disabled for podman's sake, even
ones that don't complain about the code in this repository.

Make trivial changes to make gosimple happy.

Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
2020-09-30 13:00:17 -04:00
TomSweeneyRedHat bbd82c03c7 Change call to Split() to safer SplitN()
Change calls to Split to SplitN when we are splitting on an "=" sign to make sure
we're not over chopping what the caller requested.

I started this search after seeing https://github.com/containers/podman/pull/7759.
I'll do similar for Podman, but initial results on my search is order of
magnitudes bigger there.

Signed-off-by: TomSweeneyRedHat <tsweeney@redhat.com>
2020-09-23 18:10:52 -04:00
Daniel J Walsh 07732c3eab
Fix errors found in coverity scan
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-08-13 09:04:36 -04:00
Daniel J Walsh d05957a6f6
Change namespace handling flags to better match podman commands
Podman namespaces flags handle the options slightly differently.

Specifically namespace flag `container` is very different.
Replace the `container` option with `private` to better match podman
but continue to support `container`

Similarly Podman expects --network ns:/PATH to allow the indication of a
path to a precreated network namespace.  Buildah just supported
--network /PATH, buildah will now support both formats, but document
ns:/path.

Finally use Aliases for fix some duplicated code in buildah.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-08-12 16:04:57 -04:00
bors[bot] 42e0fed818
Merge #2443
2443: Allow "readonly" as alias to "ro" in mount options r=rhatdan a=mariushoch

Apparently docker supports this as well, see [Use a read-only volume](https://docs.docker.com/storage/volumes/#use-a-read-only-volume) in the docker docs.

#### What type of PR is this?

/kind bug

#### What this PR does / why we need it:
To be fully compatible with docker in this regard.

#### How to verify it

With a mount option like `type=bind,source=/var/source,target=/src,readonly`.

```release-note
None
```



Co-authored-by: Marius Hoch <hoo@online.de>
2020-07-09 13:38:19 +00:00
Marius Hoch ac00f570fe Allow "readonly" as alias to "ro" in mount options
Apparently docker supports this as well, see
https://docs.docker.com/storage/volumes/#use-a-read-only-volume

Signed-off-by: Marius Hoch <hoch.m00@gmail.com>
2020-07-08 17:03:36 +02:00
Marius Hoch 544f19962f Ignore OS X specific consistency mount option
Per https://docs.docker.com/storage/bind-mounts/#configure-mount-consistency-for-macos
this is just another way to specify the already ignored
"cached" and "delegated" mount options.

Signed-off-by: Marius Hoch <hoch.m00@gmail.com>
2020-07-08 17:02:01 +02:00
Daniel J Walsh 56481d2f95
Rootless Buildah should default to IsolationOCIRootless
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-07-08 05:18:17 -04:00
dependabot-preview[bot] 8f7c99bed1 Bump go.etcd.io/bbolt from 1.3.4 to 1.3.5
Bumps [go.etcd.io/bbolt](https://github.com/etcd-io/bbolt) from 1.3.4 to 1.3.5.
- [Release notes](https://github.com/etcd-io/bbolt/releases)
- [Commits](https://github.com/etcd-io/bbolt/compare/v1.3.4...v1.3.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-07-01 11:04:01 +02:00
Qi Wang da530c0ed5 Use c/common/pkg/auth in login/logout
use shared code for login/logout from c/common

Signed-off-by: Qi Wang <qiwan@redhat.com>
2020-04-17 16:27:03 -04:00
Brandon Lum 40df1c6e3b Fix errorf conventions
Signed-off-by: Brandon Lum <lumjjb@gmail.com>
2020-04-04 01:12:25 +00:00
Daniel J Walsh cca09881c3
Repair buildah so it can use containers.conf on the server side
In porting containers.conf to libpod, we found that buildah needed
to handle the containers.conf on the server side rather then from
the CLI.

Since the `podman-remote build` would probably not have the same content
as containers.conf on the server, the processesing of the defaults needs
to be handled in imagebuildah.  The CapAdd and CapDrop values need to be
passed in.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2020-02-10 09:41:31 -05:00
Sascha Grunert 6417a9a074 Allow users to set OS and architecture on bud
When building images we now allow the architecture and operating system
to be overwritten via the new `--os` and `--arch` flags. This allows the
use case of packing pre-built or cross-compiled binaries into container
images with specifying the correct environment. The `--platform` flag
now takes the `os/arch` format into account as well.

Signed-off-by: Sascha Grunert <sgrunert@suse.com>

Closes: #2097
Approved by: rhatdan
2020-01-21 12:25:09 +00:00
Daniel J Walsh 09d1c24e3d Add support for containers.conf
This is a rework of Qi Wang's patches.
Import package pkg/config from containers/common to read containers.conf
This patch allows users to specify default values stored in containers.conf
that will modify the behaviour of buildah tool.

Signed-off-by: Qi Wang <qiwan@redhat.com>
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>

Closes: #2011
Approved by: TomSweeneyRedHat
2020-01-15 17:24:36 +00:00
TomSweeneyRedHat 6941254c29 Fix option handling for volumes in build
If the volume option was specified like: `--volume "${HOME}/.cache/zae9ujei:/myvol:rw,Z"`,
the COBRA code that processed the input from the user was considering the value to be a
SliceVar with two volumes `${HOME}/.cache/zae9ujei:/myvol:rw` and `Z` due to the comma.

Converted the COBRA code to consider the input as an ArrayVar instead and the value is
handled appropriately.  Also increased the testing to catch this going forward.

Addresses: #2000

Signed-off-by: TomSweeneyRedHat <tsweeney@redhat.com>

Closes: #2039
Approved by: rhatdan
2019-12-22 15:06:05 +00:00
Daniel J Walsh e53fc16b9f
Set the TMPDIR for pulling/pushing image to $TMPDIR
Or set it to /var/tmp if the user did not specify.

Currently certain large workloads can not be handled because users are running
out of space on pulls/ and pushes.  Containers/image stores data temporarily in
the file system.  This allows the user to overide the location of the temporary
storage.

Also update containers/image to v5.0.1

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2019-12-18 14:33:15 -05:00
Daniel J Walsh cd88667465 Ran buildah through codespell
Thanks to Dmitry Smirnov @onlyjob for suggesting this tool.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>

Closes: #1985
Approved by: TomSweeneyRedHat
2019-11-20 17:38:41 +00:00
Nalin Dahyabhai 691c394956 buildah: add a "manifest" command
Add an initial version of a "manifest" command.

Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>

Closes: #1902
Approved by: rhatdan
2019-10-28 15:15:35 +00:00
Nalin Dahyabhai f0cf07bb60 Move to containers/image v5.0.0
Bump to containers/image's 5.0 release.

Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>

Closes: #1902
Approved by: rhatdan
2019-10-28 15:15:34 +00:00
Miloslav Trmač 797e618cbe Update c/image to v4.0.1
This requires updating all import paths throughout.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>

Closes: #1891
Approved by: vrothberg
2019-10-04 07:34:03 +00:00
Daniel J Walsh e58b898962 Move devices code to unit specific directory.
This change is required to allow podman for windows to build.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>

Closes: #1855
Approved by: TomSweeneyRedHat
2019-09-13 11:13:10 +00:00
Daniel J Walsh 20a33e0791 Add --devices flag to bud and from
Some Dockerfiles (fuse-overlay) require additional devices to be in the
build environment.

This patch allows the user to specify additional devices.

Also I noticed that CapAdd and CapDrop was not working in buildah bud situations,
so this patch also fixes this.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>

Closes: #1820
Approved by: @TomSweeneyRedHat
2019-09-07 17:32:43 +00:00
Matthew Heon ab0286f7e3 Add security-related volume options to validator
Also, ensure ordering is correct on other entries. The current
code will increment *after* checking for validity in some cases,
which allows such options as '-v /tmp:/test1:ro,rw' to pass
validation when they obviously don't make much sense.

Signed-off-by: Matthew Heon <matthew.heon@pm.me>

Closes: #1794
Approved by: rhatdan
2019-08-16 10:54:18 +00:00
Giuseppe Scrivano 1ac63a264d rootless, overlay: use fuse-overlayfs
when running in rootless mode, use fuse-overlayfs for mounting the
overlay file system on the host.  Then create a bind mount inside the
container.

Closes: https://github.com/containers/buildah/issues/1741

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>

Closes: #1743
Approved by: rhatdan
2019-07-29 23:46:00 +00:00
Sascha Grunert 6b214d2921 Add golint linter and apply fixes
This commit enabled to golint linter in golangci-lint and applies all
necessary fixes.

Signed-off-by: Sascha Grunert <sgrunert@suse.com>

Closes: #1740
Approved by: rhatdan
2019-07-27 09:45:49 +00:00
Nalin Dahyabhai be51b9bd24 Update to match updated runtime-tools API
Some method argument types changed in runtime-tools. Compensate.

Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>

Closes: #1720
Approved by: vrothberg
2019-07-17 12:41:32 +00:00
Qi Wang 130cf4516f Add --mount for buildah run
support mount type of bind and tmpfs

Signed-off-by: Qi Wang <qiwan@redhat.com>

Closes: #1673
Approved by: rhatdan
2019-07-02 08:48:55 +00:00
Qi Wang 0f7f7a1a9d import method ValidateVolumeOpts from libpod
move ValidateVolumeOpts from libpod to buildah so libpod can vendor it in.

Signed-off-by: Qi Wang <qiwan@redhat.com>

Closes: #1698
Approved by: rhatdan
2019-06-29 10:00:13 +00:00
Jordan Webb 5892f9db57 Support --dns=none like podman
Signed-off-by: Jordan Webb <jordemort@github.com>

Closes: #1649
Approved by: giuseppe
2019-06-11 07:20:50 +00:00
Qi Wang 78dcf2fdaf fix bug --cpu-shares parsing typo
close #1464

fix the paring typo cpu-shared of --cpu-shares.
fix expect value in from.bats

Signed-off-by: Qi Wang <qiwan@redhat.com>

Closes: #1662
Approved by: TomSweeneyRedHat
2019-06-10 20:14:13 +00:00
Daniel J Walsh bcc5e51a94 Add support for Overlay volumes into the container.
Overlay mounts allow buildah bud and buildah from to
specify a directory on the disk that will be mounted
as an overlay into the container, where the overlay can be written to
but when the RUN or buildah run exits, the modified files will dissapear.

The basic idea is to be able to mount cache from the disk for things like yum/dnf/apt
to be able to be used and modified in the contianer on a run command, but to be
kept fresh for each RUN.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>

Closes: #1560
Approved by: giuseppe
2019-05-20 12:54:10 +00:00
Daniel J Walsh 3a30a6f8d8 Export buildah validate volume functions so it can share code with libpod
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>

Closes: #1560
Approved by: giuseppe
2019-05-20 12:54:10 +00:00
Qi Wang 59da11d4b4 add buildah login/logout & fix authfile path
Fix the bug that buildah reads /var/run/containers.. as authentication file.(in readme files it should be /run/containers/uid).
Add `buildah login`, `buildah logout` to close #1329, enable to use buildah login before running buildah bud for multi-stage bud and avoiding using --creds flag.

Signed-off-by: Qi Wang <qiwan@redhat.com>

Closes: #1501
Approved by: rhatdan
2019-05-02 21:59:12 +00:00
Daniel J Walsh 0e30da6de0 Fix Transient Mounts
buildah bud is ignoring --volumes flag.

This patch parses the volumes and then passes them into the builder to be used.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>

Closes: #1559
Approved by: vrothberg
2019-04-29 12:05:39 +00:00
baude 34e7eba408 allow podman to build a client for windows
the podman remote-client for windows pulls in some buildah code for
things like commit and build.  we need to perform some slight
refactoring of buildah code to accomodate that build.

Signed-off-by: baude <bbaude@redhat.com>

Closes: #1551
Approved by: rhatdan
2019-04-26 19:16:11 +00:00
James Cassell cd1b62a9ad auto pass http_proxy to container
- pass all proxy env vars
- --http-proxy option for bud and from
- bash_completion and docs

Signed-off-by: James Cassell <code@james.cassell.me>

Closes: #1525
Approved by: giuseppe
2019-04-17 14:33:46 +00:00
Qi Wang d43787be28 add --dns* flags to buildah bud
use --dns* flags to change /etc/resolv.conf in the container during the build.
Signed-off-by: Qi Wang <qiwan@redhat.com>

Closes: #1491
Approved by: rhatdan
2019-04-12 21:01:30 +00:00
Daniel J Walsh 6544c55416 Fix handling of Slices versus Arrays
Cobra does not allow a "," in a StringSlice, so we should
be using StringArrays.  This fixes issues with setting
security-opts level flags.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>

Closes: #1467
Approved by: TomSweeneyRedHat
2019-04-05 01:00:20 +00:00