Manifest tool for manifest list object creation/query
Go Shell Makefile
Pull request Compare This branch is 42 commits ahead, 1 commit behind harche:master.
Latest commit 2db1e2f Jan 16, 2017 @estesp committed on GitHub Merge pull request #16 from luxas/luxas-release-0.3
Updates to this project for use with Kubernetes, Weave and others
Permalink
Failed to load latest commit information.
docker Refactor manifest-tool, add a subcommand to push that makes this util… Jan 3, 2017
hack Update vendor imports to Docker 1.11-era Apr 18, 2016
integration reg v1 setup wip Mar 4, 2016
types Refactor manifest-tool, add a subcommand to push that makes this util… Jan 3, 2017
vendor Update vendor imports to Docker 1.11-era Apr 18, 2016
.gitignore Ignore test yaml input files Apr 5, 2016
.travis.yml Switch to travis sudo & enable docker service Jan 25, 2016
Dockerfile Cleanup and fix some items in the Dockerfile and Makefile. Release 0.3 Jan 3, 2017
LICENSE bump v0.1.4 Jan 29, 2016
Makefile Cleanup and fix some items in the Dockerfile and Makefile. Release 0.3 Jan 3, 2017
README.md Update README to note that cross-repository push is implemented. Apr 15, 2016
inspect.go Refactor manifest-tool, add a subcommand to push that makes this util… Jan 3, 2017
main.go
push.go

README.md

manifest - A tool to query/create manifest list objects in the Docker Registry v2.3 and above

manifest is a command line utility to create manifests list objects in the Docker registry. Manifest lists are defined in the v2.2 image specification and allow for multi-architecture and/or multi-OS images to be stored in the Docker registry.

Sample Usage

Note: For pushing to an authenticated registry like DockerHub, you will need a config generated via docker login:

docker login
<enter your credentials>

The Docker config file generated from the login is required for authentication with the repository from the manifest tool:

./manifest --docker-cfg '/home/myuser/.docker/' /home/myuser/sample.yml

In the current version, a YAML file defines the images which will be combined into a manifest list object. A sample YAML file is shown below. Cross-repository push is implemented in manifest so the image names can differ as long as they are in the same registry. For example, a source image can be myprivreg:5000/someimage_ppc64le:latest to create a manifest list with image name myprivreg:5000/someimage:latest.

Using a private registry running on port 5000, a sample YAML might look like:

image: myprivreg:5000/someimage:latest
manifests:
  -
    image: myprivreg:5000/someimage:ppc64le
    platform:
      architecture: ppc64le
      os: linux
  -
    image: myprivreg:5000/someimage:amd64
    platform:
      architecture: amd64
      features:
        - sse
      os: linux

If your cli config is found but it doesn't contain the necessary credentials for the queried registry you'll receive an error. You can fix this by either logging in (via docker login) or providing --username and --password.

Building

To build manifest you need either Go 1.6, or Go 1.5 with the variable GO15VENDOREXPERIMENT exported. Either set up your $GOPATH properly, or clone this repository into your $GOPATH to allow compilation to successfully build the tool.

$ cd $GOPATH/src
$ mkdir -p github.com/estesp
$ cd github.com/estesp
$ git clone https://github.com/estesp/manifest-tool
$ cd manifest-tool && make binary

Installing

If you built from source:

$ sudo make install

Tests

You need Docker installed on your system in order to run the test suite.

$ make test-integration

TODO

  1. Automatically populate OS and architecture from source manifests?

License

Apache License 2.0