Add --no-creds flag to skopeo inspect

Follow PR #433
Close #421

Currently skopeo inspect allows to:
Use the default credentials in $HOME/.docker.config
Explicitly define credentials via de --creds flag

This implements a --no-creds flag which will query docker registries anonymously.

Signed-off-by: Qi Wang <qiwan@redhat.com>
This commit is contained in:
juanluisvaladas 2019-05-03 13:30:19 -04:00 committed by Qi Wang
parent 0a2a62ac20
commit 07287b5783
8 changed files with 34 additions and 1 deletions

View File

@ -63,6 +63,7 @@ type imageOptions struct {
tlsVerify optionalBool // Require HTTPS and verify certificates (for docker: and docker-daemon:) tlsVerify optionalBool // Require HTTPS and verify certificates (for docker: and docker-daemon:)
sharedBlobDir string // A directory to use for OCI blobs, shared across repositories sharedBlobDir string // A directory to use for OCI blobs, shared across repositories
dockerDaemonHost string // docker-daemon: host to connect to dockerDaemonHost string // docker-daemon: host to connect to
noCreds bool // Access the registry anonymously
} }
// imageFlags prepares a collection of CLI flags writing into imageOptions, and the managed imageOptions structure. // imageFlags prepares a collection of CLI flags writing into imageOptions, and the managed imageOptions structure.
@ -105,6 +106,11 @@ func imageFlags(global *globalOptions, shared *sharedImageOptions, flagPrefix, c
Usage: "use docker daemon host at `HOST` (docker-daemon: only)", Usage: "use docker daemon host at `HOST` (docker-daemon: only)",
Destination: &opts.dockerDaemonHost, Destination: &opts.dockerDaemonHost,
}, },
cli.BoolFlag{
Name: flagPrefix + "no-creds",
Usage: "Access the registry anonymously",
Destination: &opts.noCreds,
},
}, &opts }, &opts
} }
@ -132,6 +138,9 @@ func (opts *imageOptions) newSystemContext() (*types.SystemContext, error) {
if opts.tlsVerify.present { if opts.tlsVerify.present {
ctx.DockerInsecureSkipTLSVerify = types.NewOptionalBool(!opts.tlsVerify.value) ctx.DockerInsecureSkipTLSVerify = types.NewOptionalBool(!opts.tlsVerify.value)
} }
if opts.credsOption.present && opts.noCreds {
return nil, errors.New("creds and no-creds cannot be specified at the same time")
}
if opts.credsOption.present { if opts.credsOption.present {
var err error var err error
ctx.DockerAuthConfig, err = getDockerAuth(opts.credsOption.value) ctx.DockerAuthConfig, err = getDockerAuth(opts.credsOption.value)
@ -139,6 +148,9 @@ func (opts *imageOptions) newSystemContext() (*types.SystemContext, error) {
return nil, err return nil, err
} }
} }
if opts.noCreds {
ctx.DockerAuthConfig = &types.DockerAuthConfig{}
}
return ctx, nil return ctx, nil
} }

View File

@ -55,6 +55,8 @@ _skopeo_copy() {
local boolean_options=" local boolean_options="
--dest-compress --dest-compress
--remove-signatures --remove-signatures
--src-no-creds
--dest-no-creds
" "
local transports=" local transports="
@ -73,6 +75,7 @@ _skopeo_inspect() {
local boolean_options=" local boolean_options="
--raw --raw
--tls-verify --tls-verify
--no-creds
" "
local transports=" local transports="
@ -115,6 +118,7 @@ _skopeo_delete() {
" "
local boolean_options=" local boolean_options="
--tls-verify --tls-verify
--no-creds
" "
local transports=" local transports="

View File

@ -38,10 +38,14 @@ If the authorization state is not found there, $HOME/.docker/config.json is chec
**--src-cert-dir** _path_ Use certificates at _path_ (*.crt, *.cert, *.key) to connect to the source registry or daemon **--src-cert-dir** _path_ Use certificates at _path_ (*.crt, *.cert, *.key) to connect to the source registry or daemon
**--src-no-creds** _bool-value_ Access the registry anonymously.
**--src-tls-verify** _bool-value_ Require HTTPS and verify certificates when talking to container source registry or daemon (defaults to true) **--src-tls-verify** _bool-value_ Require HTTPS and verify certificates when talking to container source registry or daemon (defaults to true)
**--dest-cert-dir** _path_ Use certificates at _path_ (*.crt, *.cert, *.key) to connect to the destination registry or daemon **--dest-cert-dir** _path_ Use certificates at _path_ (*.crt, *.cert, *.key) to connect to the destination registry or daemon
**--dest-no-creds** _bool-value_ Access the registry anonymously.
**--dest-ostree-tmp-dir** _path_ Directory to use for OSTree temporary files. **--dest-ostree-tmp-dir** _path_ Directory to use for OSTree temporary files.
**--dest-tls-verify** _bool-value_ Require HTTPS and verify certificates when talking to container destination registry or daemon (defaults to true) **--dest-tls-verify** _bool-value_ Require HTTPS and verify certificates when talking to container destination registry or daemon (defaults to true)

View File

@ -1,7 +1,7 @@
% skopeo-delete(1) % skopeo-delete(1)
## NAME ## NAME
skopeo\-delete - Mark _image-name_ for deletion. skopeo\-delete - Mark _image-name_ for deletion.
## SYNOPSIS ## SYNOPSIS
**skopeo delete** _image-name_ **skopeo delete** _image-name_
@ -30,6 +30,8 @@ $ docker exec -it registry /usr/bin/registry garbage-collect /etc/docker-distrib
**--tls-verify** _bool-value_ Require HTTPS and verify certificates when talking to container registries (defaults to true) **--tls-verify** _bool-value_ Require HTTPS and verify certificates when talking to container registries (defaults to true)
**--no-creds** _bool-value_ Access the registry anonymously.
Additionally, the registry must allow deletions by setting `REGISTRY_STORAGE_DELETE_ENABLED=true` for the registry daemon. Additionally, the registry must allow deletions by setting `REGISTRY_STORAGE_DELETE_ENABLED=true` for the registry daemon.
## EXAMPLES ## EXAMPLES

View File

@ -23,6 +23,8 @@ Return low-level information about _image-name_ in a registry
**--tls-verify** _bool-value_ Require HTTPS and verify certificates when talking to container registries (defaults to true) **--tls-verify** _bool-value_ Require HTTPS and verify certificates when talking to container registries (defaults to true)
**--no-creds** _bool-value_ Access the registry anonymously.
## EXAMPLES ## EXAMPLES
To review information for the image fedora from the docker.io registry: To review information for the image fedora from the docker.io registry:

3
vendor/github.com/kr/pretty/go.mod generated vendored Normal file
View File

@ -0,0 +1,3 @@
module "github.com/kr/pretty"
require "github.com/kr/text" v0.1.0

3
vendor/github.com/kr/text/go.mod generated vendored Normal file
View File

@ -0,0 +1,3 @@
module "github.com/kr/text"
require "github.com/kr/pty" v1.1.1

3
vendor/golang.org/x/text/go.mod generated vendored Normal file
View File

@ -0,0 +1,3 @@
module golang.org/x/text
require golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e