Commit Graph

613 Commits

Author SHA1 Message Date
Justin Cormack
b5615a3714 Merge pull request #192 from w9n/fix_empty_container_config
allow ImageInspect.Config to be nil when parsing
2018-01-04 11:27:42 +00:00
Justin Cormack
9e65276160 Merge pull request #2821 from rgl/master
add the -gui flag to vbox run
2018-01-02 11:06:22 +00:00
Justin Cormack
1e97929ec5 Fix sriov flag on AWS
This needs to be set to nil if empty.

Signed-off-by: Justin Cormack <justin@specialbusservice.com>
2017-12-27 18:17:45 +00:00
Robin Winkelewski
175fadb3d4 add omitempty for yml config
Signed-off-by: Robin Winkelewski <w9ncontact@gmail.com>
2017-12-27 03:08:44 +01:00
Rui Lopes
f36b4a7e59 add the -gui flag to vbox run
Signed-off-by: Rui Lopes <rgl@ruilopes.com>
2017-12-24 10:15:02 +00:00
Ilya Dmitrichenko
142ebf6f82 Improve error message for new packages
Signed-off-by: Ilya Dmitrichenko <errordeveloper@gmail.com>
2017-12-18 16:46:00 +00:00
Ian Campbell
dd799eb230 Bump moby tool to d9d2a91780
656bd87fd2...d9d2a91780

d9d2a91 Merge pull request #193 from ijc/bugfix-191
307f13b Defer dockerRm until we are finished with the contents
ebd7228 Merge pull request #191 from ijc/reduce-memory-via-tempfiles
3045a80 Stream `docker export` directly to consumer
9f44acf Generate intermediate image into a temp file
9558740 Add cpu and mem profiling options

Reduces the memory usage substantially.

While here make some notes about the need to update src/cmd/linuxkit/build.go
where people might see them.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-12-14 10:34:23 +00:00
Robin Winkelewski
1b06de3136 fix inspect.Config usage
Signed-off-by: Robin Winkelewski <w9ncontact@gmail.com>
2017-12-14 07:11:17 +01:00
Ian Campbell
307f13b129 Defer dockerRm until we are finished with the contents
This was introduced by #191 but somehow did not trigger either for me in local
testing or in CI.

It did trigger in initial CI of https://github.com/linuxkit/linuxkit/pull/2811
which can be seen at https://linuxkit.datakit.ci/linuxkit/linuxkit/pr/2811?history=1637690296123e9a15307b3a41b290da6e27e7cc
The error is:

    Failed to docker rm container «...»: «...»: aufs: unmount error after retries: «...»: device or resource busy

No doubt because we were still holding an open fd while trying to remove the
container.

Unclear why this didn't repro for me (docker 17.11.0-ce with overlay2) or
whatever CI uses.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-12-13 11:44:32 +00:00
Rolf Neugebauer
0e1133281b Update all YAML files with new packages
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-12-08 16:25:13 +00:00
Rolf Neugebauer
9f175e1e6c Update the use of linuxkit/qemu to the alpine:3.7 base
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-12-08 16:25:13 +00:00
Rolf Neugebauer
86f12e15f0 Merge pull request #2796 from pcfdev-forks/master
Ensure VPNKit process is properly killed when errors occur
2017-12-08 11:26:49 +00:00
Ian Campbell
3045a80c85 Stream docker export directly to consumer
Rather than queueing up into a `bytes.Buffer`.

In my test case (building kube master image) this reduces Maximum RSS (as
measured by time(1)) compared with the previous patch from 2.8G to 110M. The
tar output case goes from 2.1G to 110M also. Overall allocations are ~715M in
both cases.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-12-06 16:41:42 +00:00
Ian Campbell
9f44acf8e3 Generate intermediate image into a temp file
All of the `output*` functions took a `[]byte` and immediately wrapped it in a
`bytes.Buffer` to produce an `io.Reader`. Make them take an `io.Reader` instead
and satisfy this further up the call chain by directing `moby.Build` to output
to a temp file instead of another `bytes.Buffer`.

In my test case (building kube master image) this reduces Maximum RSS (as
measured by time(1)) from 6.7G to 2.8G and overall allocations from 9.7G to
5.3G. When building a tar (output to /dev/null) the Maximum RSS fell slightly
from 2.2G to 2.1G. Overall allocations remained stable at around 5.3G.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-12-06 16:07:46 +00:00
Rolf Neugebauer
4a5e06a033 Merge pull request #2797 from pcfdev-forks/vpnkit-path
Allow vpnkit executable path to be specified
2017-12-06 13:23:45 +00:00
Justin Cormack
241e3a1bdb Connect cable on virtualbox networking
fix #2798

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-12-05 16:03:47 -06:00
Dave Protasowski
2d6f4c5484 Allow vpnkit executable path to be specified
Signed-off-by: Steve Hiehn <shiehn@pivotal.io>
Signed-off-by: Dave Protasowski <dprotaso@gmail.com>
2017-12-05 10:06:58 -05:00
Steve Hiehn
ec45349638 Register vpnkit publish port clean up function as a logrus.ExitHandler
Signed-off-by: Dave Protasowski <dprotaso@gmail.com>
2017-12-05 10:05:23 -05:00
Dave Protasowski
c9b4f8306a Ensure VPNKit process is properly killed when errors occur
The log.Fatal* calls will leak the vpnkit process since
defer functions are not invoked when os.Exit(int) is invoked

We register an ExitHandler with logrus - that'll be invoke when
log.Fatal* is called

Signed-off-by: Steve Hiehn <shiehn@pivotal.io>
Signed-off-by: Dave Protasowski <dprotaso@gmail.com>
2017-12-05 09:48:09 -05:00
Ian Campbell
ce639e8080 linuxkit: implement docker image dependencies for pkg build.
This allows the `linuxkit/kubernetes` "image-cache" packages to use a standard
`linuxkit pkg build` based flow rather than requiring surrounding scaffolding.

Fixes #2766. Compared with the original (actually, the second) proposal made in
issue #2766, the field is `docker-images` rather than `images` to allow for
future inclusion of e.g. `containerd-images`.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-12-04 14:14:45 +00:00
Ian Campbell
98d46945d1 linuxkit: Use docker image «foo» consistently
In preference to the `docker «foo»` shortcut/aliases.

Better to be more specific.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-12-04 12:12:41 +00:00
Ian Campbell
8eed6a4b38 linuxkit: Rename Pkg.pkgPath to Pkg.path
Previous name a bit stuttery.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-12-04 12:12:41 +00:00
Justin Cormack
090abf3254 Merge pull request #2790 from justincormack/vbox
Add VirtualBox support to linuxkit run
2017-12-02 11:01:51 +00:00
Justin Cormack
3251f67015 Add VirtualBox support to linuxkit run
You can use `linuxkit run vbox ...` to run using Oracle VirtualBox.
ISO or raw should be supported, and you can specify EFI.

Some more options may be useful in future.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-12-01 21:48:21 +00:00
Ian Campbell
d03e6d65e2 linuxkit pkg: include linuxkit tool's version info in labels
Signed-off-by: Ian Campbell <ijc@docker.com>
2017-12-01 13:59:45 +00:00
Ian Campbell
13adecbc3e linuxkit: move version info to subpackage
Will avoid circular includes when I reference from pkglib too.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-12-01 13:55:43 +00:00
Rolf Neugebauer
9a83407986 Merge pull request #2782 from ijc/hyperkit-net-fix
hyperkit: split network option into 3
2017-12-01 11:06:19 +00:00
Ian Campbell
0d9de644b8 hyperkit: split network option into 3
vpnkit mode has one or two arguments (eth socket and port control socket).

If splitting into only 2 then
    vpnkit,vpnkit-state/eth.sock,vpnkit-state/port.sock
becomes
    2: vpnkit
    1: vpnkit-state/eth.sock,vpnkit-state/port.sock
rather than
    0: vpnkit
    1: vpnkit-state/eth.sock
    2: vpnkit-state/port.sock
as desired.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-11-29 15:12:30 +00:00
Justin Cormack
6e9b1bb09a Add support for newer AWS networking types
- ENA networking is what the very new (and bare metal) machines have
- sriov "simple" mode is Intel VF passthrough

I reflect the underlying APIs, which is bool for ENA and a string
for sriov even though there is currently only one valid sriov option...

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-11-29 14:46:48 +00:00
Ian Campbell
1f6c1a59ca linuxkit pkg: Add config field to build.yml
This is a `moby.ImageConfig` struct which is marshalled into JSON and added as
the `org.mobyproject.config` label on the built image.

Convert `pkg/sysctl` as PoC.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-11-28 12:01:39 +00:00
Ian Campbell
f9893d9a9b Fixup test after Image → ImageConfig split.
The syntax used for the yaml definitions is changed by the need to include the
substruct in the struct literal.

For the label switch to `ImageConfig` directly, which is actually more correct
in that it avoids spurious `name` and `image` fields in the label.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-11-27 14:47:21 +00:00
Ian Campbell
aec82c4cdf Split config-related fields of Image into a substruct.
Where "config-related" here means "ones you might find in the
"org.mobyproject.config" label on an image.

By making this new struct an anonymous member of the existing Image struct the
Go json parser does the right thing (i.e. inlines into the parent) when parsing
a complete image (from a yml assembly) by default. The Go yaml library which we
use requires a tag on the anonymous field to achieve the same.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-11-27 14:16:59 +00:00
Ian Campbell
ae53577078 linuxkit pkg: allow skipping build before push
If doing the build separately from pushing (as I am intending in
https://github.com/linuxkit/kubernetes/pull/8/) it is desirable to avoid a
second build when pushing.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-11-24 09:52:27 +00:00
Justin Cormack
83522d81fd Merge pull request #2761 from justincormack/restore-build
Restore linuxkit build
2017-11-21 10:21:39 +00:00
Justin Cormack
ca0b1309b0 Update vendoring for moby/tool
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-11-20 17:06:47 +00:00
Justin Cormack
3389f89c44 Create tmp dir in case required
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-11-20 16:50:58 +00:00
Ian Campbell
cef9d11f58 Only create metadata if file is non-zero sized
The recent iso9660wrap vendoring bump means this does now work, but it seems
pointless in this case so skip.

Relates to https://github.com/linuxkit/kubernetes/issues/4

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-11-20 15:26:51 +00:00
Ian Campbell
a5e5d42368 Move metadata ISO creation to common code
This code was identical in the QEMU and HyperKit cases. Move it to util.go and
wrap it in a function, with minimal changes for returning an error.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-11-20 15:22:02 +00:00
Ian Campbell
db9a783821 Bump iso9660wrap to baf8d62ad315
Reduces the linuxkit binary by 12k by removing The Raven. Also allows zero
sized files to be created, see https://github.com/linuxkit/kubernetes/issues/4

4606f848a0...baf8d62ad3

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-11-20 15:17:57 +00:00
Justin Cormack
eef8ab7757 Add linuxkit build, using vendored moby/tool as a library
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-11-20 14:48:48 +00:00
Justin Cormack
6395e339b9 Do not error if cache/config directory not specified
Just use the default. Easier to use as an external library.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-11-20 13:52:53 +00:00
Justin Cormack
c9bb1ecdf1 Add Cgroups to runtime config
This will create the list of cgroups specified

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-11-17 13:22:38 +00:00
Justin Cormack
a8dacba2c5 Only add in ttyS1 to kernel cmdline on Packet if not there already
This is not in most examples, but is in the Packet example, and
causes a duplicated console.

fix #2735

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-11-15 15:39:08 +00:00
Dave Protasowski
f598d9aff2 allow hyperkit console input/output to be redirected
Signed-off-by: Dave Protasowski <dprotaso@gmail.com>
Signed-off-by: Steve Hiehn <shiehn@pivotal.io>
2017-11-14 11:44:51 -05:00
Rolf Neugebauer
581cbdd1e8 Merge pull request #2701 from rn/vpnkit
Add support for publish port on localhost to the hyperkit backend
2017-11-10 13:29:02 +00:00
Rolf Neugebauer
4b9bf071e5 Update hyperkit vendoring
This includes using ftruncate for speedier disk creation

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-11-10 11:52:45 +00:00
Rolf Neugebauer
bc84fab42f vendor: remove github.com/satori/go.uuid
With the switch to github.com/satori/go.uuid this is no
longer needed. Strangely, it was not in vendor.conf...

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-11-10 11:52:45 +00:00
Rolf Neugebauer
638f15e1f8 tool/qemu: Switch to use github.com/google/uuid
With the hyperkit backend switched to this UUID package
switch qemu as well.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-11-10 11:52:44 +00:00
Rolf Neugebauer
c45179dce8 tool/hyperkit: Rename uuid.vpnkit to vpnkit.uuid
Other vpnkit related files start with vpnkit too.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-11-10 11:52:44 +00:00
Rolf Neugebauer
69501a8b26 tool/hyperkit: Add ability to expose port on localhost
When hyperkit is used with VPNKit we can "publish" VM ports
on localhost by using an API to the VPNKit process.

This commit adds a "-publish" flag to the hyperkit backend
exposing this functionality. "-publish" can be used multiple
times and is used the same way as for the qemu backend.

Other changes:
- Use 'github.com/google/uuid' as the 'uuid' package since
  VPKNkit uses it
- use 'vpnkit' prefix instead of 'vpnKit'
- Improve logging

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-11-10 11:52:44 +00:00