Commit graph

1173 commits

Author SHA1 Message Date
Stephen J Day
19eecaab12
cmd/dist: POC implementation of dist fetch
With this changeset we introduce several new things. The first is the
top-level dist command. This is a toolkit that implements various
distribution primitives, such as fetching, unpacking and ingesting.

The first component to this is a simple `fetch` command. It is a
low-level command that takes a "remote", identified by a `locator`, and
an object identifier. Keyed by the locator, this tool can identify a
remote implementation to fetch the content and write it back to standard
out. By allowing this to be the unit of pluggability in fetching
content, we can have quite a bit of flexibility in how we retrieve
images.

The current `fetch` implementation provides anonymous access to docker
hub images, through the namespace `docker.io`. As an example, one can
fetch the manifest for `redis` with the following command:

```
$ ./dist fetch docker.io/library/redis latest mediatype:application/vnd.docker.distribution.manifest.v2+json
```

Note that we have provided a mediatype "hint", nudging the fetch
implementation to grab the correct endpoint. We can hash the output of
that to fetch the same content by digest:

```
$ ./dist fetch docker.io/library/redis sha256:$(./dist fetch docker.io/library/redis latest mediatype:application/vnd.docker.distribution.manifest.v2+json | shasum -a256)
```

Note that the hint is now elided, since we have affixed the content to a
particular hash.

If you are not yet entertained, let's bring `jq` and `xargs` into the
mix for maximum fun. The following incantation fetches the same manifest
and downloads all layers into the convenience of `/dev/null`:

```
$ ./dist fetch docker.io/library/redis sha256:a027a470aa2b9b41cc2539847a97b8a14794ebd0a4c7c5d64e390df6bde56c73 | jq -r '.layers[] | .digest' | xargs -n1 -P10 ./dist fetch docker.io/library/redis > /dev/null
```

This is just the beginning. We should be able to centralize
configuration around fetch to implement a number of distribution
methodologies that have been challenging or impossible up to this point.
The `locator`, mentioned earlier, is a schemaless URL that provides a
host and path that can be used to resolve the remote. By dispatching on
this common identifier, we should be able to support almost any protocol
and discovery mechanism imaginable.

When this is more solidified, we can roll these up into higher-level
operations that can be orchestrated through the `dist` tool or via GRPC.

What a time to be alive!

Signed-off-by: Stephen J Day <stephen.day@docker.com>
2017-01-23 13:27:07 -08:00
Kenfe-Mickaël Laventure
4180eebf27 Merge pull request #448 from AkihiroSuda/cleanup
rootfs: fix compilation error (includes sirupsen->Sirupsen fix)
2017-01-23 12:00:51 -08:00
Akihiro Suda
7fed38881d rootfs: fix compilation error
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-01-23 08:54:57 +00:00
Akihiro Suda
727f0a536e vendor: sirupsen/logrus -> Sirupsen/logrus
github.com/docker/docker/pkg/archive requires Sirupsen/logrus.
So let's remove sirupsen/logrus at the moment.

Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-01-23 08:50:08 +00:00
Ma Shimiao
ffc4c570af bundle: add check before Load return
Signed-off-by: Ma Shimiao <mashimiao.fnst@cn.fujitsu.com>
2017-01-23 09:09:03 +08:00
Michael Crosby
523bb8d992 Merge pull request #456 from crosbymichael/report-jan-20
Add Development Report for Jan 20
2017-01-20 15:48:20 -08:00
Kenfe-Mickaël Laventure
8228996a4a Merge pull request #457 from crosbymichael/update-go-runc
Update go-runc to afca56d262e694d9056e937a0877a39ab879aeb4
2017-01-20 13:52:39 -08:00
Michael Crosby
b895c98358 Update go-runc to afca56d262e694d9056e937a0877a39ab879aeb4
This includes fixes for --console-socket in runc as well as additional
APIs for runc commands.

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
2017-01-20 13:42:14 -08:00
Michael Crosby
64d398d1cc Add report for jan 20
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
2017-01-20 13:13:06 -08:00
Stephen Day
7101c7a9e2 Merge pull request #434 from AkihiroSuda/terminology
snapshot: fix terminology inconsistency
2017-01-19 19:33:34 -08:00
Akihiro Suda
1f763301a6 snapshot: fix terminology inconsistency
LayerManipulator, SnapshotManipulator -> SnapshotManager

Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-01-20 02:02:29 +00:00
Akihiro Suda
e9bfed4cf2 *: clean up
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-01-20 01:50:08 +00:00
Michael Crosby
7c975e37a9 Merge pull request #450 from crosbymichael/makefile
Fix makefile install
2017-01-19 11:17:55 -08:00
Michael Crosby
61e7fbde4c Remove check for binaries
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
2017-01-19 11:09:27 -08:00
Akihiro Suda
5fb38ce49c Makefile: allow make install without go
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-01-19 11:05:52 -08:00
Michael Crosby
2869aac1e5 Merge pull request #445 from AkihiroSuda/revert-432-makefile-non-force
Revert "Makefile: remove FORCE dependency"
2017-01-19 11:00:26 -08:00
Michael Crosby
c26e2bde5a Merge pull request #447 from fate-grand-order/master
Correct spelling errors in annotations in locks.go
2017-01-19 10:59:03 -08:00
Michael Crosby
983d817470 Merge pull request #449 from xulike666/fight-for-readability
Fix all typos I found in this repo.
2017-01-19 10:58:20 -08:00
Michael Crosby
0d11d1c26f Merge pull request #446 from mlaventure/no-state-dir
Remove StateDir type
2017-01-19 10:56:57 -08:00
Aaron.L.Xu
08bcbddb32 fix typo I found in this repo
Signed-off-by: Aaron.L.Xu <likexu@harmonycloud.cn>
2017-01-20 01:18:26 +08:00
Kenfe-Mickael Laventure
bd6057c8e1 execution: remove statedir type
Signed-off-by: Kenfe-Mickael Laventure <mickael.laventure@gmail.com>
2017-01-19 08:31:11 -08:00
Kenfe-Mickael Laventure
3f2d9d19bf execution: remove oci executor
Signed-off-by: Kenfe-Mickael Laventure <mickael.laventure@gmail.com>
2017-01-19 07:57:02 -08:00
Phil Estes
0a58d55e63 Merge pull request #443 from AkihiroSuda/fix-defer
shim executor: clean state dir if newProcess() failed
2017-01-19 10:54:31 -05:00
fate-grand-order
3400a450f2 Correct spelling errors in annotations in locks.go
Signed-off-by: fate-grand-order <chenjg@harmonycloud.cn>
2017-01-19 12:27:51 +08:00
Akihiro Suda
d92f60e367 shim executor: clean state dir if newProcess() failed
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-01-19 02:36:35 +00:00
Akihiro Suda
bcfb5e7cee Revert "Makefile: remove FORCE dependency"
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-01-19 01:28:43 +00:00
Michael Crosby
7465a6de1b Merge pull request #427 from docker/rootfs-poc
rootfs: pseudo-implementation of rootfs unpacking
2017-01-18 11:51:24 -08:00
Stephen Day
3cd4f25c11 Merge pull request #438 from crosbymichael/remove-mnt-cmd
Remove shelling out to mount
2017-01-18 11:43:35 -08:00
Michael Crosby
a7a6270f2a Remove shelling out to mount
Also remove the target from the Mount struct because it should not be
used at all.  The target can be variable and set by a caller, not by the
snapshot drivers.

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
2017-01-18 11:10:31 -08:00
Michael Crosby
e3595680a9 Merge pull request #423 from AkihiroSuda/list
ctr: add commands: `list` and `inspect`
2017-01-18 10:03:51 -08:00
Michael Crosby
7d0b1eef8e Merge pull request #440 from coolljt0725/readme_typo
typo: fix typo in README.md
2017-01-18 09:37:33 -08:00
Lei Jitang
1640c297d3 typo: fix typo in README.md
Signed-off-by: Lei Jitang <leijitang@huawei.com>
2017-01-17 23:01:23 -05:00
Akihiro Suda
8bd1b0d2e4 ctr: add commands: list and inspect
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-01-18 02:47:42 +00:00
Stephen J Day
8b5c7ce901
vendor: include github.com/opencontainers/image-spec
Signed-off-by: Stephen J Day <stephen.day@docker.com>
2017-01-17 17:08:37 -08:00
Stephen J Day
460314d667
rootfs: pseudo-implementation of rootfs unpacking
This defines a new package for assembling rootfs with layers and
snapshots. We define some base types and operations that represent the
boiled down process of the unpacking a rootfs.

This code is untested but provides a base to work towards a full
implementation of rootfs unpacking.

Signed-off-by: Stephen J Day <stephen.day@docker.com>
2017-01-17 17:05:28 -08:00
Kenfe-Mickaël Laventure
abc1bf4dea Merge pull request #429 from datawolf/io-set-termios-onlcr-for-master
Set -ONLCR on created consoles
2017-01-17 14:07:50 -08:00
Michael Crosby
c0fdda03cc Merge pull request #432 from AkihiroSuda/makefile-non-force
Makefile: remove FORCE dependency
2017-01-17 10:58:54 -08:00
Michael Crosby
7d39f2d0e6 Merge pull request #430 from hqhq/fix_check_error
Fix go vet errors
2017-01-17 10:51:35 -08:00
Michael Crosby
87ece31efe Merge pull request #435 from hqhq/fix_stdio
Fix io closer
2017-01-17 10:03:36 -08:00
Qiang Huang
9a5b17009c Fix io closer
Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
2017-01-17 19:04:20 +08:00
Akihiro Suda
029265f67c Makefile: remove FORCE dependency
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-01-16 08:58:20 +00:00
Qiang Huang
5d6fa7b886 Fix go vet errors
Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
2017-01-14 21:43:31 +08:00
Wang Long
7c473041a0 io: stop screwing with \n in console output
The default terminal setting for a new pty on Linux (unix98) has +ONLCR,
resulting in '\n' writes by a container process to be converted to
'\r\n' reads by the managing process. This is quite unexpected, To fix it, make
the terminal sane after opening it by setting -ONLCR.

this patch fix method comes from: eea28f480d
thanks @cyphar Aleksa Sarai <asarai@suse.de>

Signed-off-by: Wang Long <long.wanglong@huawei.com>
2017-01-14 07:00:50 +00:00
Stephen Day
e6f6261bae Merge pull request #426 from stevvooe/separate-drivers
snapshots: separate implementations into packages
2017-01-13 16:20:33 -08:00
Stephen J Day
e3f83fd53d snapshots: separate implementations into packages
Signed-off-by: Stephen J Day <stephen.day@docker.com>
2017-01-13 15:32:41 -08:00
Michael Crosby
c7f77f475a Merge pull request #425 from crosbymichael/jan13
Add status report for Jan 13, 2017
2017-01-13 11:21:52 -08:00
Michael Crosby
d3fadb5436 Add status report for Jan 13, 2017
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
2017-01-13 10:29:52 -08:00
Phil Estes
6f8d541d2b Merge pull request #419 from AkihiroSuda/clean-vendor
vendor: clean up
2017-01-13 12:43:27 -05:00
Phil Estes
2c11108748 Merge pull request #421 from AkihiroSuda/testflags
Makefile: new variable: TESTFLAGS
2017-01-13 12:42:40 -05:00
Akihiro Suda
3793d19bfe Makefile: new variable: TESTFLAGS
e.g.

    $ TESTFLAGS="-race -v -parallel 16" make test

Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-01-13 04:28:24 +00:00