Commit Graph

745 Commits

Author SHA1 Message Date
Dave Tucker
94f2d2cd9a linuxkit: Fix qemu run behaviour when file does not exist
This commit fixes an issue reported on Slack where `linuxkit run` will
assume that a file that is neither a kernel or iso must be a disk image
without first checking that it exists. This would result in `qemu-img`
attempting to create a disk with 0 size due to the default behaviour of
creating disk images that do not exist.

Signed-off-by: Dave Tucker <dt@docker.com>
2017-07-13 11:46:22 +01:00
Justin Cormack
b4804b69e8 Add Contributing doc
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-07-12 12:04:33 +01:00
Justin Cormack
107c014a9d Re-run vendoring
Latest `vndr` has changed its algorithm a bit. It also pointed out that we were missing
some things.

Move the `vendor` directory up to the `linuxkit` command, else it gets confused by packages
that have Go code in.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-07-11 13:12:00 +01:00
Justin Cormack
51b4e20154 Merge pull request #103 from ijc/master
Build for Darwin and Windows
2017-07-11 11:07:36 +01:00
Stefan Bourlon
846e814a7f Backend vCenter: Remove network param for push cmd
The network parameter is not used in the command
"linuxkit push vcenter ..."

Signed-off-by: Stefan Bourlon <stefan.bourlon@ca.com>
2017-07-10 14:03:55 -07:00
Justin Cormack
3ee4fdc43a Error if there are duplicate service names
Continue to allow onboot to have duplicates as we do not run simultaneously
so that is ok (and we number them anyway), but services are run together
so we will get a runtime error if duplicated as this is the containerd/runc
id.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-07-10 14:50:04 +01:00
Ian Campbell
3c5fad4539 Remove dependency on docker/docker/cli
We were pulling in this whole stack of packages just for `trust.ReleasesRole`.
Just define it locally.

Signed-off-by: Ian Campbell <ian.campbell@docker.com>
2017-07-10 14:38:21 +01:00
Justin Cormack
ec7e73b304 Merge pull request #100 from justincormack/userns
Add partial user namespace support
2017-07-10 14:30:30 +01:00
Stefan Bourlon
ffef020a09 Backend vCenter: add the datacenter parameter
Signed-off-by: Stefan Bourlon <stefan.bourlon@ca.com>
2017-07-07 14:32:14 -07:00
Stefan Bourlon
ea5114dc93 Backend vCenter: Upload ISO only with linuxkit push
Signed-off-by: Stefan Bourlon <stefan.bourlon@ca.com>
2017-07-07 14:26:58 -07:00
Dennis Chen
3a9c88c0c5 ARM64: Remove the hardcode of virtual machine type
Current implementation hardcodes the virtual machine as
"q35" for x86, this patch remove this hardcode and config
the machine type according to the arch the VM is running.
Also, in order to make sure the qemu can run on arm64 platform,
we need to specify the vcpu type in the command line.

Signed-off-by: Dennis Chen <dennis.chen@arm.com>
2017-07-07 21:54:15 +08:00
Ian Campbell
c3edfec759 revendor runc + runtime-spec to match containerd 8e1a04ff9ee3
Note that various fields have changed moved around in the JSON as a result:

* `Platform` has been removed.
* `Process` is now a pointer.
* `OOMScoreAdj` has moved into `Process`, from `Linux.Resources` (resolving a
  TODO here).

Also updates golang.org/x/sys which is less critical.

Signed-off-by: Ian Campbell <ian.campbell@docker.com>
2017-07-06 15:34:01 +01:00
Justin Cormack
a73c3d3667 Add partial user namespace support
This adds the OCI parts needed into the yaml, but there are still
permissions issues in practise so marked as experimental.

It may just need further documentation to resolve the issues.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-07-03 14:45:58 +01:00
Rolf Neugebauer
4a9c00a5e0 src: Update qemu image to latest
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-07-01 19:24:15 +01:00
Justin Cormack
0acaaa71fe Assign each container a uid and gid it can use
In order to support not running containers as root, allocate
each of them a uid and gid, a bit like traditional Unix system
service IDs. These can be referred to elsewhere by the name of
the container, eg if you wish to create a file owned by a
particular esrvice.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-06-30 17:40:08 +01:00
Justin Cormack
66b4aed239 Add support for ambient capabilities
Allow setting ambient capabilities, as a seperate option to the standard
ones. If you are running as a non root user you should use these.

Note that unless you add `CAP_DAC_OVERRIDE` and similar permissions you
need to be careful about file ownership. Added support to set ownership
in the `files` section to help out with this.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-06-30 14:08:16 +01:00
Justin Cormack
70c5c2e1a0 Merge pull request #94 from davefreitag/ibm-vhd
Adding 'dynamic-vhd' Output Format
2017-06-27 15:29:20 +01:00
Tycho Andersen
c2e460fee5 check that caps are valid
Rather than build the image and have something weird happen, let's check
that the capabilities specified are actually valid capabilities.

Signed-off-by: Tycho Andersen <tycho@docker.com>
2017-06-27 08:25:10 -06:00
Dave Freitag
b605e61d1f Adding dynamic-vhd Output Format
Adding support for the dynamic-vhd output format.

Signed-off-by: Dave Freitag <dcfreita@us.ibm.com>
2017-06-27 08:53:56 -05:00
Ian Campbell
7151f1af52 qemu: Add -enable-kvm to force (attempted) use (or not) of KVM
The default is set by probing for /dev/kvm. Use of KVM can be forcibly disabled
with `-enable-kvm=false`. Note that passing `-enable-kvm=true` when `/dev/kvm` is
not present still boots but complains:

    Could not access KVM kernel module: No such file or directory
    failed to initialize KVM: No such file or directory
    Back to tcg accelerator.

Signed-off-by: Ian Campbell <ian.campbell@docker.com>
2017-06-27 12:20:25 +01:00
Justin Cormack
e7ebabdb05 Split out into a small stub command line and a library
- this is pretty much the smallest change to split this out and it
  exposes a few things that can be improved later
- no change to logging yet

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-06-21 16:19:31 -07:00
Justin Cormack
c20f10f7f8 Add vmnet support to linuxkit run hyperkit
Allows routed networking, so long as you runhyperkit as root.

This has quite a few downsides, including the requirement to
run as root in order to set up the networking, but some people
really want VMs that are routable from the host.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-06-16 10:54:32 -07:00
Rolf Neugebauer
2f212e6c74 cmd: Unify the push coding style
- Use 'flags' for the subcommand FlagSet
- Use %v to print errors
- Use 'path' for the path
- Fix cases where the 'path' refers to a different directory
- Don't use CamelCase for command line options

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-06-15 17:31:28 -07:00
Justin Cormack
d194cf7cf7 Update hyperkit and support multiple disks
Now hyperkit Go API has multiple disk support, allow using them from linuxkit

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-06-15 13:31:46 -07:00
Ian Campbell
e2eb17ef6c Only create qemu runner state dir if it is going to be used.
Signed-off-by: Ian Campbell <ian.campbell@docker.com>
2017-06-13 17:22:08 +01:00
Ian Campbell
13a94c7a3c Add metadata support to Qemu runner.
Based on the hyperkit runner's code.

project/kubernetes/boot.sh now works, although lack of network connectivity
between individual VMs remains an issue.

Also manually validated containerized operation with:

    rm -rf kube-node-0-state && ../../bin/linuxkit run qemu --containerized  -cpus 2 -mem 4096 -state kube-node-0-state -disk size=4G -data "foo bar" kube-node

Signed-off-by: Ian Campbell <ian.campbell@docker.com>
2017-06-13 11:08:53 +01:00
Ian Campbell
a09090e6cd Add state dir support to Qemu runner.
Modelled on the Hyperkit runner, for now only used for the disk.

This is one step closer to having project/kubernetes/boot.sh work on Linux.

Signed-off-by: Ian Campbell <ian.campbell@docker.com>
2017-06-13 11:08:53 +01:00
Justin Cormack
6f62d083df Remove initrd library, it has moved to moby tool
As we are not using it here, makes more sense for it to go there.

Moved with history in https://github.com/moby/tool/pull/78

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-06-12 15:41:27 +02:00
Justin Cormack
322d06f906 Update vendoring to use initrd library from this repo
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-06-12 15:36:30 +02:00
Justin Cormack
528b430789 Clean up initrd creation library
Remove duplicated code and clean up file handling a little.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-06-12 15:34:30 +02:00
Justin Cormack
ddc92b8846 Code in the initrd generator to split a single tarball
In the WIP code in `moby` we now have a standard base tarball format,
that includes the kernel and cmdline as files in `/boot` so that the
entire output of the yaml file can default to a single tarball. Then
this can be split back up by LinuxKit into initrd, kernel and cmdline
as needed. This will probably become the only output of the `moby build`
stage, with a `moby package` stage dealing with output formats.

We may remove the output format specification from the yaml file as well,
and just have it in the command.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-06-12 15:34:22 +02:00
Justin Cormack
ecf14815f7 Update Go path to linuxkit/linuxkit for libraries
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-06-12 15:34:11 +02:00
Tycho Andersen
c313e39250 init: fake supporting hard links slightly differently
Instead, make a hard link a symlink. This isn't much better, but it allows
some cases (e.g. installing GCC on moby via alpine) to work.

Signed-off-by: Tycho Andersen <tycho@docker.com>
2017-06-12 15:34:02 +02:00
Justin Cormack
6bce274b81 Move Go code to src/cmd
This does not get everything where we want it finally, see #1266
nor the optimal way of building, but it gets it out of top level.

Added instructions to build if you have a Go installation.

Not moving `vendor` yet.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-06-12 15:33:53 +02:00
Rolf Neugebauer
a42a3ffb39 cmd: Add initial Hyper-V run backend
The Hyper-V backend is loosly based on the docker-machine code
as well as ./scripts/LinuxKit.ps1. It shells out to Powershell
for most of the configuration.

Console is provided by github.com/Azure/go-ansiterm/winterm
and the ode surrounding it is loosely based on the equivalent
code in containerd and moby/moby.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-06-11 09:11:06 +01:00
Rolf Neugebauer
309ae23c2e cmd: Use github.com/rn/iso9660wrap for metadata
The repository was moved...

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-06-11 09:11:06 +01:00
Rolf Neugebauer
ce8de92978 cmd: Fix disk "size" handling
commit bdf9b1f31a introduced a bug with disk size handling
where GB was not handled correctly. Fix it.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-06-11 09:11:06 +01:00
Rolf Neugebauer
bdf9b1f31a cmd: Default disk "size" parameter to GB
Most cloud providers allow disk size allocation on in units
of GB. Make it the default for linuxkit disk "size" arguments.
Users can override the unit by appending a M to the disk size.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2017-06-09 11:51:48 +01:00
Riyaz Faizullabhoy
d31413c39c Merge pull request #1973 from kencochrane/fix_aws_name
Added more log statements to linuxkit push aws command
2017-06-06 13:31:22 -07:00
Ken Cochrane
67c2a230fb Fixed AWS push command, name wasn't set correctly
Signed-off-by: Ken Cochrane <kencochrane@gmail.com>
2017-06-06 15:50:25 -04:00
Justin Cormack
3f8d627be6 Merge pull request #1969 from DieterReuter/fix-aws-default-img-name
Fix empty AWS default image name
2017-06-06 19:25:57 +01:00
Dieter Reuter
fc5135b5cc Fix empty AWS default image name
Signed-off-by: Dieter Reuter <dieter.reuter@me.com>
2017-06-06 19:10:21 +02:00
thebsdbox
7cc2bc43e4 Added capability to wait for the OpenVM tools to report the IP of new VM
Signed-off-by: Dan Finneran <daniel.finneran@gmail.com>
2017-06-06 17:52:18 +01:00
Justin Cormack
d617db19bf Merge pull request #1964 from dave-tucker/aws
Add AWS Support to LinuxKit Push and Run
2017-06-06 12:06:50 +01:00
Dave Tucker
8f4408310d docs: Add basic docs for AWS support
Signed-off-by: Dave Tucker <dt@docker.com>
2017-06-06 10:36:43 +01:00
Dave Tucker
719f260e01 linuxkit: Order push/run backends and cases alphabetically
This makes it easier to identify where a new backend should be added.
It's also simpler to match help text and case statements.

Signed-off-by: Dave Tucker <dt@docker.com>
2017-06-06 10:36:43 +01:00
Dave Tucker
3dcd8a2730 linuxkit: Add run support for AWS
Signed-off-by: Dave Tucker <dt@docker.com>
2017-06-06 10:36:31 +01:00
Dave Tucker
0737694eb7 linuxkit: Add push support for AWS
Signed-off-by: Dave Tucker <dt@docker.com>
2017-06-06 10:06:28 +01:00
Justin Cormack
12a2ea5143 Merge pull request #1959 from justincormack/mobyup
Update moby tool and qemu fixes
2017-06-05 17:42:06 +01:00
Justin Cormack
e782a469d5 Update moby tool and qemu fixes
- no longer uses several of the `mkimage-*` tools in favour of dogfooding
with `linuxkit` and using the `mkimage` package.
- fix the qemu docker container fallbacks to work better when multiple
paths are used for disks and the image.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-06-05 16:34:26 +01:00