mirror of
https://github.com/openfaas/faas.git
synced 2025-06-20 13:06:40 +00:00
Update vendoring via vndr
This commit is contained in:
gateway
glide.lockglide.yamlvendor.conf
vendor
github.com
Azure
go-ansiterm
Microsoft
go-winio
.gitignorebackup.gobackup_test.go
archive
tar
LICENSEcommon.goexample_test.goreader.goreader_test.gostat_atim.gostat_atimespec.gostat_unix.gotar_test.go
testdata
gnu-multi-hdrs.targnu.tarhardlink.tarhdr-only.tarissue10968.tarissue11169.tarissue12435.tarneg-size.tarnil-uid.tarpax-multi-hdrs.tarpax-path-hdr.tarpax.tarsmall.txtsmall2.txtsparse-formats.tarstar.tarustar-file-reg.tarustar.tarv7.tarwriter-big-long.tarwriter-big.tarwriter.tarxattrs.tar
writer.gowriter_test.gobackuptar
file.gofileinfo.gopipe.gopipe_test.goprivileges_test.gosd_test.gowim
zsyscall_windows.goNvveen
Sirupsen
logrus
beorn7
perks
docker
distribution
.gitignore.mailmapAUTHORSBUILDING.mdCHANGELOG.mdCONTRIBUTING.mdDockerfileMAINTAINERSMakefileRELEASE-CHECKLIST.mdROADMAP.mdcircle.ymlcoverpkg.sh
cmd
digest
registry-api-descriptor-template
registry
configuration
context
contrib
apache
compose
docker-integration
DockerfileREADME.mddocker-compose.ymlgolem.confhelpers.bashinstall_certs.sh
malevolent-certs
malevolent.batsnginx
Dockerfiledocker-registry-v2.confnginx.confregistry-basic.confregistry-noauth.confregistry.conftest.passwd
plugins.batsrun_multiversion.shtls.batstoken.batsv1
tokenserver-oauth
.htpasswdDockerfile
certs
auth.localregistry.certauth.localregistry.keylocalregistry.certlocalregistry.keysigning.certsigning.key
registry-config-notls.ymlregistry-config.ymltokenserver
token-server
digestset
docs
health
manifest
doc.go
manifestlist
schema1
config_builder.goconfig_builder_test.gomanifest.gomanifest_test.goreference_builder.goreference_builder_test.gosign.goverify.go
schema2
versioned.gonotifications
bridge.gobridge_test.goendpoint.goevent.goevent_test.gohttp.gohttp_test.golistener.golistener_test.gometrics.gometrics_test.gosinks.gosinks_test.go
project
reference
registry
api
auth
client
doc.gohandlers
api_test.goapp.goapp_test.gobasicauth.gobasicauth_prego14.goblob.goblobupload.gocatalog.gocontext.gohealth_test.gohelpers.gohmac.gohmac_test.gohooks.gomail.gomanifests.gotags.go
listener
middleware
proxy
proxyauth.goproxyblobstore.goproxyblobstore_test.goproxymanifeststore.goproxymanifeststore_test.goproxymetrics.goproxyregistry.goproxytagservice.goproxytagservice_test.go
registry.goregistry_test.goroot.goscheduler
storage
blob_test.goblobcachemetrics.goblobserver.goblobstore.goblobwriter.goblobwriter_nonresumable.goblobwriter_resumable.gofilereader.gofilereader_test.gogarbagecollect.gogarbagecollect_test.golinkedblobstore.golinkedblobstore_test.gomanifestlisthandler.gomanifeststore.gomanifeststore_test.gopaths.gopaths_test.gopurgeuploads.gopurgeuploads_test.goregistry.goschema2manifesthandler.goschema2manifesthandler_test.gosignedmanifesthandler.gotagstore.gotagstore_test.goutil.govacuum.gowalk.gowalk_test.go
cache
catalog.gocatalog_test.godigester_resumable_test.godoc.godriver
azure
base
factory
fileinfo.gofilesystem
gcs
inmemory
middleware
oss
s3-aws
s3-goamz
storagedriver.goswift
testdriver
testsuites
testutil
uuid
vendor.confvendor
github.com
Azure
azure-sdk-for-go
Sirupsen
logrus
aws
aws-sdk-go
LICENSE.txtNOTICE.txtREADME.md
aws
awserr
awsutil
client
config.goconvert_types.gocorehandlers
credentials
chain_provider.gocredentials.go
ec2rolecreds
endpointcreds
env_provider.goshared_credentials_provider.gostatic_provider.gostscreds
defaults
ec2metadata
endpoints
errors.gologger.gorequest
handlers.gohttp_request.gooffset_reader.gorequest.gorequest_1_7.gorequest_1_8.gorequest_pagination.goretryer.govalidation.go
session
signer
types.goversion.goprivate
service
bshuster-repo
logrus-logstash-hook
bugsnag
bugsnag-go
LICENSE.txtREADME.mdappengine.gobugsnag.goconfiguration.godoc.go
errors
event.gojson_tags.gometadata.gomiddleware.gonotifier.gopanicwrap.gopayload.goosext
panicwrap
denverdino
aliyungo
docker
garyburd
redigo
go-ini
golang
protobuf
gorilla
context
handlers
mux
inconshreveable
jmespath
go-jmespath
miekg
dns
LICENSEREADME.mdclient.goclientconfig.godane.godefaults.godns.godnssec.godnssec_keygen.godnssec_keyscan.godnssec_privkey.godoc.goedns.goformat.gogenerate.golabels.gomsg.gomsg_generate.gomsg_helpers.gonsecx.goprivaterr.gorawmsg.goreverse.gosanitize.goscan.goscan_rr.goscanner.goserver.gosig0.gosingleinflight.gosmimea.gotlsa.gotsig.gotypes.gotypes_generate.goudp.goudp_linux.goudp_other.goudp_plan9.goudp_windows.goupdate.goxfr.gozmsg.goztypes.go
mitchellh
ncw
swift
opencontainers
spf13
cobra
pflag
stevvooe
resumable
xenolf
lego
yvasiyarov
go-metrics
LICENSEREADME.mdcounter.godebug.goewma.gogauge.gogauge_float64.gographite.gohealthcheck.gohistogram.gojson.golog.gometer.gometrics.goopentsdb.goregistry.goruntime.goruntime_cgo.goruntime_no_cgo.gosample.gosyslog.gotimer.gowriter.go
gorelic
LICENSEREADME.mdagent.godoc.gogc_metrics.gogometrica.gohttp_metrics.gomemory_metrics.goruntime_metrics.go
newrelic_platform_go
golang.org
x
crypto
net
LICENSEPATENTSREADME
context
http2
READMEclient_conn_pool.goconfigure_transport.goerrors.gofixed_buffer.goflow.goframe.gogo15.gogotrack.goheadermap.go
hpack
http2.gonot_go15.gonot_go16.gopipe.goserver.gotransport.gowrite.gowritesched.goidna
internal
timeseries
publicsuffix
trace
oauth2
time
google.golang.org
api
appengine
LICENSEREADME.mdappengine.goappengine_vm.goerrors.goidentity.go
internal
api.goapi_classic.goapi_common.goapp_id.go
namespace.gotimeout.goapp_identity
base
datastore
identity.goidentity_classic.goidentity_vm.gointernal.golog
metadata.gomodules
net.goremote_api
transaction.gourlfetch
urlfetch
cloud
grpc
gopkg.in
check.v1
square
go-jose.v1
yaml.v2
rsc.io
version
docker
.dockerignore
.github
.gitignore.mailmapAUTHORSCHANGELOG.mdCONTRIBUTING.mdDockerfileDockerfile.aarch64Dockerfile.armhfDockerfile.ppc64leDockerfile.s390xDockerfile.simpleDockerfile.solarisDockerfile.windowsMAINTAINERSMakefileREADME.mdROADMAP.mdVENDORING.mdVERSIONapi
common.gocommon_test.goswagger-gen.yamlswagger.yaml
errors
fixtures
server
httputils
decoder.goerrors.goform.goform_test.gohttputils.gohttputils_write_json.gohttputils_write_json_go16.gowrite_log_stream.go
middleware.gomiddleware
profiler.gorouter
router_swapper.goserver.goserver_test.gotemplates
server
types
builder
builder.go
dockerfile
bflag.gobflag_test.gobuildargs.gobuildargs_test.gobuilder.gobuilder_test.gobuilder_unix.gobuilder_windows.goshell_parser.goshell_parser_test.gosupport.gosupport_test.goutils_test.gowordsTest
dockerignore.gocommand
dispatchers.godispatchers_test.godispatchers_unix.godispatchers_unix_test.godispatchers_windows.godispatchers_windows_test.goenvVarTestevaluator.goevaluator_test.goevaluator_unix.goevaluator_windows.goimagecontext.gointernals.gointernals_test.gointernals_unix.gointernals_windows.gointernals_windows_test.gomockbackend_test.goparser
dumper
json_test.goline_parsers.goline_parsers_test.goparser.goparser_test.gosplit_command.gotestfile-line
testfiles-negative
testfiles
ADD-COPY-with-JSON
brimstone-consuldock
brimstone-docker-consul
continue-at-eof
continueIndent
cpuguy83-nagios
docker
env
escape-after-comment
escape-nonewline
escape
escapes
flags
health
influxdb
jeztah-invalid-json-json-inside-string-double
jeztah-invalid-json-json-inside-string
jeztah-invalid-json-single-quotes
jeztah-invalid-json-unterminated-bracket
jeztah-invalid-json-unterminated-string
json
kartar-entrypoint-oddities
lk4d4-the-edge-case-generator
mail
multiple-volumes
mumble
nginx
tf2
weechat
znc
dockerignore
dockerignore_test.gogit.goremote.goremote_test.goremotecontext
tarsum.gotarsum_test.goutils_test.gocli
cobra.go
command
bundlefile
checkpoint
cli.gocommands
container
attach.gocmd.gocommit.gocp.gocreate.godiff.goexec.goexec_test.goexport.gohijack.goinspect.gokill.golist.gologs.goopts.goopts_test.gopause.goport.goprune.gops_test.gorename.gorestart.gorm.gorun.gostart.gostats.gostats_helpers.gostats_unit_test.gostop.go
events_utils.gotestdata
top.gotty.gounpause.goupdate.goutils.gowait.goformatter
checkpoint.gocheckpoint_test.gocontainer.gocontainer_test.gocustom.gocustom_test.godiff.godiff_test.godisk_usage.godisk_usage_test.goformatter.gohistory.gohistory_test.goimage.goimage_test.gonetwork.gonetwork_test.gonode.gonode_test.goplugin.goplugin_test.goreflect.goreflect_test.gosecret.gosecret_test.goservice.goservice_test.gostats.gostats_test.gotask.gotask_test.govolume.govolume_test.go
idresolver
image
build.go
in.gobuild
client_test.gocmd.gohistory.gohistory_test.goimport.goimport_test.goinspect.goinspect_test.golist.golist_test.goload.goload_test.goprune.goprune_test.gopull.gopull_test.gopush.gopush_test.goremove.goremove_test.gosave.gosave_test.gotag.gotag_test.gotestdata
history-command-success.quiet-no-trunc.goldenhistory-command-success.quiet.goldenhistory-command-success.simple.goldenimport-command-success.input.txtinspect-command-success.format.goldeninspect-command-success.simple-many.goldeninspect-command-success.simple.goldenlist-command-success.filters.goldenlist-command-success.format.goldenlist-command-success.match-name.goldenlist-command-success.quiet-format.goldenlist-command-success.simple.goldenload-command-success.input-file.goldenload-command-success.input.txtload-command-success.json.goldenload-command-success.simple.goldenprune-command-success.all.goldenprune-command-success.force-deleted.goldenprune-command-success.force-untagged.goldenpull-command-success.simple-no-tag.goldenpull-command-success.simple.goldenremove-command-success.Image Deleted and Untagged.goldenremove-command-success.Image Deleted.goldenremove-command-success.Image Untagged.golden
trust.gotrust_test.goinspect
network
node
client_test.gocmd.godemote.godemote_test.goinspect.goinspect_test.golist.golist_test.goopts.gopromote.gopromote_test.gops.gops_test.goremove.goremove_test.go
out.gotestdata
node-inspect-pretty.manager-leader.goldennode-inspect-pretty.manager.goldennode-inspect-pretty.simple.goldennode-ps.simple.goldennode-ps.with-errors.golden
update.goupdate_test.goplugin
prune
registry.goregistry
secret
client_test.gocmd.gocreate.gocreate_test.goinspect.goinspect_test.gols.gols_test.goremove.goremove_test.go
testdata
secret-create-with-name.goldensecret-inspect-with-format.json-template.goldensecret-inspect-with-format.simple-template.goldensecret-inspect-without-format.multiple-secrets-with-labels.goldensecret-inspect-without-format.single-secret.goldensecret-list-with-config-format.goldensecret-list-with-filter.goldensecret-list-with-format.goldensecret-list-with-quiet-option.goldensecret-list.golden
service
cmd.gocreate.gohelpers.goinspect.goinspect_test.golist.gologs.goopts.goopts_test.goparse.go
progress
ps.goremove.goscale.gotrust.goupdate.goupdate_test.gostack
client_test.gocmd.gocommon.godeploy.godeploy_bundlefile.godeploy_composefile.godeploy_test.golist.goopts.gops.goremove.goremove_test.goservices.go
stream.goswarm
client_test.gocmd.goinit.goinit_test.gojoin.gojoin_test.gojoin_token.gojoin_token_test.goleave.goleave_test.goopts.goopts_test.go
testdata
init-init-autolock.goldeninit-init.goldenjointoken-manager-quiet.goldenjointoken-manager-rotate.goldenjointoken-manager.goldenjointoken-worker-quiet.goldenjointoken-worker.goldenunlockkeys-unlock-key-quiet.goldenunlockkeys-unlock-key-rotate-quiet.goldenunlockkeys-unlock-key-rotate.goldenunlockkeys-unlock-key.goldenupdate-all-flags-quiet.goldenupdate-autolock-unlock-key.goldenupdate-noargs.golden
unlock.gounlock_key.gounlock_key_test.gounlock_test.goupdate.goupdate_test.gosystem
task
trust.goutils.govolume
client_test.gocmd.gocreate.gocreate_test.goinspect.goinspect_test.golist.golist_test.goprune.goprune_test.goremove.goremove_test.go
testdata
volume-inspect-with-format.json-template.goldenvolume-inspect-with-format.simple-template.goldenvolume-inspect-without-format.multiple-volume-with-labels.goldenvolume-inspect-without-format.single-volume.goldenvolume-list-with-config-format.goldenvolume-list-with-format.goldenvolume-list-without-format.goldenvolume-prune-no.goldenvolume-prune-yes.goldenvolume-prune.deletedVolumes.goldenvolume-prune.empty.golden
compose
config
debug
error.goflags
internal
required.gotrust
client
checkpoint_create_test.gocheckpoint_delete_test.gocheckpoint_list_test.goclient_mock_test.goclient_test.gocontainer_commit_test.gocontainer_copy.gocontainer_copy_test.gocontainer_create_test.gocontainer_diff_test.gocontainer_exec_test.gocontainer_export_test.gocontainer_inspect_test.gocontainer_kill_test.gocontainer_list_test.gocontainer_logs_test.gocontainer_pause_test.gocontainer_prune_test.gocontainer_remove_test.gocontainer_rename_test.gocontainer_resize_test.gocontainer_restart_test.gocontainer_start_test.gocontainer_stats_test.gocontainer_stop_test.gocontainer_top_test.gocontainer_unpause_test.gocontainer_update_test.gocontainer_wait_test.goevents_test.goimage_build_test.goimage_create_test.goimage_history_test.goimage_import_test.goimage_inspect_test.goimage_list_test.goimage_load_test.goimage_prune_test.goimage_pull_test.goimage_push_test.goimage_remove_test.goimage_save_test.goimage_search_test.goimage_tag_test.goinfo_test.gonetwork_connect_test.gonetwork_create_test.gonetwork_disconnect_test.gonetwork_inspect_test.gonetwork_list_test.gonetwork_prune_test.gonetwork_remove_test.gonode_inspect_test.gonode_list_test.gonode_remove_test.gonode_update_test.goplugin_disable_test.goplugin_enable_test.goplugin_inspect_test.goplugin_list_test.goplugin_push_test.goplugin_remove_test.goplugin_set_test.gorequest_test.gosecret_create_test.gosecret_inspect_test.gosecret_list_test.gosecret_remove_test.gosecret_update_test.goservice_create_test.goservice_inspect_test.goservice_list_test.goservice_logs_test.goservice_remove_test.goservice_update_test.goswarm_init_test.goswarm_inspect_test.goswarm_join_test.goswarm_leave_test.goswarm_update_test.gotask_inspect_test.gotask_list_test.go
testdata
volume_create_test.govolume_inspect_test.govolume_list_test.govolume_remove_test.gocmd
docker
daemon_none.godaemon_none_test.godaemon_unit_test.godaemon_unix.godocker.godocker_test.godocker_windows.go
dockerd
README.mdconfig.goconfig_common_unix.goconfig_experimental.goconfig_solaris.goconfig_unix.goconfig_unix_test.goconfig_windows.godaemon.godaemon_freebsd.godaemon_linux.godaemon_solaris.godaemon_test.godaemon_unix.godaemon_unix_test.godaemon_windows.godocker.godocker_windows.go
hack
metrics.goservice_unsupported.goservice_windows.gocontainer
archive.gocontainer.gocontainer_linux.gocontainer_notlinux.gocontainer_unit_test.gocontainer_unix.gocontainer_windows.goenv.goenv_test.gohealth.gohistory.gomemory_store.gomemory_store_test.gomonitor.gomounts_unix.gomounts_windows.gostate.gostate_solaris.gostate_test.gostate_unix.gostate_windows.gostore.go
stream
contrib
README.mdREVIEWERScheck-config.shmac-install-bundle.shmkimage-alpine.shmkimage-arch-pacman.confmkimage-arch.shmkimage-archarm-pacman.confmkimage-busybox.shmkimage-crux.shmkimage-debootstrap.shmkimage-pld.shmkimage-rinse.shmkimage-yum.shmkimage.sh
apparmor
builder
deb
aarch64
amd64
README.mdbuild.sh
debian-jessie
debian-stretch
debian-wheezy
generate.shubuntu-trusty
ubuntu-xenial
ubuntu-yakkety
ubuntu-zesty
armhf
ppc64le
s390x
rpm
amd64
README.md
amazonlinux-latest
build.shcentos-7
fedora-24
fedora-25
generate.shopensuse-13.2
oraclelinux-6
oraclelinux-7
photon-1.0
armhf
ppc64le
completion
desktop-integration
docker-device-tool
docker-machine-install-bundle.shdockerize-disk.shdownload-frozen-image-v1.shdownload-frozen-image-v2.sheditorconfiggitdm
httpserver
init
openrc
systemd
sysvinit-debian
sysvinit-redhat
upstart
mkimage
nnp-test
nuke-graph-directory.shproject-stats.shreport-issue.shreprepro
selinux-fedora-24
selinux-oraclelinux-7
selinux
syntax
syscall-test
udev
vagrant-docker
daemon
apparmor_default.goapparmor_default_unsupported.goarchive.goarchive_tarcopyoptions.goarchive_tarcopyoptions_unix.goarchive_tarcopyoptions_windows.goarchive_unix.goarchive_windows.goattach.goauth.gobindmount_solaris.gobindmount_unix.gocache.gohealth.gohealth_test.goimage.goimage_delete.goimage_exporter.goimage_history.goimage_inspect.goimage_pull.goimage_push.goimage_tag.goimages.goimport.goinfo.goinfo_unix.goinfo_unix_test.goinfo_windows.go
caps
changes.gocheckpoint.gocluster.gocluster
cluster.go
commit.gocontrollers
plugin
convert
executor
backend.go
filters.gofilters_test.gohelpers.golisten_addr.golisten_addr_linux.golisten_addr_others.golisten_addr_solaris.gonetworks.gonoderunner.gonodes.gocontainer
provider
secrets.goservices.goswarm.gotasks.goutils.goconfig
config.goconfig_common_unix.goconfig_common_unix_test.goconfig_solaris.goconfig_test.goconfig_unix.goconfig_unix_test.goconfig_windows.goconfig_windows_test.go
container.gocontainer_linux.gocontainer_operations.gocontainer_operations_solaris.gocontainer_operations_unix.gocontainer_operations_windows.gocontainer_windows.gocreate.gocreate_unix.gocreate_windows.godaemon.godaemon_experimental.godaemon_linux.godaemon_linux_test.godaemon_solaris.godaemon_test.godaemon_unix.godaemon_unix_test.godaemon_unsupported.godaemon_windows.godebugtrap.godebugtrap_unix.godebugtrap_unsupported.godebugtrap_windows.godelete.godelete_test.godiscovery
disk_usage.goerrors.goevents.goevents
events_test.goexec.goexec
exec_linux.goexec_solaris.goexec_windows.goexport.gogetsize_unix.gographdriver
aufs
btrfs
counter.godevmapper
driver.godriver_freebsd.godriver_linux.godriver_solaris.godriver_unsupported.godriver_windows.gofsdiff.gographtest
overlay
overlay2
overlayutils
plugin.goproxy.goquota
register
register_aufs.goregister_btrfs.goregister_devicemapper.goregister_overlay.goregister_vfs.goregister_windows.goregister_zfs.go
vfs
windows
zfs
initlayer
inspect.goinspect_solaris.goinspect_unix.goinspect_windows.gokeys.gokeys_unsupported.gokill.golinks.golinks
list.golist_unix.golist_windows.gologdrivers_linux.gologdrivers_windows.gologger
adapter.goadapter_test.go
logs.gologs_test.gometrics.gomonitor.gomonitor_linux.gomonitor_solaris.gomonitor_windows.gomounts.gonames.gonetwork.goawslogs
copier.gocopier_test.goetwlogs
factory.gofluentd
gcplogs
gelf
journald
journald.gojournald_test.gojournald_unsupported.goread.goread_native.goread_native_compat.goread_unsupported.go
jsonfilelog
logentries
logger.gologger_test.gologgerutils
loginfo.goplugin.goplugin_unix.goplugin_unsupported.goproxy.goring.goring_test.gosplunk
syslog
network
oci_linux.gooci_solaris.gooci_windows.gopause.goprune.goreload.goreload_test.gorename.goresize.gorestart.gosearch.gosearch_test.goseccomp_disabled.goseccomp_linux.goseccomp_unsupported.gosecrets.gosecrets_linux.gosecrets_unsupported.goselinux_linux.goselinux_unsupported.gostart.gostart_unix.gostart_windows.gostats.gostats
stats_collector.gostats_unix.gostats_windows.gostop.gotop_unix.gotop_unix_test.gotop_windows.gounpause.goupdate.goupdate_linux.goupdate_solaris.goupdate_windows.govolumes.govolumes_unit_test.govolumes_unix.govolumes_windows.gowait.goworkdir.godistribution
config.goerrors.go
fixtures
validate_manifest
metadata
pull.gopull_v1.gopull_v2.gopull_v2_test.gopull_v2_unix.gopull_v2_windows.gopush.gopush_v1.gopush_v2.gopush_v2_test.goregistry.goregistry_unit_test.goutils
xfer
dockerversion
docs
README.md
api
deprecated.mdextend
EBS_volume.mdconfig.md
images
index.mdlegacy_plugins.mdplugin_api.mdplugins_authorization.mdplugins_graphdriver.mdplugins_logging.mdplugins_network.mdplugins_services.mdplugins_volume.mdreference
builder.md
commandline
attach.mdbuild.mdcli.mdcommit.mdcontainer.mdcontainer_prune.mdcp.mdcreate.mddeploy.mddiff.mddockerd.mdevents.mdexec.mdexport.mdhistory.mdimage.mdimage_prune.mdimages.mdimport.mdindex.mdinfo.mdinspect.mdkill.mdload.mdlogin.mdlogout.mdlogs.mdnetwork.mdnetwork_connect.mdnetwork_create.mdnetwork_disconnect.mdnetwork_inspect.mdnetwork_ls.mdnetwork_prune.mdnetwork_rm.mdnode.mdnode_demote.mdnode_inspect.mdnode_ls.mdnode_promote.mdnode_ps.mdnode_rm.mdnode_update.mdpause.mdplugin.mdplugin_create.mdplugin_disable.mdplugin_enable.mdplugin_inspect.mdplugin_install.mdplugin_ls.mdplugin_push.mdplugin_rm.mdplugin_set.mdplugin_upgrade.mdport.mdps.mdpull.mdpush.mdrename.mdrestart.mdrm.mdrmi.mdrun.mdsave.mdsearch.mdsecret.mdsecret_create.mdsecret_inspect.mdsecret_ls.mdsecret_rm.mdservice.mdservice_create.mdservice_inspect.mdservice_logs.mdservice_ls.mdservice_ps.mdservice_rm.mdservice_scale.mdservice_update.mdstack.mdstack_deploy.mdstack_ls.mdstack_ps.mdstack_rm.mdstack_services.mdstart.mdstats.mdstop.mdswarm.mdswarm_init.mdswarm_join.mdswarm_join_token.mdswarm_leave.mdswarm_unlock.mdswarm_unlock_key.mdswarm_update.mdsystem.mdsystem_df.mdsystem_prune.mdtag.mdtop.mdunpause.mdupdate.mdversion.mdvolume.mdvolume_create.mdvolume_inspect.mdvolume_ls.mdvolume_prune.mdvolume_rm.mdwait.md
glossary.mdindex.mdrun.mdstatic_files
yaml
experimental
README.mdcheckpoint-restore.mddocker-stacks-and-bundles.md
images
ipvlan-l3.gliffyipvlan-l3.pngipvlan-l3.svgipvlan_l2_simple.gliffyipvlan_l2_simple.pngipvlan_l2_simple.svgmacvlan-bridge-ipvlan-l2.gliffymacvlan-bridge-ipvlan-l2.pngmacvlan-bridge-ipvlan-l2.svgmulti_tenant_8021q_vlans.gliffymulti_tenant_8021q_vlans.pngmulti_tenant_8021q_vlans.svgvlans-deeper-look.gliffyvlans-deeper-look.pngvlans-deeper-look.svg
vlan-networks.mdhack
Jenkins
dinddockerfile
generate-authors.shgenerate-swagger-api.shinstall.shintegration-cli-on-swarm
make.ps1make.shmake
.binary.binary-setup
release.sh.build-deb
compatcontroldocker-engine.bash-completiondocker-engine.docker.defaultdocker-engine.docker.initdocker-engine.docker.upstartdocker-engine.installdocker-engine.manpagesdocker-engine.postinstdocker-engine.udevdocsrules
.build-rpm
.detect-daemon-osarch.ensure-emptyfs.go-autogen.go-autogen.ps1.integration-daemon-setup.integration-daemon-start.integration-daemon-stop.integration-test-helpers.resources-windows
README.mdbinarybinary-clientbinary-daemonbuild-debbuild-integration-test-binarybuild-rpmclean-apt-repoclean-yum-repocovercrossdynbinarydynbinary-clientdynbinary-daemongenerate-index-listinginstall-binaryinstall-binary-clientinstall-binary-daemoninstall-scriptrelease-debrelease-rpmrunsign-repostest-deb-installtest-docker-pytest-install-scripttest-integration-clitest-integration-shelltest-old-apt-repotest-unittgzubuntuupdate-apt-repowinyaml-docs-generatorvalidate
.swagger-yamllint.validateallchangelog-date-descendingchangelog-well-formedcompose-bindatadcodefaultdefault-seccompgofmtlintpkg-importsswaggerswagger-gentest-importstomlvendorvet
vendor.shhooks
image
integration-cli
benchmark_test.gocheck_test.gofixtures_linux_daemon_test.go
checker
cli
daemon
daemon_swarm_hack_test.godocker_api_attach_test.godocker_api_auth_test.godocker_api_build_test.godocker_api_containers_test.godocker_api_create_test.godocker_api_events_test.godocker_api_exec_resize_test.godocker_api_exec_test.godocker_api_images_test.godocker_api_info_test.godocker_api_inspect_test.godocker_api_inspect_unix_test.godocker_api_logs_test.godocker_api_network_test.godocker_api_resize_test.godocker_api_stats_test.godocker_api_stats_unix_test.godocker_api_swarm_node_test.godocker_api_swarm_secret_test.godocker_api_swarm_service_test.godocker_api_swarm_test.godocker_api_test.godocker_api_update_unix_test.godocker_api_version_test.godocker_api_volumes_test.godocker_cli_attach_test.godocker_cli_attach_unix_test.godocker_cli_authz_plugin_v2_test.godocker_cli_authz_unix_test.godocker_cli_build_test.godocker_cli_build_unix_test.godocker_cli_by_digest_test.godocker_cli_commit_test.godocker_cli_config_test.godocker_cli_cp_from_container_test.godocker_cli_cp_test.godocker_cli_cp_to_container_test.godocker_cli_cp_to_container_unix_test.godocker_cli_cp_utils_test.godocker_cli_create_test.godocker_cli_create_unix_test.godocker_cli_daemon_plugins_test.godocker_cli_daemon_test.godocker_cli_diff_test.godocker_cli_events_test.godocker_cli_events_unix_test.godocker_cli_exec_test.godocker_cli_exec_unix_test.godocker_cli_experimental_test.godocker_cli_export_import_test.godocker_cli_external_graphdriver_unix_test.godocker_cli_external_volume_driver_unix_test.godocker_cli_health_test.godocker_cli_help_test.godocker_cli_history_test.godocker_cli_images_test.godocker_cli_import_test.godocker_cli_info_test.godocker_cli_info_unix_test.godocker_cli_inspect_test.godocker_cli_kill_test.godocker_cli_links_test.godocker_cli_links_unix_test.godocker_cli_login_test.godocker_cli_logout_test.godocker_cli_logs_bench_test.godocker_cli_logs_test.godocker_cli_nat_test.godocker_cli_netmode_test.godocker_cli_network_unix_test.godocker_cli_oom_killed_test.godocker_cli_pause_test.godocker_cli_plugins_logdriver_test.godocker_cli_plugins_test.godocker_cli_port_test.godocker_cli_proxy_test.godocker_cli_prune_unix_test.godocker_cli_ps_test.godocker_cli_pull_local_test.godocker_cli_pull_test.godocker_cli_pull_trusted_test.godocker_cli_push_test.godocker_cli_registry_user_agent_test.godocker_cli_rename_test.godocker_cli_restart_test.godocker_cli_rm_test.godocker_cli_rmi_test.godocker_cli_run_test.godocker_cli_run_unix_test.godocker_cli_save_load_test.godocker_cli_save_load_unix_test.godocker_cli_search_test.godocker_cli_secret_create_test.godocker_cli_secret_inspect_test.godocker_cli_secret_ls_test.godocker_cli_service_create_test.godocker_cli_service_health_test.godocker_cli_service_logs_test.godocker_cli_service_scale_test.godocker_cli_service_update_test.godocker_cli_sni_test.godocker_cli_stack_test.godocker_cli_start_test.godocker_cli_stats_test.godocker_cli_stop_test.godocker_cli_swarm_test.godocker_cli_swarm_unix_test.godocker_cli_tag_test.godocker_cli_top_test.godocker_cli_update_test.godocker_cli_update_unix_test.godocker_cli_userns_test.godocker_cli_v2_only_test.godocker_cli_version_test.godocker_cli_volume_test.godocker_cli_wait_test.godocker_deprecated_api_v124_test.godocker_deprecated_api_v124_unix_test.godocker_experimental_network_test.godocker_hub_pull_suite_test.godocker_utils_test.goenvironment
events_utils_test.gofixtures
auth
credentialspecs
deploy
https
ca.pemclient-cert.pemclient-key.pemclient-rogue-cert.pemclient-rogue-key.pemserver-cert.pemserver-key.pemserver-rogue-cert.pemserver-rogue-key.pem
load
notary
delgkey1.crtdelgkey1.keydelgkey2.crtdelgkey2.keydelgkey3.crtdelgkey3.keydelgkey4.crtdelgkey4.keygen.shlocalhost.certlocalhost.key
registry
secrets
registry
request
requirement
requirements_test.gorequirements_unix_test.gotest_vars_exec_test.gotest_vars_noexec_test.gotest_vars_noseccomp_test.gotest_vars_seccomp_test.gotest_vars_test.gotest_vars_unix_test.gotest_vars_windows_test.gotrust_server_test.goutils_test.gokeys
layer
empty.goempty_test.gofilestore.gofilestore_test.golayer.golayer_store.golayer_store_windows.golayer_test.golayer_unix.golayer_unix_test.golayer_windows.gomigration.gomigration_test.gomount_test.gomounted_layer.goro_layer.goro_layer_windows.go
libcontainerd
client.goclient_linux.goclient_solaris.goclient_unix.goclient_windows.gocontainer.gocontainer_unix.gocontainer_windows.gooom_linux.gooom_solaris.gopausemonitor_unix.goprocess.goprocess_unix.goprocess_windows.goqueue_unix.goremote.goremote_unix.goremote_windows.gotypes.gotypes_linux.gotypes_solaris.gotypes_windows.goutils_linux.goutils_solaris.goutils_windows.goutils_windows_test.go
man
DockerfileDockerfile.5.mdDockerfile.aarch64Dockerfile.armhfDockerfile.ppc64leDockerfile.s390xREADME.mddocker-build.1.mddocker-config-json.5.mddocker-run.1.mddocker.1.mddockerd.8.mdgenerate.gogenerate.shglide.lockglide.yamlmd2man-all.sh
src
attach.mdcommit.md
container
attach.mdcommit.mdcp.mdcreate-example.mdcreate.mddiff.mdexec.mdexport.mdkill.mdlogs.mdls.mdpause.mdport.mdrename.mdrestart.mdrm.mdrun.mdstart.mdstats.mdstop.mdtop.mdunpause.mdupdate.mdwait.md
cp.mdcreate.mddiff.mdevents.mdexec.mdexport.mdhistory.mdimage
images.mdimport.mdinfo.mdinspect.mdkill.mdload.mdlogin.mdlogout.mdlogs.mdnetwork
pause.mdplugin
port.mdps.mdpull.mdpush.mdrename.mdrestart.mdrm.mdrmi.mdsave.mdsearch.mdstart.mdstats.mdstop.mdsystem
tag.mdtop.mdunpause.mdupdate.mdversion.mdvolume.mdvolume
wait.mdmigrate
oci
defaults_linux.godefaults_solaris.godefaults_windows.godevices_linux.godevices_unsupported.gonamespaces.go
opts
env_test.gohosts_test.goip_test.gomount_test.goopts_test.goport_test.goquotedstring_test.gosecret_test.goulimit_test.go
pkg
aaparser
archive
README.mdarchive.goarchive_linux.goarchive_linux_test.goarchive_other.goarchive_test.goarchive_unix.goarchive_unix_test.goarchive_windows.goarchive_windows_test.gochanges.gochanges_linux.gochanges_other.gochanges_posix_test.gochanges_test.gochanges_unix.gochanges_windows.gocopy.gocopy_unix.gocopy_unix_test.gocopy_windows.godiff.godiff_test.goexample_changes.go
testdata
time_linux.gotime_unsupported.goutils_test.gowhiteouts.gowrap.gowrap_test.goauthorization
broadcaster
chrootarchive
archive.goarchive_test.goarchive_unix.goarchive_windows.gochroot_linux.gochroot_unix.godiff.godiff_unix.godiff_windows.goinit_unix.goinit_windows.go
devicemapper
devmapper.godevmapper_log.godevmapper_wrapper.godevmapper_wrapper_deferred_remove.godevmapper_wrapper_no_deferred_remove.goioctl.golog.go
directory
discovery
README.mdbackends.godiscovery.godiscovery_test.goentry.go
file
generator.gogenerator_test.gokv
memory
nodes
filenotify
fileutils
fileutils.gofileutils_darwin.gofileutils_solaris.gofileutils_test.gofileutils_unix.gofileutils_windows.go
fsutils
gitutils
homedir
httputils
idtools
idtools.goidtools_unix.goidtools_unix_test.goidtools_windows.gousergroupadd_linux.gousergroupadd_unsupported.goutils_unix.go
ioutils
buffer_test.gobytespipe_test.gofmt_test.gofswriters_test.gomultireader_test.goreaders_test.gowriters_test.go
jsonlog
jsonmessage
listeners
locker
longpath
loopback
mount
flags.goflags_freebsd.goflags_linux.goflags_unsupported.gomount.gomount_unix_test.gomounter_freebsd.gomounter_linux.gomounter_linux_test.gomounter_solaris.gomounter_unsupported.gomountinfo.gomountinfo_freebsd.gomountinfo_linux.gomountinfo_linux_test.gomountinfo_solaris.gomountinfo_unsupported.gomountinfo_windows.gosharedsubtree_linux.gosharedsubtree_linux_test.gosharedsubtree_solaris.go
namesgenerator
parsers
kernel
kernel.gokernel_darwin.gokernel_unix.gokernel_unix_test.gokernel_windows.gouname_linux.gouname_solaris.gouname_unsupported.go
operatingsystem
operatingsystem_linux.gooperatingsystem_solaris.gooperatingsystem_unix.gooperatingsystem_unix_test.gooperatingsystem_windows.go
parsers.goparsers_test.gopidfile
platform
architecture_linux.goarchitecture_unix.goarchitecture_windows.goplatform.goutsname_int8.goutsname_uint8.go
plugingetter
plugins
client.goclient_test.godiscovery.godiscovery_test.godiscovery_unix.godiscovery_unix_test.godiscovery_windows.goerrors.goplugin_test.go
pluginrpc-gen
plugins.goplugins_unix.goplugins_windows.gotransport
pools
progress
promise
pubsub
random
reexec
registrar
signal
README.mdsignal.gosignal_darwin.gosignal_freebsd.gosignal_linux.gosignal_solaris.gosignal_unix.gosignal_unsupported.gosignal_windows.gotrap.go
stdcopy
streamformatter
stringid
stringutils
symlink
sysinfo
README.mdnumcpu.gonumcpu_linux.gonumcpu_windows.gosysinfo.gosysinfo_linux.gosysinfo_linux_test.gosysinfo_solaris.gosysinfo_test.gosysinfo_unix.gosysinfo_windows.go
system
chtimes_test.gochtimes_unix_test.gochtimes_windows_test.golstat_unix_test.gomeminfo_unix_test.gopath_windows_test.gostat_unix_test.gosyscall_windows_test.goutimes_unix_test.go
tailfile
tarsum
builder_context_test.gofileinfosums_test.gotarsum_spec.mdtarsum_test.goversioning_test.go
testdata
46af0962ab5afeb5ce6740d4d91652e69206fc991fd5328c1a94d364ad00e457
511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158
collision
xattr
templates
term
testutil
truncindex
urlutil
useragent
plugin
backend_linux.gobackend_unsupported.goblobstore.godefs.gomanager.gomanager_linux.gomanager_solaris.gomanager_test.gomanager_windows.gostore.gostore_test.go
poule.ymlv2
profiles
apparmor
seccomp
project
ARM.mdBRANCHES-AND-TAGS.mdCONTRIBUTING.mdGOVERNANCE.mdIRC-ADMINISTRATION.mdISSUE-TRIAGE.mdPACKAGE-REPO-MAINTENANCE.mdPACKAGERS.mdPATCH-RELEASES.mdPRINCIPLES.mdREADME.mdRELEASE-CHECKLIST.mdRELEASE-PROCESS.mdREVIEWING.mdTOOLS.md
reference
registry
restartmanager
runconfig
config.goconfig_test.goconfig_unix.goconfig_windows.goerrors.gohostconfig.gohostconfig_solaris.gohostconfig_test.gohostconfig_unix.gohostconfig_windows.gohostconfig_windows_test.go
vendor.conffixtures
unix
container_config_1_14.jsoncontainer_config_1_17.jsoncontainer_config_1_19.jsoncontainer_hostconfig_1_14.jsoncontainer_hostconfig_1_19.json
windows
opts
vendor
cloud.google.com
github.com
BurntSushi
toml
Graylog2
Microsoft
go-winio
LICENSEREADME.md
archive
backup.gobackuptar
file.gofileinfo.gopipe.goprivilege.goreparse.gosd.gosyscall.gozsyscall_windows.gohcsshim
LICENSEREADME.mdactivatelayer.gobaselayer.gocallback.gocgo.gocontainer.gocreatelayer.gocreatesandboxlayer.godeactivatelayer.godestroylayer.goerrors.goexpandsandboxsize.goexportlayer.gogetlayermountpath.gogetsharedbaseimages.goguid.gohcsshim.gohnsfuncs.goimportlayer.gointerface.golayerexists.golayerutils.golegacy.gomksyscall_windows.gonametoguid.gopreparelayer.goprocess.goprocessimage.gounpreparelayer.goutils.goversion.gowaithelper.gozhcsshim.go
RackSec
srslog
Sirupsen
logrus
agl
ed25519
armon
go-metrics
LICENSEREADME.mdconst_unix.goconst_windows.goinmem.goinmem_signal.gometrics.gosink.gostart.gostatsd.gostatsite.go
go-radix
aws
aws-sdk-go
LICENSE.txtNOTICE.txtREADME.md
aws
awserr
awsutil
client
config.goconvert_types.gocorehandlers
credentials
chain_provider.gocredentials.go
ec2rolecreds
endpointcreds
env_provider.goshared_credentials_provider.gostatic_provider.gostscreds
defaults
ec2metadata
errors.gologger.gorequest
session
signer
types.goversion.goprivate
service
beorn7
boltdb
bolt
bsphere
cloudflare
cfssl
coreos
etcd
LICENSENOTICEREADME.md
client
README.mdauth_role.goauth_user.gocancelreq.goclient.gocluster_error.gocurl.godiscover.godoc.gokeys.generated.gokeys.gomembers.gosrv.goutil.go
pkg
README.md
crc
fileutil
dir_unix.godir_windows.gofileutil.golock.golock_flock.golock_linux.golock_plan9.golock_solaris.golock_unix.golock_windows.gopreallocate.gopreallocate_darwin.gopreallocate_unix.gopreallocate_unsupported.gopurge.gosync.gosync_darwin.gosync_linux.go
idutil
ioutil
pathutil
pbutil
types
raft
README.mddoc.golog.golog_unstable.gologger.gonode.goprogress.goraft.go
raftpb
rawnode.goread_only.gostatus.gostorage.goutil.gosnap
wal
go-systemd
pkg
davecgh
deckarep
docker
containerd
distribution
LICENSEREADME.mdblobs.go
context
digestset
doc.goerrors.gomanifest
manifests.goreference
registry.goregistry
tags.gouuid
docker-credential-helpers
go-connections
LICENSEREADME.md
nat
sockets
README.mdinmem_socket.goproxy.gosockets.gosockets_unix.gosockets_windows.gotcp_socket.gounix_socket.go
tlsconfig
go-events
go-metrics
LICENSE.codeLICENSE.docsNOTICEREADME.mdcounter.godocs.gogauge.gohandler.gohelpers.gonamespace.goregister.gotimer.gounit.go
go-units
go
libkv
libnetwork
LICENSEREADME.mdagent.goagent.pb.goagent.protodrivers_experimental_linux.godrivers_freebsd.godrivers_ipam.godrivers_linux.godrivers_solaris.godrivers_windows.go
bitseq
cluster
config
controller.godatastore
default_gateway.godefault_gateway_freebsd.godefault_gateway_linux.godefault_gateway_solaris.godefault_gateway_windows.godiscoverapi
driverapi
drivers
bridge
bridge.gobridge_store.goerrors.gointerface.golabels.golink.gonetlink_deprecated_linux.gonetlink_deprecated_linux_armppc64.gonetlink_deprecated_linux_notarm.gonetlink_deprecated_unsupported.goport_mapping.gosetup.gosetup_bridgenetfiltering.gosetup_device.gosetup_firewalld.gosetup_ip_forwarding.gosetup_ip_tables.gosetup_ipv4.gosetup_ipv6.gosetup_verify.go
host
ipvlan
ipvlan.goipvlan_endpoint.goipvlan_joinleave.goipvlan_network.goipvlan_setup.goipvlan_state.goipvlan_store.go
macvlan
macvlan.gomacvlan_endpoint.gomacvlan_joinleave.gomacvlan_network.gomacvlan_setup.gomacvlan_state.gomacvlan_store.go
null
overlay
encryption.gofilter.gojoinleave.goov_endpoint.goov_network.goov_serf.goov_utils.gooverlay.gooverlay.pb.gooverlay.proto
ovmanager
peerdb.goremote
solaris
bridge
overlay
windows
drvregistry
endpoint.goendpoint_cnt.goendpoint_info.goendpoint_info_unix.goendpoint_info_windows.goerror.goetchosts
hostdiscovery
idm
ipam
ipamapi
ipams
builtin
null
remote
windowsipam
ipamutils
iptables
ipvs
netlabel
netutils
network.gonetwork_unix.gonetwork_windows.gonetworkdb
broadcast.gocluster.godelegate.goevent_delegate.gomessage.gonetworkdb.gonetworkdb.pb.gonetworkdb.protowatch.go
ns
options
osl
interface_freebsd.gointerface_linux.gointerface_solaris.gointerface_windows.gonamespace_linux.gonamespace_unsupported.gonamespace_windows.goneigh_freebsd.goneigh_linux.goneigh_solaris.goneigh_windows.gooptions_linux.goroute_linux.gosandbox.gosandbox_freebsd.gosandbox_solaris.gosandbox_unsupported.go
portallocator
portmapper
resolvconf
resolver.goresolver_unix.goresolver_windows.gosandbox.gosandbox_dns_unix.gosandbox_dns_windows.gosandbox_externalkey.gosandbox_externalkey_solaris.gosandbox_externalkey_unix.gosandbox_externalkey_windows.gosandbox_store.goservice.goservice_common.goservice_linux.goservice_unsupported.goservice_windows.gostore.gotypes
libtrust
LICENSEREADME.mdcertificates.godoc.goec_key.gofilter.gohash.gojsonsign.gokey.gokey_files.gokey_manager.gorsa_key.goutil.go
notary
LICENSEREADME.md
client
const.goconst_nowindows.goconst_windows.gocryptoservice
notary.gopassphrase
storage
trustmanager
trustpinning
tuf
swarmkit
LICENSEREADME.md
agent
agent.goconfig.go
configs
dependency.goerrors.goexec
helpers.goreporter.goresource.gosecrets
session.gostorage.gotask.goworker.goapi
README.mdca.pb.goca.protocontrol.pb.gocontrol.proto
deepcopy
defaults
dispatcher.pb.godispatcher.protoequality
gen.gohealth.pb.gohealth.protologbroker.pb.gologbroker.protonaming
objects.pb.goobjects.protoraft.pb.goraft.protoresource.pb.goresource.protosnapshot.pb.gosnapshot.protospecs.pb.gospecs.protostore.pb.gostore.protostoreobject.gotypes.pb.gotypes.protoca
auth.gocertificates.goconfig.goexternal.goforward.gokeyreadwriter.goreconciler.goserver.gotransport.go
connectionbroker
identity
ioutils
log
manager
allocator
constraint
controlapi
deks.godirty.godispatcher
doc.goencryption
health
keymanager
logbroker
manager.goorchestrator
raftselector
resourceapi
role_manager.goscheduler
state
doc.goproposer.go
raft
store
apply.goby.goclusters.gocombinators.goconfigs.goextensions.gomemory.gonetworks.gonodes.goobject.goresources.gosecrets.goservices.gotasks.go
watch.gostoreapi
node
protobuf
remotes
template
watch
xnet
fluent
fluent-logger-golang
flynn-archive
fsnotify
fsnotify
go-check
go-ini
godbus
dbus
LICENSEREADME.markdownauth.goauth_external.goauth_sha1.gocall.goconn.goconn_darwin.goconn_other.godbus.godecoder.godoc.goencoder.goexport.gohomedir.gohomedir_dynamic.gohomedir_static.gomessage.goobject.gosig.gotransport_darwin.gotransport_generic.gotransport_tcp.gotransport_unix.gotransport_unixcred_dragonfly.gotransport_unixcred_linux.govariant.govariant_lexer.govariant_parser.go
gogo
protobuf
gogoproto
io
proto
clone.godecode.godecode_gogo.goduration.goduration_gogo.goencode.goencode_gogo.goequal.goextensions.goextensions_gogo.golib.golib_gogo.gomessage_set.gopointer_reflect.gopointer_unsafe.gopointer_unsafe_gogo.goproperties.goproperties_gogo.goskip_gogo.gotext.gotext_gogo.gotext_parser.gotimestamp.gotimestamp_gogo.go
protoc-gen-gogo
sortkeys
types
golang
protobuf
google
certificate-transparency
LICENSEREADME-MacOS.mdREADME.md
cpp
third_party
version.hgo
proto
googleapis
gorilla
grpc-ecosystem
hashicorp
consul
go-immutable-radix
go-memdb
go-msgpack
go-multierror
golang-lru
memberlist
LICENSEREADME.mdalive_delegate.gobroadcast.goconfig.goconflict_delegate.godelegate.goevent_delegate.gokeyring.gologging.gomemberlist.gomerge_delegate.gonet.goping_delegate.goqueue.gosecurity.gostate.goutil.go
serf
imdario
inconshreveable
jmespath
go-jmespath
kr
pty
LicenseREADME.mddoc.goioctl.goioctl_bsd.gopty_darwin.gopty_freebsd.gopty_linux.gopty_unsupported.gorun.gotypes.gotypes_freebsd.goutil.goztypes_386.goztypes_amd64.goztypes_arm.goztypes_arm64.goztypes_freebsd_386.goztypes_freebsd_amd64.goztypes_freebsd_arm.goztypes_ppc64.goztypes_ppc64le.goztypes_s390x.go
mattn
matttproud
miekg
dns
LICENSEREADME.mdclient.goclientconfig.godefaults.godns.godnssec.godnssec_keygen.godnssec_keyscan.godnssec_privkey.godoc.goedns.goformat.golabels.gomsg.gonsecx.goprivaterr.gorawmsg.gosanitize.goscanner.goserver.gosig0.gosingleinflight.gotlsa.gotsig.gotypes.gotypes_generate.goudp.goudp_linux.goudp_other.goudp_windows.goupdate.goxfr.gozgenerate.gozscan.gozscan_rr.goztypes.go
pkcs11
mistifyio
mitchellh
opencontainers
go-digest
runc
LICENSENOTICEREADME.md
libcontainer
README.md
apparmor
cgroups
configs
blkio_device.gocgroup_unix.gocgroup_unsupported.gocgroup_windows.goconfig.goconfig_unix.godevice.godevice_defaults.gohugepage_limit.gointerface_priority_map.gomount.gonamespaces.gonamespaces_syscall.gonamespaces_syscall_unsupported.gonamespaces_unix.gonamespaces_unsupported.gonetwork.go
devices
label
nsenter
selinux
system
linux.goproc.gosetns_linux.gosyscall_linux_386.gosyscall_linux_64.gosyscall_linux_arm.gosysconfig.gosysconfig_notcgo.gounsupported.goxattrs_linux.go
user
runtime-spec
pborman
uuid
philhofer
pivotal-golang
pkg
pmezard
go-difflib
prometheus
client_golang
client_model
common
procfs
samuel
go-zookeeper
seccomp
libseccomp-golang
spf13
cobra
pflag
stretchr
testify
syndtr
gocapability
tchap
go-patricia
tinylib
msgp
tonistiigi
ugorji
go
vbatts
tar-split
vdemeester
vishvananda
netlink
LICENSEREADME.mdaddr.goaddr_linux.gobpf_linux.goclass.goclass_linux.goconntrack_linux.goconntrack_unspecified.gofilter.gofilter_linux.gohandle_linux.gohandle_unspecified.golink.golink_linux.golink_tuntap_linux.goneigh.goneigh_linux.gonetlink.gonetlink_linux.gonetlink_unspecified.go
nl
addr_linux.goconntrack_linux.golink_linux.gompls_linux.gonl_linux.gonl_unspecified.goroute_linux.gosyscall.gotc_linux.goxfrm_linux.goxfrm_monitor_linux.goxfrm_policy_linux.goxfrm_state_linux.go
order.goprotinfo.goprotinfo_linux.goqdisc.goqdisc_linux.goroute.goroute_linux.goroute_unspecified.gorule.gorule_linux.gosocket.gosocket_linux.goxfrm.goxfrm_monitor_linux.goxfrm_policy.goxfrm_policy_linux.goxfrm_state.goxfrm_state_linux.gonetns
xeipuuv
gojsonpointer
gojsonreference
gojsonschema
golang.org
x
crypto
net
LICENSEPATENTSREADME
context
http2
READMEclient_conn_pool.goconfigure_transport.goerrors.gofixed_buffer.goflow.goframe.gogo16.gogo17.gogo17_not18.gogo18.gogotrack.goheadermap.go
hpack
http2.gonot_go16.gonot_go17.gonot_go18.gopipe.goserver.gotransport.gowrite.gowritesched.gowritesched_priority.gowritesched_random.goidna
internal
timeseries
lex
httplex
proxy
trace
websocket
oauth2
sys
LICENSEPATENTSREADME
unix
asm.sasm_darwin_386.sasm_darwin_amd64.sasm_darwin_arm.sasm_darwin_arm64.sasm_dragonfly_amd64.sasm_freebsd_386.sasm_freebsd_amd64.sasm_freebsd_arm.sasm_linux_386.sasm_linux_amd64.sasm_linux_arm.sasm_linux_arm64.sasm_linux_mips64x.sasm_linux_ppc64x.sasm_linux_s390x.sasm_netbsd_386.sasm_netbsd_amd64.sasm_netbsd_arm.sasm_openbsd_386.sasm_openbsd_amd64.sasm_solaris_amd64.sbluetooth_linux.goconstants.goenv_unix.goenv_unset.goflock.goflock_linux_32bit.gogccgo.gogccgo_c.cgccgo_linux_amd64.gomkpost.gorace.gorace0.gosockcmsg_linux.gosockcmsg_unix.gostr.gosyscall.gosyscall_bsd.gosyscall_darwin.gosyscall_darwin_386.gosyscall_darwin_amd64.gosyscall_darwin_arm.gosyscall_darwin_arm64.gosyscall_dragonfly.gosyscall_dragonfly_amd64.gosyscall_freebsd.gosyscall_freebsd_386.gosyscall_freebsd_amd64.gosyscall_freebsd_arm.gosyscall_linux.gosyscall_linux_386.gosyscall_linux_amd64.gosyscall_linux_arm.gosyscall_linux_arm64.gosyscall_linux_mips64x.gosyscall_linux_ppc64x.gosyscall_linux_s390x.gosyscall_netbsd.gosyscall_netbsd_386.gosyscall_netbsd_amd64.gosyscall_netbsd_arm.gosyscall_no_getwd.gosyscall_openbsd.gosyscall_openbsd_386.gosyscall_openbsd_amd64.gosyscall_solaris.gosyscall_solaris_amd64.gosyscall_unix.gotypes_darwin.gotypes_dragonfly.gotypes_freebsd.gotypes_linux.gotypes_netbsd.gotypes_openbsd.gotypes_solaris.gozerrors_darwin_386.gozerrors_darwin_amd64.gozerrors_darwin_arm.gozerrors_darwin_arm64.gozerrors_dragonfly_amd64.gozerrors_freebsd_386.gozerrors_freebsd_amd64.gozerrors_freebsd_arm.gozerrors_linux_386.gozerrors_linux_amd64.gozerrors_linux_arm.gozerrors_linux_arm64.gozerrors_linux_mips64.gozerrors_linux_mips64le.gozerrors_linux_ppc64.gozerrors_linux_ppc64le.gozerrors_linux_s390x.gozerrors_netbsd_386.gozerrors_netbsd_amd64.gozerrors_netbsd_arm.gozerrors_openbsd_386.gozerrors_openbsd_amd64.gozerrors_solaris_amd64.gozsyscall_darwin_386.gozsyscall_darwin_amd64.gozsyscall_darwin_arm.gozsyscall_darwin_arm64.gozsyscall_dragonfly_amd64.gozsyscall_freebsd_386.gozsyscall_freebsd_amd64.gozsyscall_freebsd_arm.gozsyscall_linux_386.gozsyscall_linux_amd64.gozsyscall_linux_arm.gozsyscall_linux_arm64.gozsyscall_linux_mips64.gozsyscall_linux_mips64le.gozsyscall_linux_ppc64.gozsyscall_linux_ppc64le.gozsyscall_linux_s390x.gozsyscall_netbsd_386.gozsyscall_netbsd_amd64.gozsyscall_netbsd_arm.gozsyscall_openbsd_386.gozsyscall_openbsd_amd64.gozsyscall_solaris_amd64.gozsysctl_openbsd.gozsysnum_darwin_386.gozsysnum_darwin_amd64.gozsysnum_darwin_arm.gozsysnum_darwin_arm64.gozsysnum_dragonfly_amd64.gozsysnum_freebsd_386.gozsysnum_freebsd_amd64.gozsysnum_freebsd_arm.gozsysnum_linux_386.gozsysnum_linux_amd64.gozsysnum_linux_arm.gozsysnum_linux_arm64.gozsysnum_linux_mips64.gozsysnum_linux_mips64le.gozsysnum_linux_ppc64.gozsysnum_linux_ppc64le.gozsysnum_linux_s390x.gozsysnum_netbsd_386.gozsysnum_netbsd_amd64.gozsysnum_netbsd_arm.gozsysnum_openbsd_386.gozsysnum_openbsd_amd64.gozsysnum_solaris_amd64.goztypes_darwin_386.goztypes_darwin_amd64.goztypes_darwin_arm.goztypes_darwin_arm64.goztypes_dragonfly_amd64.goztypes_freebsd_386.goztypes_freebsd_amd64.goztypes_freebsd_arm.goztypes_linux_386.goztypes_linux_amd64.goztypes_linux_arm.goztypes_linux_arm64.goztypes_linux_mips64.goztypes_linux_mips64le.goztypes_linux_ppc64.goztypes_linux_ppc64le.goztypes_linux_s390x.goztypes_netbsd_386.goztypes_netbsd_amd64.goztypes_netbsd_arm.goztypes_openbsd_386.goztypes_openbsd_amd64.goztypes_solaris_amd64.go
windows
asm_windows_386.sasm_windows_amd64.sdll_windows.goenv_unset.goenv_windows.goeventlog.goexec_windows.gomksyscall.gorace.gorace0.go
registry
security_windows.goservice.gostr.gosvc
syscall.gosyscall_windows.gozsyscall_windows.goztypes_windows.goztypes_windows_386.goztypes_windows_amd64.gotext
LICENSEPATENTSREADME
internal
secure
bidirule
transform
unicode
time
google.golang.org
api
genproto
grpc
LICENSEPATENTSREADME.mdbackoff.gobalancer.gocall.goclientconn.gointerceptor.go
codes
credentials
doc.gogrpclog
health
grpc_health_v1
internal
metadata
naming
peer
rpc_util.goserver.gostream.gotrace.gotransport
gopkg.in
volume
drivers
local
store
testutils
validate.govalidate_test.govalidate_test_unix.govalidate_test_windows.govolume.govolume_copy.govolume_copy_unix.govolume_copy_windows.govolume_linux.govolume_linux_test.govolume_propagation_linux.govolume_propagation_linux_test.govolume_propagation_unsupported.govolume_test.govolume_unix.govolume_unsupported.govolume_windows.gogo-connections
go-units
libtrust
gogo
protobuf
golang
protobuf
.gitignoreAUTHORSCONTRIBUTORSMake.protobufMakefileREADME.md
_conformance
descriptor
jsonpb
proto
Makefileall_test.goany_test.goclone_test.godecode_test.goencode.goencode_test.goequal_test.goextensions_test.golib.gomap_test.gomessage_set_test.go
proto3_proto
proto3_test.gosize2_test.gosize_test.gotestdata
text_parser.gotext_parser_test.gotext_test.goprotoc-gen-go
ptypes
gorilla
context
mux
matttproud
golang_protobuf_extensions
opencontainers
go-digest
pkg
errors
prometheus
client_golang
.gitignore.travis.ymlCHANGELOG.mdCONTRIBUTING.mdMAINTAINERS.mdVERSION
api
examples
prometheus
.gitignorebenchmark_test.gocounter.gocounter_test.godoc.goexample_clustermanager_test.goexample_timer_complex_test.goexample_timer_gauge_test.goexample_timer_test.goexamples_test.goexpvar_collector_test.gogauge.gogauge_test.gogo_collector_test.go
graphite
histogram.gohistogram_test.gohttp.gohttp_test.gometric_test.goprocess_collector_test.gopromhttp
push
registry.goregistry_test.gosummary.gosummary_test.gotimer.gotimer_test.gountyped.govec.govec_test.goclient_model
.gitignoreCONTRIBUTING.mdMAINTAINERS.mdMakefile
cpp
metrics.protopom.xmlpython
prometheus
ruby
setup.pysrc
main
java
io
prometheus
client
common
.travis.ymlCONTRIBUTING.mdMAINTAINERS.mdREADME.md
config
config.go
testdata
tls_config.cert_no_key.bad.ymltls_config.empty.good.ymltls_config.insecure.good.ymltls_config.invalid_field.bad.ymltls_config.key_no_cert.bad.yml
tls_config.gotls_config_test.goexpfmt
bench_test.godecode_test.go
fuzz
corpus
from_test_parse_0from_test_parse_1from_test_parse_2from_test_parse_3from_test_parse_4from_test_parse_error_0from_test_parse_error_1from_test_parse_error_10from_test_parse_error_11from_test_parse_error_12from_test_parse_error_13from_test_parse_error_14from_test_parse_error_15from_test_parse_error_16from_test_parse_error_17from_test_parse_error_18from_test_parse_error_19from_test_parse_error_2from_test_parse_error_3from_test_parse_error_4from_test_parse_error_5from_test_parse_error_6from_test_parse_error_7from_test_parse_error_8from_test_parse_error_9minimal
testdata
text_create_test.gotext_parse.gotext_parse_test.gointernal
bitbucket.org
ww
goautoneg
log
model
alert_test.golabels_test.gometric_test.gosignature_test.gosilence_test.gotime.gotime_test.govalue_test.go
route
version
procfs
.travis.ymlCONTRIBUTING.mdMAINTAINERS.mdMakefilebuddyinfo_test.go
fixtures
fs_test.goipvs.goipvs_test.gomdstat_test.gomountstats_test.goproc_io_test.goproc_limits_test.goproc_stat_test.goproc_test.gostat.gostat_test.gosysfs
xfrm.goxfs
spf13
golang.org
x
net
.gitattributes.gitignoreAUTHORSCONTRIBUTING.mdCONTRIBUTORS
bpf
asm.goconstants.godoc.goinstructions.goinstructions_test.go
codereview.cfgtestdata
vm.govm_aluop_test.govm_bpf_test.govm_extension_test.govm_instructions.govm_jump_test.govm_load_test.govm_ret_test.govm_scratch_test.govm_test.gocontext
dict
dns
dnsmessage
html
atom
charset
const.godoc.godoctype.goentity.goentity_test.goescape.goescape_test.goexample_test.goforeign.gonode.gonode_test.goparse.goparse_test.gorender.gorender_test.gotestdata
go1.html
token.gotoken_test.gowebkit
READMEadoption01.datadoption02.datcomments01.datdoctype01.datentities01.datentities02.dathtml5test-com.datinbody01.datisindex.datpending-spec-changes-plain-text-unsafe.datpending-spec-changes.datplain-text-unsafe.datscriptdata01.dat
scripted
tables01.dattests1.dattests10.dattests11.dattests12.dattests14.dattests15.dattests16.dattests17.dattests18.dattests19.dattests2.dattests20.dattests21.dattests22.dattests23.dattests24.dattests25.dattests26.dattests3.dattests4.dattests5.dattests6.dattests7.dattests8.dattests9.dattests_innerHTML_1.dattricky01.datwebkit01.datwebkit02.dathttp2
.gitignoreDockerfileMakefileREADMEclient_conn_pool.goconfigure_transport.godatabuffer.godatabuffer_test.goerrors.goerrors_test.goflow.goflow_test.goframe.goframe_test.gogo16.gogo17.gogo17_not18.gogo18.gogo18_test.gogotrack.gogotrack_test.go
h2demo
h2i
headermap.gohpack
http2.gohttp2_test.gonot_go16.gonot_go17.gonot_go18.gopipe.gopipe_test.goserver.goserver_push_test.goserver_test.gotestdata
transport.gotransport_test.gowrite.gowritesched.gowritesched_priority.gowritesched_priority_test.gowritesched_random.gowritesched_random_test.gowritesched_test.goz_spec_test.goicmp
dstunreach.goecho.goendpoint.goexample_test.goextension.goextension_test.gohelper.gohelper_posix.gointerface.goipv4.goipv4_test.goipv6.golisten_posix.golisten_stub.gomessage.gomessage_test.gomessagebody.gompls.gomultipart.gomultipart_test.gopackettoobig.goparamprob.goping_test.gosys_freebsd.gotimeexceeded.go
idna
internal
iana
netreflect
nettest
helper_bsd.gohelper_nobsd.gohelper_posix.gohelper_stub.gohelper_unix.gohelper_windows.gointerface.gorlimit.gostack.go
timeseries
ipv4
bpf_test.gobpfopt_linux.gobpfopt_stub.gocontrol.gocontrol_bsd.gocontrol_pktinfo.gocontrol_stub.gocontrol_unix.gocontrol_windows.godefs_darwin.godefs_dragonfly.godefs_freebsd.godefs_linux.godefs_netbsd.godefs_openbsd.godefs_solaris.godgramopt_posix.godgramopt_stub.godoc.goendpoint.goexample_test.gogen.gogenericopt_posix.gogenericopt_stub.gogo19_test.goheader.goheader_test.gohelper.goiana.goicmp.goicmp_linux.goicmp_stub.goicmp_test.goipv4_test.gomulticast_test.gomulticastlistener_test.gomulticastsockopt_test.gopacket.gopayload.gopayload_cmsg.gopayload_nocmsg.goreadwrite_test.gosockopt.gosockopt_asmreq.gosockopt_asmreq_posix.gosockopt_asmreq_stub.gosockopt_asmreqn_stub.gosockopt_asmreqn_unix.gosockopt_posix.gosockopt_ssmreq_stub.gosockopt_ssmreq_unix.gosockopt_stub.gosys_bsd.gosys_darwin.gosys_freebsd.gosys_linux.gosys_linux_386.ssys_openbsd.gosys_solaris.gosys_solaris_amd64.ssys_stub.gosys_windows.gosyscall_linux_386.gosyscall_solaris.gosyscall_unix.gosyscall_windows.gounicast_test.gounicastsockopt_test.gozsys_darwin.gozsys_dragonfly.gozsys_freebsd_386.gozsys_freebsd_amd64.gozsys_freebsd_arm.gozsys_linux_386.gozsys_linux_amd64.gozsys_linux_arm.gozsys_linux_arm64.gozsys_linux_mips.gozsys_linux_mips64.gozsys_linux_mips64le.gozsys_linux_mipsle.gozsys_linux_ppc.gozsys_linux_ppc64.gozsys_linux_ppc64le.gozsys_linux_s390x.gozsys_netbsd.gozsys_openbsd.gozsys_solaris.go
ipv6
bpf_test.gobpfopt_linux.gobpfopt_stub.gocontrol.gocontrol_rfc2292_unix.gocontrol_rfc3542_unix.gocontrol_stub.gocontrol_unix.gocontrol_windows.godefs_darwin.godefs_dragonfly.godefs_freebsd.godefs_linux.godefs_netbsd.godefs_openbsd.godefs_solaris.godgramopt_posix.godgramopt_stub.godoc.goendpoint.goexample_test.gogen.gogenericopt_posix.gogenericopt_stub.gogo19_test.goheader.goheader_test.gohelper.goiana.goicmp.goicmp_bsd.goicmp_linux.goicmp_solaris.goicmp_stub.goicmp_test.goicmp_windows.goipv6_test.gomocktransponder_test.gomulticast_test.gomulticastlistener_test.gomulticastsockopt_test.gopayload.gopayload_cmsg.gopayload_nocmsg.goreadwrite_test.gosockopt.gosockopt_asmreq_posix.gosockopt_posix.gosockopt_ssmreq_stub.gosockopt_ssmreq_unix.gosockopt_stub.gosockopt_test.gosys_bsd.gosys_darwin.gosys_freebsd.gosys_linux.gosys_linux_386.ssys_solaris.gosys_solaris_amd64.ssys_stub.gosys_windows.gosyscall_linux_386.gosyscall_solaris.gosyscall_unix.gosyscall_windows.gounicast_test.gounicastsockopt_test.gozsys_darwin.gozsys_dragonfly.gozsys_freebsd_386.gozsys_freebsd_amd64.gozsys_freebsd_arm.gozsys_linux_386.gozsys_linux_amd64.gozsys_linux_arm.gozsys_linux_arm64.gozsys_linux_mips.gozsys_linux_mips64.gozsys_linux_mips64le.gozsys_linux_mipsle.gozsys_linux_ppc.gozsys_linux_ppc64.gozsys_linux_ppc64le.gozsys_linux_s390x.gozsys_netbsd.gozsys_openbsd.gozsys_solaris.go
lex
httplex
lif
address.goaddress_test.gobinary.godefs_solaris.golif.golink.golink_test.gosys.gosys_solaris_amd64.ssyscall.gozsys_solaris_amd64.go
nettest
netutil
proxy
publicsuffix
route
address.goaddress_darwin_test.goaddress_test.gobinary.godefs_darwin.godefs_dragonfly.godefs_freebsd.godefs_netbsd.godefs_openbsd.gointerface.gointerface_announce.gointerface_classic.gointerface_freebsd.gointerface_multicast.gointerface_openbsd.gomessage.gomessage_darwin_test.gomessage_freebsd_test.gomessage_test.goroute.goroute_classic.goroute_openbsd.goroute_test.gosys.gosys_darwin.gosys_dragonfly.gosys_freebsd.gosys_netbsd.gosys_openbsd.gosyscall.gozsys_darwin.gozsys_dragonfly.gozsys_freebsd_386.gozsys_freebsd_amd64.gozsys_freebsd_arm.gozsys_netbsd.gozsys_openbsd.go
trace
webdav
file.gofile_go1.6.gofile_go1.7.gofile_test.goif.goif_test.golitmus_test_server.golock.golock_test.goprop.goprop_test.gowebdav.gowebdav_test.goxml.goxml_test.go
internal
xml
websocket
client.godial.godial_test.goexampledial_test.goexamplehandler_test.gohybi.gohybi_test.goserver.gowebsocket.gowebsocket_test.go
xsrftoken
sys
.gitattributes.gitignoreAUTHORSCONTRIBUTING.mdCONTRIBUTORScodereview.cfg
plan9
asm.sasm_plan9_386.sasm_plan9_amd64.sconst_plan9.godir_plan9.goenv_plan9.goenv_unset.goerrors_plan9.gomkall.shmkerrors.shmksyscall.plmksysnum_plan9.shpwd_go15_plan9.gopwd_plan9.gorace.gorace0.gostr.gosyscall.gosyscall_plan9.gosyscall_test.gozsyscall_plan9_386.gozsyscall_plan9_amd64.gozsysnum_plan9.go
unix
.gitignoreasm_solaris_amd64.screds_test.goexport_test.go
linux
mkall.shmkerrors.shmksyscall.plmksyscall_solaris.plmksysctl_openbsd.plmksysnum_darwin.plmksysnum_dragonfly.plmksysnum_freebsd.plmksysnum_netbsd.plmksysnum_openbsd.plmmap_unix_test.goopenbsd_test.gosockcmsg_unix.gosyscall_bsd_test.gosyscall_dragonfly.gosyscall_freebsd_test.gosyscall_linux.gosyscall_linux_mips64x.gosyscall_linux_mipsx.gosyscall_linux_test.gosyscall_solaris.gosyscall_test.gosyscall_unix.gosyscall_unix_test.gotypes_solaris.gozerrors_dragonfly_amd64.gozerrors_linux_386.gozerrors_linux_amd64.gozerrors_linux_arm.gozerrors_linux_arm64.gozerrors_linux_mips.gozerrors_linux_mips64.gozerrors_linux_mips64le.gozerrors_linux_mipsle.gozerrors_linux_ppc64.gozerrors_linux_ppc64le.gozerrors_linux_s390x.gozerrors_solaris_amd64.gozsyscall_dragonfly_amd64.gozsyscall_linux_386.gozsyscall_linux_amd64.gozsyscall_linux_arm.gozsyscall_linux_arm64.gozsyscall_linux_mips.gozsyscall_linux_mips64.gozsyscall_linux_mips64le.gozsyscall_linux_mipsle.gozsyscall_linux_ppc64.gozsyscall_linux_ppc64le.gozsyscall_linux_s390x.gozsyscall_linux_sparc64.gozsyscall_solaris_amd64.gozsysnum_dragonfly_amd64.goztypes_dragonfly_amd64.goztypes_linux_386.goztypes_linux_amd64.goztypes_linux_arm.goztypes_linux_arm64.goztypes_linux_mips.goztypes_linux_mips64.goztypes_linux_mips64le.goztypes_linux_mipsle.goztypes_linux_ppc64.goztypes_linux_ppc64le.goztypes_linux_s390x.goztypes_solaris_amd64.gowindows
16
gateway/vendor/github.com/docker/distribution/docs/README.md
generated
vendored
16
gateway/vendor/github.com/docker/distribution/docs/README.md
generated
vendored
@ -1,16 +0,0 @@
|
||||
# The docs have been moved!
|
||||
|
||||
The documentation for Registry has been merged into
|
||||
[the general documentation repo](https://github.com/docker/docker.github.io).
|
||||
Commit history has been preserved.
|
||||
|
||||
The docs for Registry are now here:
|
||||
https://github.com/docker/docker.github.io/tree/master/registry
|
||||
|
||||
> Note: The definitive [./spec directory](spec/) directory and
|
||||
[configuration.md](configuration.md) file will be maintained in this repository
|
||||
and be refreshed periodically in
|
||||
[the general documentation repo](https://github.com/docker/docker.github.io).
|
||||
|
||||
As always, the docs in the general repo remain open-source and we appreciate
|
||||
your feedback and pull requests!
|
1120
gateway/vendor/github.com/docker/distribution/docs/configuration.md
generated
vendored
1120
gateway/vendor/github.com/docker/distribution/docs/configuration.md
generated
vendored
File diff suppressed because it is too large
Load Diff
5485
gateway/vendor/github.com/docker/distribution/docs/spec/api.md
generated
vendored
5485
gateway/vendor/github.com/docker/distribution/docs/spec/api.md
generated
vendored
File diff suppressed because it is too large
Load Diff
1215
gateway/vendor/github.com/docker/distribution/docs/spec/api.md.tmpl
generated
vendored
1215
gateway/vendor/github.com/docker/distribution/docs/spec/api.md.tmpl
generated
vendored
File diff suppressed because it is too large
Load Diff
12
gateway/vendor/github.com/docker/distribution/docs/spec/auth/index.md
generated
vendored
12
gateway/vendor/github.com/docker/distribution/docs/spec/auth/index.md
generated
vendored
@ -1,12 +0,0 @@
|
||||
---
|
||||
title: "Docker Registry Token Authentication"
|
||||
description: "Docker Registry v2 authentication schema"
|
||||
keywords: ["registry, on-prem, images, tags, repository, distribution, authentication, advanced"]
|
||||
---
|
||||
|
||||
# Docker Registry v2 authentication
|
||||
|
||||
See the [Token Authentication Specification](token.md),
|
||||
[Token Authentication Implementation](jwt.md),
|
||||
[Token Scope Documentation](scope.md),
|
||||
[OAuth2 Token Authentication](oauth.md) for more information.
|
329
gateway/vendor/github.com/docker/distribution/docs/spec/auth/jwt.md
generated
vendored
329
gateway/vendor/github.com/docker/distribution/docs/spec/auth/jwt.md
generated
vendored
@ -1,329 +0,0 @@
|
||||
---
|
||||
title: "Token Authentication Implementation"
|
||||
description: "Describe the reference implementation of the Docker Registry v2 authentication schema"
|
||||
keywords: ["registry, on-prem, images, tags, repository, distribution, JWT authentication, advanced"]
|
||||
---
|
||||
|
||||
# Docker Registry v2 Bearer token specification
|
||||
|
||||
This specification covers the `docker/distribution` implementation of the
|
||||
v2 Registry's authentication schema. Specifically, it describes the JSON
|
||||
Web Token schema that `docker/distribution` has adopted to implement the
|
||||
client-opaque Bearer token issued by an authentication service and
|
||||
understood by the registry.
|
||||
|
||||
This document borrows heavily from the [JSON Web Token Draft Spec](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32)
|
||||
|
||||
## Getting a Bearer Token
|
||||
|
||||
For this example, the client makes an HTTP GET request to the following URL:
|
||||
|
||||
```
|
||||
https://auth.docker.io/token?service=registry.docker.io&scope=repository:samalba/my-app:pull,push
|
||||
```
|
||||
|
||||
The token server should first attempt to authenticate the client using any
|
||||
authentication credentials provided with the request. As of Docker 1.8, the
|
||||
registry client in the Docker Engine only supports Basic Authentication to
|
||||
these token servers. If an attempt to authenticate to the token server fails,
|
||||
the token server should return a `401 Unauthorized` response indicating that
|
||||
the provided credentials are invalid.
|
||||
|
||||
Whether the token server requires authentication is up to the policy of that
|
||||
access control provider. Some requests may require authentication to determine
|
||||
access (such as pushing or pulling a private repository) while others may not
|
||||
(such as pulling from a public repository).
|
||||
|
||||
After authenticating the client (which may simply be an anonymous client if
|
||||
no attempt was made to authenticate), the token server must next query its
|
||||
access control list to determine whether the client has the requested scope. In
|
||||
this example request, if I have authenticated as user `jlhawn`, the token
|
||||
server will determine what access I have to the repository `samalba/my-app`
|
||||
hosted by the entity `registry.docker.io`.
|
||||
|
||||
Once the token server has determined what access the client has to the
|
||||
resources requested in the `scope` parameter, it will take the intersection of
|
||||
the set of requested actions on each resource and the set of actions that the
|
||||
client has in fact been granted. If the client only has a subset of the
|
||||
requested access **it must not be considered an error** as it is not the
|
||||
responsibility of the token server to indicate authorization errors as part of
|
||||
this workflow.
|
||||
|
||||
Continuing with the example request, the token server will find that the
|
||||
client's set of granted access to the repository is `[pull, push]` which when
|
||||
intersected with the requested access `[pull, push]` yields an equal set. If
|
||||
the granted access set was found only to be `[pull]` then the intersected set
|
||||
would only be `[pull]`. If the client has no access to the repository then the
|
||||
intersected set would be empty, `[]`.
|
||||
|
||||
It is this intersected set of access which is placed in the returned token.
|
||||
|
||||
The server will now construct a JSON Web Token to sign and return. A JSON Web
|
||||
Token has 3 main parts:
|
||||
|
||||
1. Headers
|
||||
|
||||
The header of a JSON Web Token is a standard JOSE header. The "typ" field
|
||||
will be "JWT" and it will also contain the "alg" which identifies the
|
||||
signing algorithm used to produce the signature. It also must have a "kid"
|
||||
field, representing the ID of the key which was used to sign the token.
|
||||
|
||||
The "kid" field has to be in a libtrust fingerprint compatible format.
|
||||
Such a format can be generated by following steps:
|
||||
|
||||
1. Take the DER encoded public key which the JWT token was signed against.
|
||||
|
||||
2. Create a SHA256 hash out of it and truncate to 240bits.
|
||||
|
||||
3. Split the result into 12 base32 encoded groups with `:` as delimiter.
|
||||
|
||||
Here is an example JOSE Header for a JSON Web Token (formatted with
|
||||
whitespace for readability):
|
||||
|
||||
```
|
||||
{
|
||||
"typ": "JWT",
|
||||
"alg": "ES256",
|
||||
"kid": "PYYO:TEWU:V7JH:26JV:AQTZ:LJC3:SXVJ:XGHA:34F2:2LAQ:ZRMK:Z7Q6"
|
||||
}
|
||||
```
|
||||
|
||||
It specifies that this object is going to be a JSON Web token signed using
|
||||
the key with the given ID using the Elliptic Curve signature algorithm
|
||||
using a SHA256 hash.
|
||||
|
||||
2. Claim Set
|
||||
|
||||
The Claim Set is a JSON struct containing these standard registered claim
|
||||
name fields:
|
||||
|
||||
<dl>
|
||||
<dt>
|
||||
<code>iss</code> (Issuer)
|
||||
</dt>
|
||||
<dd>
|
||||
The issuer of the token, typically the fqdn of the authorization
|
||||
server.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>sub</code> (Subject)
|
||||
</dt>
|
||||
<dd>
|
||||
The subject of the token; the name or id of the client which
|
||||
requested it. This should be empty (`""`) if the client did not
|
||||
authenticate.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>aud</code> (Audience)
|
||||
</dt>
|
||||
<dd>
|
||||
The intended audience of the token; the name or id of the service
|
||||
which will verify the token to authorize the client/subject.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>exp</code> (Expiration)
|
||||
</dt>
|
||||
<dd>
|
||||
The token should only be considered valid up to this specified date
|
||||
and time.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>nbf</code> (Not Before)
|
||||
</dt>
|
||||
<dd>
|
||||
The token should not be considered valid before this specified date
|
||||
and time.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>iat</code> (Issued At)
|
||||
</dt>
|
||||
<dd>
|
||||
Specifies the date and time which the Authorization server
|
||||
generated this token.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>jti</code> (JWT ID)
|
||||
</dt>
|
||||
<dd>
|
||||
A unique identifier for this token. Can be used by the intended
|
||||
audience to prevent replays of the token.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
The Claim Set will also contain a private claim name unique to this
|
||||
authorization server specification:
|
||||
|
||||
<dl>
|
||||
<dt>
|
||||
<code>access</code>
|
||||
</dt>
|
||||
<dd>
|
||||
An array of access entry objects with the following fields:
|
||||
|
||||
<dl>
|
||||
<dt>
|
||||
<code>type</code>
|
||||
</dt>
|
||||
<dd>
|
||||
The type of resource hosted by the service.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>name</code>
|
||||
</dt>
|
||||
<dd>
|
||||
The name of the resource of the given type hosted by the
|
||||
service.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>actions</code>
|
||||
</dt>
|
||||
<dd>
|
||||
An array of strings which give the actions authorized on
|
||||
this resource.
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
Here is an example of such a JWT Claim Set (formatted with whitespace for
|
||||
readability):
|
||||
|
||||
```
|
||||
{
|
||||
"iss": "auth.docker.com",
|
||||
"sub": "jlhawn",
|
||||
"aud": "registry.docker.com",
|
||||
"exp": 1415387315,
|
||||
"nbf": 1415387015,
|
||||
"iat": 1415387015,
|
||||
"jti": "tYJCO1c6cnyy7kAn0c7rKPgbV1H1bFws",
|
||||
"access": [
|
||||
{
|
||||
"type": "repository",
|
||||
"name": "samalba/my-app",
|
||||
"actions": [
|
||||
"pull",
|
||||
"push"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
3. Signature
|
||||
|
||||
The authorization server will produce a JOSE header and Claim Set with no
|
||||
extraneous whitespace, i.e., the JOSE Header from above would be
|
||||
|
||||
```
|
||||
{"typ":"JWT","alg":"ES256","kid":"PYYO:TEWU:V7JH:26JV:AQTZ:LJC3:SXVJ:XGHA:34F2:2LAQ:ZRMK:Z7Q6"}
|
||||
```
|
||||
|
||||
and the Claim Set from above would be
|
||||
|
||||
```
|
||||
{"iss":"auth.docker.com","sub":"jlhawn","aud":"registry.docker.com","exp":1415387315,"nbf":1415387015,"iat":1415387015,"jti":"tYJCO1c6cnyy7kAn0c7rKPgbV1H1bFws","access":[{"type":"repository","name":"samalba/my-app","actions":["push","pull"]}]}
|
||||
```
|
||||
|
||||
The utf-8 representation of this JOSE header and Claim Set are then
|
||||
url-safe base64 encoded (sans trailing '=' buffer), producing:
|
||||
|
||||
```
|
||||
eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IlBZWU86VEVXVTpWN0pIOjI2SlY6QVFUWjpMSkMzOlNYVko6WEdIQTozNEYyOjJMQVE6WlJNSzpaN1E2In0
|
||||
```
|
||||
|
||||
for the JOSE Header and
|
||||
|
||||
```
|
||||
eyJpc3MiOiJhdXRoLmRvY2tlci5jb20iLCJzdWIiOiJqbGhhd24iLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuY29tIiwiZXhwIjoxNDE1Mzg3MzE1LCJuYmYiOjE0MTUzODcwMTUsImlhdCI6MTQxNTM4NzAxNSwianRpIjoidFlKQ08xYzZjbnl5N2tBbjBjN3JLUGdiVjFIMWJGd3MiLCJhY2Nlc3MiOlt7InR5cGUiOiJyZXBvc2l0b3J5IiwibmFtZSI6InNhbWFsYmEvbXktYXBwIiwiYWN0aW9ucyI6WyJwdXNoIl19XX0
|
||||
```
|
||||
|
||||
for the Claim Set. These two are concatenated using a '.' character,
|
||||
yielding the string:
|
||||
|
||||
```
|
||||
eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IlBZWU86VEVXVTpWN0pIOjI2SlY6QVFUWjpMSkMzOlNYVko6WEdIQTozNEYyOjJMQVE6WlJNSzpaN1E2In0.eyJpc3MiOiJhdXRoLmRvY2tlci5jb20iLCJzdWIiOiJqbGhhd24iLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuY29tIiwiZXhwIjoxNDE1Mzg3MzE1LCJuYmYiOjE0MTUzODcwMTUsImlhdCI6MTQxNTM4NzAxNSwianRpIjoidFlKQ08xYzZjbnl5N2tBbjBjN3JLUGdiVjFIMWJGd3MiLCJhY2Nlc3MiOlt7InR5cGUiOiJyZXBvc2l0b3J5IiwibmFtZSI6InNhbWFsYmEvbXktYXBwIiwiYWN0aW9ucyI6WyJwdXNoIl19XX0
|
||||
```
|
||||
|
||||
This is then used as the payload to a the `ES256` signature algorithm
|
||||
specified in the JOSE header and specified fully in [Section 3.4 of the JSON Web Algorithms (JWA)
|
||||
draft specification](https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-38#section-3.4)
|
||||
|
||||
This example signature will use the following ECDSA key for the server:
|
||||
|
||||
```
|
||||
{
|
||||
"kty": "EC",
|
||||
"crv": "P-256",
|
||||
"kid": "PYYO:TEWU:V7JH:26JV:AQTZ:LJC3:SXVJ:XGHA:34F2:2LAQ:ZRMK:Z7Q6",
|
||||
"d": "R7OnbfMaD5J2jl7GeE8ESo7CnHSBm_1N2k9IXYFrKJA",
|
||||
"x": "m7zUpx3b-zmVE5cymSs64POG9QcyEpJaYCD82-549_Q",
|
||||
"y": "dU3biz8sZ_8GPB-odm8Wxz3lNDr1xcAQQPQaOcr1fmc"
|
||||
}
|
||||
```
|
||||
|
||||
A resulting signature of the above payload using this key is:
|
||||
|
||||
```
|
||||
QhflHPfbd6eVF4lM9bwYpFZIV0PfikbyXuLx959ykRTBpe3CYnzs6YBK8FToVb5R47920PVLrh8zuLzdCr9t3w
|
||||
```
|
||||
|
||||
Concatenating all of these together with a `.` character gives the
|
||||
resulting JWT:
|
||||
|
||||
```
|
||||
eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IlBZWU86VEVXVTpWN0pIOjI2SlY6QVFUWjpMSkMzOlNYVko6WEdIQTozNEYyOjJMQVE6WlJNSzpaN1E2In0.eyJpc3MiOiJhdXRoLmRvY2tlci5jb20iLCJzdWIiOiJqbGhhd24iLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuY29tIiwiZXhwIjoxNDE1Mzg3MzE1LCJuYmYiOjE0MTUzODcwMTUsImlhdCI6MTQxNTM4NzAxNSwianRpIjoidFlKQ08xYzZjbnl5N2tBbjBjN3JLUGdiVjFIMWJGd3MiLCJhY2Nlc3MiOlt7InR5cGUiOiJyZXBvc2l0b3J5IiwibmFtZSI6InNhbWFsYmEvbXktYXBwIiwiYWN0aW9ucyI6WyJwdXNoIl19XX0.QhflHPfbd6eVF4lM9bwYpFZIV0PfikbyXuLx959ykRTBpe3CYnzs6YBK8FToVb5R47920PVLrh8zuLzdCr9t3w
|
||||
```
|
||||
|
||||
This can now be placed in an HTTP response and returned to the client to use to
|
||||
authenticate to the audience service:
|
||||
|
||||
|
||||
```
|
||||
HTTP/1.1 200 OK
|
||||
Content-Type: application/json
|
||||
|
||||
{"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IlBZWU86VEVXVTpWN0pIOjI2SlY6QVFUWjpMSkMzOlNYVko6WEdIQTozNEYyOjJMQVE6WlJNSzpaN1E2In0.eyJpc3MiOiJhdXRoLmRvY2tlci5jb20iLCJzdWIiOiJqbGhhd24iLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuY29tIiwiZXhwIjoxNDE1Mzg3MzE1LCJuYmYiOjE0MTUzODcwMTUsImlhdCI6MTQxNTM4NzAxNSwianRpIjoidFlKQ08xYzZjbnl5N2tBbjBjN3JLUGdiVjFIMWJGd3MiLCJhY2Nlc3MiOlt7InR5cGUiOiJyZXBvc2l0b3J5IiwibmFtZSI6InNhbWFsYmEvbXktYXBwIiwiYWN0aW9ucyI6WyJwdXNoIl19XX0.QhflHPfbd6eVF4lM9bwYpFZIV0PfikbyXuLx959ykRTBpe3CYnzs6YBK8FToVb5R47920PVLrh8zuLzdCr9t3w"}
|
||||
```
|
||||
|
||||
## Using the signed token
|
||||
|
||||
Once the client has a token, it will try the registry request again with the
|
||||
token placed in the HTTP `Authorization` header like so:
|
||||
|
||||
```
|
||||
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IkJWM0Q6MkFWWjpVQjVaOktJQVA6SU5QTDo1RU42Ok40SjQ6Nk1XTzpEUktFOkJWUUs6M0ZKTDpQT1RMIn0.eyJpc3MiOiJhdXRoLmRvY2tlci5jb20iLCJzdWIiOiJCQ0NZOk9VNlo6UUVKNTpXTjJDOjJBVkM6WTdZRDpBM0xZOjQ1VVc6NE9HRDpLQUxMOkNOSjU6NUlVTCIsImF1ZCI6InJlZ2lzdHJ5LmRvY2tlci5jb20iLCJleHAiOjE0MTUzODczMTUsIm5iZiI6MTQxNTM4NzAxNSwiaWF0IjoxNDE1Mzg3MDE1LCJqdGkiOiJ0WUpDTzFjNmNueXk3a0FuMGM3cktQZ2JWMUgxYkZ3cyIsInNjb3BlIjoiamxoYXduOnJlcG9zaXRvcnk6c2FtYWxiYS9teS1hcHA6cHVzaCxwdWxsIGpsaGF3bjpuYW1lc3BhY2U6c2FtYWxiYTpwdWxsIn0.Y3zZSwaZPqy4y9oRBVRImZyv3m_S9XDHF1tWwN7mL52C_IiA73SJkWVNsvNqpJIn5h7A2F8biv_S2ppQ1lgkbw
|
||||
```
|
||||
|
||||
This is also described in [Section 2.1 of RFC 6750: The OAuth 2.0 Authorization Framework: Bearer Token Usage](https://tools.ietf.org/html/rfc6750#section-2.1)
|
||||
|
||||
## Verifying the token
|
||||
|
||||
The registry must now verify the token presented by the user by inspecting the
|
||||
claim set within. The registry will:
|
||||
|
||||
- Ensure that the issuer (`iss` claim) is an authority it trusts.
|
||||
- Ensure that the registry identifies as the audience (`aud` claim).
|
||||
- Check that the current time is between the `nbf` and `exp` claim times.
|
||||
- If enforcing single-use tokens, check that the JWT ID (`jti` claim) value has
|
||||
not been seen before.
|
||||
- To enforce this, the registry may keep a record of `jti`s it has seen for
|
||||
up to the `exp` time of the token to prevent token replays.
|
||||
- Check the `access` claim value and use the identified resources and the list
|
||||
of actions authorized to determine whether the token grants the required
|
||||
level of access for the operation the client is attempting to perform.
|
||||
- Verify that the signature of the token is valid.
|
||||
|
||||
If any of these requirements are not met, the registry will return a
|
||||
`403 Forbidden` response to indicate that the token is invalid.
|
||||
|
||||
**Note**: it is only at this point in the workflow that an authorization error
|
||||
may occur. The token server should *not* return errors when the user does not
|
||||
have the requested authorization. Instead, the returned token should indicate
|
||||
whatever of the requested scope the client does have (the intersection of
|
||||
requested and granted access). If the token does not supply proper
|
||||
authorization then the registry will return the appropriate error.
|
||||
|
||||
At no point in this process should the registry need to call back to the
|
||||
authorization server. The registry only needs to be supplied with the trusted
|
||||
public keys to verify the token signatures.
|
190
gateway/vendor/github.com/docker/distribution/docs/spec/auth/oauth.md
generated
vendored
190
gateway/vendor/github.com/docker/distribution/docs/spec/auth/oauth.md
generated
vendored
@ -1,190 +0,0 @@
|
||||
---
|
||||
title: "Oauth2 Token Authentication"
|
||||
description: "Specifies the Docker Registry v2 authentication"
|
||||
keywords: ["registry, on-prem, images, tags, repository, distribution, oauth2, advanced"]
|
||||
---
|
||||
|
||||
# Docker Registry v2 authentication using OAuth2
|
||||
|
||||
This document describes support for the OAuth2 protocol within the authorization
|
||||
server. [RFC6749](https://tools.ietf.org/html/rfc6749) should be used as a
|
||||
reference for the protocol and HTTP endpoints described here.
|
||||
|
||||
**Note**: Not all token servers implement oauth2. If the request to the endpoint
|
||||
returns `404` using the HTTP `POST` method, refer to
|
||||
[Token Documentation](token.md) for using the HTTP `GET` method supported by all
|
||||
token servers.
|
||||
|
||||
## Refresh token format
|
||||
|
||||
The format of the refresh token is completely opaque to the client and should be
|
||||
determined by the authorization server. The authorization should ensure the
|
||||
token is sufficiently long and is responsible for storing any information about
|
||||
long-lived tokens which may be needed for revoking. Any information stored
|
||||
inside the token will not be extracted and presented by clients.
|
||||
|
||||
## Getting a token
|
||||
|
||||
POST /token
|
||||
|
||||
#### Headers
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
|
||||
#### Post parameters
|
||||
|
||||
<dl>
|
||||
<dt>
|
||||
<code>grant_type</code>
|
||||
</dt>
|
||||
<dd>
|
||||
(REQUIRED) Type of grant used to get token. When getting a refresh token
|
||||
using credentials this type should be set to "password" and have the
|
||||
accompanying username and password paramters. Type "authorization_code"
|
||||
is reserved for future use for authenticating to an authorization server
|
||||
without having to send credentials directly from the client. When
|
||||
requesting an access token with a refresh token this should be set to
|
||||
"refresh_token".
|
||||
</dd>
|
||||
<dt>
|
||||
<code>service</code>
|
||||
</dt>
|
||||
<dd>
|
||||
(REQUIRED) The name of the service which hosts the resource to get
|
||||
access for. Refresh tokens will only be good for getting tokens for
|
||||
this service.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>client_id</code>
|
||||
</dt>
|
||||
<dd>
|
||||
(REQUIRED) String identifying the client. This client_id does not need
|
||||
to be registered with the authorization server but should be set to a
|
||||
meaningful value in order to allow auditing keys created by unregistered
|
||||
clients. Accepted syntax is defined in
|
||||
[RFC6749 Appendix A.1](https://tools.ietf.org/html/rfc6749#appendix-A.1)
|
||||
</dd>
|
||||
<dt>
|
||||
<code>access_type</code>
|
||||
</dt>
|
||||
<dd>
|
||||
(OPTIONAL) Access which is being requested. If "offline" is provided
|
||||
then a refresh token will be returned. The default is "online" only
|
||||
returning short lived access token. If the grant type is "refresh_token"
|
||||
this will only return the same refresh token and not a new one.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>scope</code>
|
||||
</dt>
|
||||
<dd>
|
||||
(OPTIONAL) The resource in question, formatted as one of the space-delimited
|
||||
entries from the <code>scope</code> parameters from the <code>WWW-Authenticate</code> header
|
||||
shown above. This query parameter should only be specified once but may
|
||||
contain multiple scopes using the scope list format defined in the scope
|
||||
grammar. If multiple <code>scope</code> is provided from
|
||||
<code>WWW-Authenticate</code> header the scopes should first be
|
||||
converted to a scope list before requesting the token. The above example
|
||||
would be specified as: <code>scope=repository:samalba/my-app:push</code>.
|
||||
When requesting a refresh token the scopes may be empty since the
|
||||
refresh token will not be limited by this scope, only the provided short
|
||||
lived access token will have the scope limitation.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>refresh_token</code>
|
||||
</dt>
|
||||
<dd>
|
||||
(OPTIONAL) The refresh token to use for authentication when grant type "refresh_token" is used.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>username</code>
|
||||
</dt>
|
||||
<dd>
|
||||
(OPTIONAL) The username to use for authentication when grant type "password" is used.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>password</code>
|
||||
</dt>
|
||||
<dd>
|
||||
(OPTIONAL) The password to use for authentication when grant type "password" is used.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
#### Response fields
|
||||
|
||||
<dl>
|
||||
<dt>
|
||||
<code>access_token</code>
|
||||
</dt>
|
||||
<dd>
|
||||
(REQUIRED) An opaque <code>Bearer</code> token that clients should
|
||||
supply to subsequent requests in the <code>Authorization</code> header.
|
||||
This token should not be attempted to be parsed or understood by the
|
||||
client but treated as opaque string.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>scope</code>
|
||||
</dt>
|
||||
<dd>
|
||||
(REQUIRED) The scope granted inside the access token. This may be the
|
||||
same scope as requested or a subset. This requirement is stronger than
|
||||
specified in [RFC6749 Section 4.2.2](https://tools.ietf.org/html/rfc6749#section-4.2.2)
|
||||
by strictly requiring the scope in the return value.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>expires_in</code>
|
||||
</dt>
|
||||
<dd>
|
||||
(REQUIRED) The duration in seconds since the token was issued that it
|
||||
will remain valid. When omitted, this defaults to 60 seconds. For
|
||||
compatibility with older clients, a token should never be returned with
|
||||
less than 60 seconds to live.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>issued_at</code>
|
||||
</dt>
|
||||
<dd>
|
||||
(Optional) The <a href="https://www.ietf.org/rfc/rfc3339.txt">RFC3339</a>-serialized UTC
|
||||
standard time at which a given token was issued. If <code>issued_at</code> is omitted, the
|
||||
expiration is from when the token exchange completed.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>refresh_token</code>
|
||||
</dt>
|
||||
<dd>
|
||||
(Optional) Token which can be used to get additional access tokens for
|
||||
the same subject with different scopes. This token should be kept secure
|
||||
by the client and only sent to the authorization server which issues
|
||||
bearer tokens. This field will only be set when `access_type=offline` is
|
||||
provided in the request.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
#### Example getting refresh token
|
||||
|
||||
```
|
||||
POST /token HTTP/1.1
|
||||
Host: auth.docker.io
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
|
||||
grant_type=password&username=johndoe&password=A3ddj3w&service=hub.docker.io&client_id=dockerengine&access_type=offline
|
||||
|
||||
HTTP/1.1 200 OK
|
||||
Content-Type: application/json
|
||||
|
||||
{"refresh_token":"kas9Da81Dfa8","access_token":"eyJhbGciOiJFUzI1NiIsInR5","expires_in":900,"scope":""}
|
||||
```
|
||||
|
||||
#### Example refreshing an Access Token
|
||||
|
||||
```
|
||||
POST /token HTTP/1.1
|
||||
Host: auth.docker.io
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
|
||||
grant_type=refresh_token&refresh_token=kas9Da81Dfa8&service=registry-1.docker.io&client_id=dockerengine&scope=repository:samalba/my-app:pull,push
|
||||
|
||||
HTTP/1.1 200 OK
|
||||
Content-Type: application/json
|
||||
|
||||
{"refresh_token":"kas9Da81Dfa8","access_token":"eyJhbGciOiJFUzI1NiIsInR5":"expires_in":900,"scope":"repository:samalba/my-app:pull,repository:samalba/my-app:push"}
|
||||
```
|
148
gateway/vendor/github.com/docker/distribution/docs/spec/auth/scope.md
generated
vendored
148
gateway/vendor/github.com/docker/distribution/docs/spec/auth/scope.md
generated
vendored
@ -1,148 +0,0 @@
|
||||
---
|
||||
title: "Token Scope Documentation"
|
||||
description: "Describes the scope and access fields used for registry authorization tokens"
|
||||
keywords: ["registry, on-prem, images, tags, repository, distribution, advanced, access, scope"]
|
||||
---
|
||||
|
||||
# Docker Registry Token Scope and Access
|
||||
|
||||
Tokens used by the registry are always restricted what resources they may
|
||||
be used to access, where those resources may be accessed, and what actions
|
||||
may be done on those resources. Tokens always have the context of a user which
|
||||
the token was originally created for. This document describes how these
|
||||
restrictions are represented and enforced by the authorization server and
|
||||
resource providers.
|
||||
|
||||
## Scope Components
|
||||
|
||||
### Subject (Authenticated User)
|
||||
|
||||
The subject represents the user for which a token is valid. Any actions
|
||||
performed using an access token should be considered on behalf of the subject.
|
||||
This is included in the `sub` field of access token JWT. A refresh token should
|
||||
be limited to a single subject and only be able to give out access tokens for
|
||||
that subject.
|
||||
|
||||
### Audience (Resource Provider)
|
||||
|
||||
The audience represents a resource provider which is intended to be able to
|
||||
perform the actions specified in the access token. Any resource provider which
|
||||
does not match the audience should not use that access token. The audience is
|
||||
included in the `aud` field of the access token JWT. A refresh token should be
|
||||
limited to a single audience and only be able to give out access tokens for that
|
||||
audience.
|
||||
|
||||
### Resource Type
|
||||
|
||||
The resource type represents the type of resource which the resource name is
|
||||
intended to represent. This type may be specific to a resource provider but must
|
||||
be understood by the authorization server in order to validate the subject
|
||||
is authorized for a specific resource.
|
||||
|
||||
#### Resource Class
|
||||
|
||||
The resource type might have a resource class which further classifies the
|
||||
the resource name within the resource type. A class is not required and
|
||||
is specific to the resource type.
|
||||
|
||||
#### Example Resource Types
|
||||
|
||||
- `repository` - represents a single repository within a registry. A
|
||||
repository may represent many manifest or content blobs, but the resource type
|
||||
is considered the collections of those items. Actions which may be performed on
|
||||
a `repository` are `pull` for accessing the collection and `push` for adding to
|
||||
it. By default the `repository` type has the class of `image`.
|
||||
- `repository(plugin)` - represents a single repository of plugins within a
|
||||
registry. A plugin repository has the same content and actions as a repository.
|
||||
- `registry` - represents the entire registry. Used for administrative actions
|
||||
or lookup operations that span an entire registry.
|
||||
|
||||
### Resource Name
|
||||
|
||||
The resource name represent the name which identifies a resource for a resource
|
||||
provider. A resource is identified by this name and the provided resource type.
|
||||
An example of a resource name would be the name component of an image tag, such
|
||||
as "samalba/myapp" or "hostname/samalba/myapp".
|
||||
|
||||
### Resource Actions
|
||||
|
||||
The resource actions define the actions which the access token allows to be
|
||||
performed on the identified resource. These actions are type specific but will
|
||||
normally have actions identifying read and write access on the resource. Example
|
||||
for the `repository` type are `pull` for read access and `push` for write
|
||||
access.
|
||||
|
||||
## Authorization Server Use
|
||||
|
||||
Each access token request may include a scope and an audience. The subject is
|
||||
always derived from the passed in credentials or refresh token. When using
|
||||
a refresh token the passed in audience must match the audience defined for
|
||||
the refresh token. The audience (resource provider) is provided using the
|
||||
`service` field. Multiple resource scopes may be provided using multiple `scope`
|
||||
fields on the `GET` request. The `POST` request only takes in a single
|
||||
`scope` field but may use a space to separate a list of multiple resource
|
||||
scopes.
|
||||
|
||||
### Resource Scope Grammar
|
||||
|
||||
```
|
||||
scope := resourcescope [ ' ' resourcescope ]*
|
||||
resourcescope := resourcetype ":" resourcename ":" action [ ',' action ]*
|
||||
resourcetype := resourcetypevalue [ '(' resourcetypevalue ')' ]
|
||||
resourcetypevalue := /[a-z0-9]+/
|
||||
resourcename := [ hostname '/' ] component [ '/' component ]*
|
||||
hostname := hostcomponent ['.' hostcomponent]* [':' port-number]
|
||||
hostcomponent := /([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])/
|
||||
port-number := /[0-9]+/
|
||||
action := /[a-z]*/
|
||||
component := alpha-numeric [ separator alpha-numeric ]*
|
||||
alpha-numeric := /[a-z0-9]+/
|
||||
separator := /[_.]|__|[-]*/
|
||||
```
|
||||
Full reference grammar is defined
|
||||
[here](https://godoc.org/github.com/docker/distribution/reference). Currently
|
||||
the scope name grammar is a subset of the reference grammar.
|
||||
|
||||
> **NOTE:** that the `resourcename` may contain one `:` due to a possible port
|
||||
> number in the hostname component of the `resourcename`, so a naive
|
||||
> implementation that interprets the first three `:`-delimited tokens of a
|
||||
> `scope` to be the `resourcetype`, `resourcename`, and a list of `action`
|
||||
> would be insufficient.
|
||||
|
||||
## Resource Provider Use
|
||||
|
||||
Once a resource provider has verified the authenticity of the scope through
|
||||
JWT access token verification, the resource provider must ensure that scope
|
||||
satisfies the request. The resource provider should match the given audience
|
||||
according to name or URI the resource provider uses to identify itself. Any
|
||||
denial based on subject is not defined here and is up to resource provider, the
|
||||
subject is mainly provided for audit logs and any other user-specific rules
|
||||
which may need to be provided but are not defined by the authorization server.
|
||||
|
||||
The resource provider must ensure that ANY resource being accessed as the
|
||||
result of a request has the appropriate access scope. Both the resource type
|
||||
and resource name must match the accessed resource and an appropriate action
|
||||
scope must be included.
|
||||
|
||||
When appropriate authorization is not provided either due to lack of scope
|
||||
or missing token, the resource provider to return a `WWW-AUTHENTICATE` HTTP
|
||||
header with the `realm` as the authorization server, the `service` as the
|
||||
expected audience identifying string, and a `scope` field for each required
|
||||
resource scope to complete the request.
|
||||
|
||||
## JWT Access Tokens
|
||||
|
||||
Each JWT access token may only have a single subject and audience but multiple
|
||||
resource scopes. The subject and audience are put into standard JWT fields
|
||||
`sub` and `aud`. The resource scope is put into the `access` field. The
|
||||
structure of the access field can be seen in the
|
||||
[jwt documentation](jwt.md).
|
||||
|
||||
## Refresh Tokens
|
||||
|
||||
A refresh token must be defined for a single subject and audience. Further
|
||||
restricting scope to specific type, name, and actions combinations should be
|
||||
done by fetching an access token using the refresh token. Since the refresh
|
||||
token is not scoped to specific resources for an audience, extra care should
|
||||
be taken to only use the refresh token to negotiate new access tokens directly
|
||||
with the authorization server, and never with a resource provider.
|
250
gateway/vendor/github.com/docker/distribution/docs/spec/auth/token.md
generated
vendored
250
gateway/vendor/github.com/docker/distribution/docs/spec/auth/token.md
generated
vendored
@ -1,250 +0,0 @@
|
||||
---
|
||||
title: "Token Authentication Specification"
|
||||
description: "Specifies the Docker Registry v2 authentication"
|
||||
keywords: ["registry, on-prem, images, tags, repository, distribution, Bearer authentication, advanced"]
|
||||
---
|
||||
|
||||
# Docker Registry v2 authentication via central service
|
||||
|
||||
This document outlines the v2 Docker registry authentication scheme:
|
||||
|
||||

|
||||
|
||||
1. Attempt to begin a push/pull operation with the registry.
|
||||
2. If the registry requires authorization it will return a `401 Unauthorized`
|
||||
HTTP response with information on how to authenticate.
|
||||
3. The registry client makes a request to the authorization service for a
|
||||
Bearer token.
|
||||
4. The authorization service returns an opaque Bearer token representing the
|
||||
client's authorized access.
|
||||
5. The client retries the original request with the Bearer token embedded in
|
||||
the request's Authorization header.
|
||||
6. The Registry authorizes the client by validating the Bearer token and the
|
||||
claim set embedded within it and begins the push/pull session as usual.
|
||||
|
||||
## Requirements
|
||||
|
||||
- Registry clients which can understand and respond to token auth challenges
|
||||
returned by the resource server.
|
||||
- An authorization server capable of managing access controls to their
|
||||
resources hosted by any given service (such as repositories in a Docker
|
||||
Registry).
|
||||
- A Docker Registry capable of trusting the authorization server to sign tokens
|
||||
which clients can use for authorization and the ability to verify these
|
||||
tokens for single use or for use during a sufficiently short period of time.
|
||||
|
||||
## Authorization Server Endpoint Descriptions
|
||||
|
||||
The described server is meant to serve as a standalone access control manager
|
||||
for resources hosted by other services which wish to authenticate and manage
|
||||
authorizations using a separate access control manager.
|
||||
|
||||
A service like this is used by the official Docker Registry to authenticate
|
||||
clients and verify their authorization to Docker image repositories.
|
||||
|
||||
As of Docker 1.6, the registry client within the Docker Engine has been updated
|
||||
to handle such an authorization workflow.
|
||||
|
||||
## How to authenticate
|
||||
|
||||
Registry V1 clients first contact the index to initiate a push or pull. Under
|
||||
the Registry V2 workflow, clients should contact the registry first. If the
|
||||
registry server requires authentication it will return a `401 Unauthorized`
|
||||
response with a `WWW-Authenticate` header detailing how to authenticate to this
|
||||
registry.
|
||||
|
||||
For example, say I (username `jlhawn`) am attempting to push an image to the
|
||||
repository `samalba/my-app`. For the registry to authorize this, I will need
|
||||
`push` access to the `samalba/my-app` repository. The registry will first
|
||||
return this response:
|
||||
|
||||
```
|
||||
HTTP/1.1 401 Unauthorized
|
||||
Content-Type: application/json; charset=utf-8
|
||||
Docker-Distribution-Api-Version: registry/2.0
|
||||
Www-Authenticate: Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:samalba/my-app:pull,push"
|
||||
Date: Thu, 10 Sep 2015 19:32:31 GMT
|
||||
Content-Length: 235
|
||||
Strict-Transport-Security: max-age=31536000
|
||||
|
||||
{"errors":[{"code":"UNAUTHORIZED","message":"access to the requested resource is not authorized","detail":[{"Type":"repository","Name":"samalba/my-app","Action":"pull"},{"Type":"repository","Name":"samalba/my-app","Action":"push"}]}]}
|
||||
```
|
||||
|
||||
Note the HTTP Response Header indicating the auth challenge:
|
||||
|
||||
```
|
||||
Www-Authenticate: Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:samalba/my-app:pull,push"
|
||||
```
|
||||
|
||||
This format is documented in [Section 3 of RFC 6750: The OAuth 2.0 Authorization Framework: Bearer Token Usage](https://tools.ietf.org/html/rfc6750#section-3)
|
||||
|
||||
This challenge indicates that the registry requires a token issued by the
|
||||
specified token server and that the request the client is attempting will
|
||||
need to include sufficient access entries in its claim set. To respond to this
|
||||
challenge, the client will need to make a `GET` request to the URL
|
||||
`https://auth.docker.io/token` using the `service` and `scope` values from the
|
||||
`WWW-Authenticate` header.
|
||||
|
||||
## Requesting a Token
|
||||
|
||||
Defines getting a bearer and refresh token using the token endpoint.
|
||||
|
||||
#### Query Parameters
|
||||
|
||||
<dl>
|
||||
<dt>
|
||||
<code>service</code>
|
||||
</dt>
|
||||
<dd>
|
||||
The name of the service which hosts the resource.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>offline_token</code>
|
||||
</dt>
|
||||
<dd>
|
||||
Whether to return a refresh token along with the bearer token. A refresh
|
||||
token is capable of getting additional bearer tokens for the same
|
||||
subject with different scopes. The refresh token does not have an
|
||||
expiration and should be considered completely opaque to the client.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>client_id</code>
|
||||
</dt>
|
||||
<dd>
|
||||
String identifying the client. This client_id does not need
|
||||
to be registered with the authorization server but should be set to a
|
||||
meaningful value in order to allow auditing keys created by unregistered
|
||||
clients. Accepted syntax is defined in
|
||||
[RFC6749 Appendix A.1](https://tools.ietf.org/html/rfc6749#appendix-A.1).
|
||||
</dd>
|
||||
<dt>
|
||||
<code>scope</code>
|
||||
</dt>
|
||||
<dd>
|
||||
The resource in question, formatted as one of the space-delimited
|
||||
entries from the <code>scope</code> parameters from the <code>WWW-Authenticate</code> header
|
||||
shown above. This query parameter should be specified multiple times if
|
||||
there is more than one <code>scope</code> entry from the <code>WWW-Authenticate</code>
|
||||
header. The above example would be specified as:
|
||||
<code>scope=repository:samalba/my-app:push</code>. The scope field may
|
||||
be empty to request a refresh token without providing any resource
|
||||
permissions to the returned bearer token.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
#### Token Response Fields
|
||||
|
||||
<dl>
|
||||
<dt>
|
||||
<code>token</code>
|
||||
</dt>
|
||||
<dd>
|
||||
An opaque <code>Bearer</code> token that clients should supply to subsequent
|
||||
requests in the <code>Authorization</code> header.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>access_token</code>
|
||||
</dt>
|
||||
<dd>
|
||||
For compatibility with OAuth 2.0, we will also accept <code>token</code> under the name
|
||||
<code>access_token</code>. At least one of these fields <b>must</b> be specified, but
|
||||
both may also appear (for compatibility with older clients). When both are specified,
|
||||
they should be equivalent; if they differ the client's choice is undefined.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>expires_in</code>
|
||||
</dt>
|
||||
<dd>
|
||||
(Optional) The duration in seconds since the token was issued that it
|
||||
will remain valid. When omitted, this defaults to 60 seconds. For
|
||||
compatibility with older clients, a token should never be returned with
|
||||
less than 60 seconds to live.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>issued_at</code>
|
||||
</dt>
|
||||
<dd>
|
||||
(Optional) The <a href="https://www.ietf.org/rfc/rfc3339.txt">RFC3339</a>-serialized UTC
|
||||
standard time at which a given token was issued. If <code>issued_at</code> is omitted, the
|
||||
expiration is from when the token exchange completed.
|
||||
</dd>
|
||||
<dt>
|
||||
<code>refresh_token</code>
|
||||
</dt>
|
||||
<dd>
|
||||
(Optional) Token which can be used to get additional access tokens for
|
||||
the same subject with different scopes. This token should be kept secure
|
||||
by the client and only sent to the authorization server which issues
|
||||
bearer tokens. This field will only be set when `offline_token=true` is
|
||||
provided in the request.
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
#### Example
|
||||
|
||||
For this example, the client makes an HTTP GET request to the following URL:
|
||||
|
||||
```
|
||||
https://auth.docker.io/token?service=registry.docker.io&scope=repository:samalba/my-app:pull,push
|
||||
```
|
||||
|
||||
The token server should first attempt to authenticate the client using any
|
||||
authentication credentials provided with the request. From Docker 1.11 the
|
||||
Docker engine supports both Basic Authentication and [OAuth2](oauth.md) for
|
||||
getting tokens. Docker 1.10 and before, the registry client in the Docker Engine
|
||||
only supports Basic Authentication. If an attempt to authenticate to the token
|
||||
server fails, the token server should return a `401 Unauthorized` response
|
||||
indicating that the provided credentials are invalid.
|
||||
|
||||
Whether the token server requires authentication is up to the policy of that
|
||||
access control provider. Some requests may require authentication to determine
|
||||
access (such as pushing or pulling a private repository) while others may not
|
||||
(such as pulling from a public repository).
|
||||
|
||||
After authenticating the client (which may simply be an anonymous client if
|
||||
no attempt was made to authenticate), the token server must next query its
|
||||
access control list to determine whether the client has the requested scope. In
|
||||
this example request, if I have authenticated as user `jlhawn`, the token
|
||||
server will determine what access I have to the repository `samalba/my-app`
|
||||
hosted by the entity `registry.docker.io`.
|
||||
|
||||
Once the token server has determined what access the client has to the
|
||||
resources requested in the `scope` parameter, it will take the intersection of
|
||||
the set of requested actions on each resource and the set of actions that the
|
||||
client has in fact been granted. If the client only has a subset of the
|
||||
requested access **it must not be considered an error** as it is not the
|
||||
responsibility of the token server to indicate authorization errors as part of
|
||||
this workflow.
|
||||
|
||||
Continuing with the example request, the token server will find that the
|
||||
client's set of granted access to the repository is `[pull, push]` which when
|
||||
intersected with the requested access `[pull, push]` yields an equal set. If
|
||||
the granted access set was found only to be `[pull]` then the intersected set
|
||||
would only be `[pull]`. If the client has no access to the repository then the
|
||||
intersected set would be empty, `[]`.
|
||||
|
||||
It is this intersected set of access which is placed in the returned token.
|
||||
|
||||
The server then constructs an implementation-specific token with this
|
||||
intersected set of access, and returns it to the Docker client to use to
|
||||
authenticate to the audience service (within the indicated window of time):
|
||||
|
||||
```
|
||||
HTTP/1.1 200 OK
|
||||
Content-Type: application/json
|
||||
|
||||
{"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IlBZWU86VEVXVTpWN0pIOjI2SlY6QVFUWjpMSkMzOlNYVko6WEdIQTozNEYyOjJMQVE6WlJNSzpaN1E2In0.eyJpc3MiOiJhdXRoLmRvY2tlci5jb20iLCJzdWIiOiJqbGhhd24iLCJhdWQiOiJyZWdpc3RyeS5kb2NrZXIuY29tIiwiZXhwIjoxNDE1Mzg3MzE1LCJuYmYiOjE0MTUzODcwMTUsImlhdCI6MTQxNTM4NzAxNSwianRpIjoidFlKQ08xYzZjbnl5N2tBbjBjN3JLUGdiVjFIMWJGd3MiLCJhY2Nlc3MiOlt7InR5cGUiOiJyZXBvc2l0b3J5IiwibmFtZSI6InNhbWFsYmEvbXktYXBwIiwiYWN0aW9ucyI6WyJwdXNoIl19XX0.QhflHPfbd6eVF4lM9bwYpFZIV0PfikbyXuLx959ykRTBpe3CYnzs6YBK8FToVb5R47920PVLrh8zuLzdCr9t3w", "expires_in": 3600,"issued_at": "2009-11-10T23:00:00Z"}
|
||||
```
|
||||
|
||||
|
||||
## Using the Bearer token
|
||||
|
||||
Once the client has a token, it will try the registry request again with the
|
||||
token placed in the HTTP `Authorization` header like so:
|
||||
|
||||
```
|
||||
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IkJWM0Q6MkFWWjpVQjVaOktJQVA6SU5QTDo1RU42Ok40SjQ6Nk1XTzpEUktFOkJWUUs6M0ZKTDpQT1RMIn0.eyJpc3MiOiJhdXRoLmRvY2tlci5jb20iLCJzdWIiOiJCQ0NZOk9VNlo6UUVKNTpXTjJDOjJBVkM6WTdZRDpBM0xZOjQ1VVc6NE9HRDpLQUxMOkNOSjU6NUlVTCIsImF1ZCI6InJlZ2lzdHJ5LmRvY2tlci5jb20iLCJleHAiOjE0MTUzODczMTUsIm5iZiI6MTQxNTM4NzAxNSwiaWF0IjoxNDE1Mzg3MDE1LCJqdGkiOiJ0WUpDTzFjNmNueXk3a0FuMGM3cktQZ2JWMUgxYkZ3cyIsInNjb3BlIjoiamxoYXduOnJlcG9zaXRvcnk6c2FtYWxiYS9teS1hcHA6cHVzaCxwdWxsIGpsaGF3bjpuYW1lc3BhY2U6c2FtYWxiYTpwdWxsIn0.Y3zZSwaZPqy4y9oRBVRImZyv3m_S9XDHF1tWwN7mL52C_IiA73SJkWVNsvNqpJIn5h7A2F8biv_S2ppQ1lgkbw
|
||||
```
|
||||
|
||||
This is also described in [Section 2.1 of RFC 6750: The OAuth 2.0 Authorization Framework: Bearer Token Usage](https://tools.ietf.org/html/rfc6750#section-2.1)
|
30
gateway/vendor/github.com/docker/distribution/docs/spec/implementations.md
generated
vendored
30
gateway/vendor/github.com/docker/distribution/docs/spec/implementations.md
generated
vendored
@ -1,30 +0,0 @@
|
||||
---
|
||||
published: false
|
||||
---
|
||||
|
||||
# Distribution API Implementations
|
||||
|
||||
This is a list of known implementations of the Distribution API spec.
|
||||
|
||||
## [Docker Distribution Registry](https://github.com/docker/distribution)
|
||||
|
||||
Docker distribution is the reference implementation of the distribution API
|
||||
specification. It aims to fully implement the entire specification.
|
||||
|
||||
### Releases
|
||||
#### 2.0.1 (_in development_)
|
||||
Implements API 2.0.1
|
||||
|
||||
_Known Issues_
|
||||
- No resumable push support
|
||||
- Content ranges ignored
|
||||
- Blob upload status will always return a starting range of 0
|
||||
|
||||
#### 2.0.0
|
||||
Implements API 2.0.0
|
||||
|
||||
_Known Issues_
|
||||
- No resumable push support
|
||||
- No PATCH implementation for blob upload
|
||||
- Content ranges ignored
|
||||
|
12
gateway/vendor/github.com/docker/distribution/docs/spec/index.md
generated
vendored
12
gateway/vendor/github.com/docker/distribution/docs/spec/index.md
generated
vendored
@ -1,12 +0,0 @@
|
||||
---
|
||||
title: "Reference Overview"
|
||||
description: "Explains registry JSON objects"
|
||||
keywords: ["registry, service, images, repository, json"]
|
||||
---
|
||||
|
||||
# Docker Registry Reference
|
||||
|
||||
* [HTTP API V2](api.md)
|
||||
* [Storage Driver](../storage-drivers/index.md)
|
||||
* [Token Authentication Specification](auth/token.md)
|
||||
* [Token Authentication Implementation](auth/jwt.md)
|
90
gateway/vendor/github.com/docker/distribution/docs/spec/json.md
generated
vendored
90
gateway/vendor/github.com/docker/distribution/docs/spec/json.md
generated
vendored
@ -1,90 +0,0 @@
|
||||
---
|
||||
published: false
|
||||
title: "Docker Distribution JSON Canonicalization"
|
||||
description: "Explains registry JSON objects"
|
||||
keywords: ["registry, service, images, repository, json"]
|
||||
---
|
||||
|
||||
|
||||
|
||||
# Docker Distribution JSON Canonicalization
|
||||
|
||||
To provide consistent content hashing of JSON objects throughout Docker
|
||||
Distribution APIs, the specification defines a canonical JSON format. Adopting
|
||||
such a canonicalization also aids in caching JSON responses.
|
||||
|
||||
Note that protocols should not be designed to depend on identical JSON being
|
||||
generated across different versions or clients. The canonicalization rules are
|
||||
merely useful for caching and consistency.
|
||||
|
||||
## Rules
|
||||
|
||||
Compliant JSON should conform to the following rules:
|
||||
|
||||
1. All generated JSON should comply with [RFC
|
||||
7159](http://www.ietf.org/rfc/rfc7159.txt).
|
||||
2. Resulting "JSON text" shall always be encoded in UTF-8.
|
||||
3. Unless a canonical key order is defined for a particular schema, object
|
||||
keys shall always appear in lexically sorted order.
|
||||
4. All whitespace between tokens should be removed.
|
||||
5. No "trailing commas" are allowed in object or array definitions.
|
||||
6. The angle brackets "<" and ">" are escaped to "\u003c" and "\u003e".
|
||||
Ampersand "&" is escaped to "\u0026".
|
||||
|
||||
## Examples
|
||||
|
||||
The following is a simple example of a canonicalized JSON string:
|
||||
|
||||
```json
|
||||
{"asdf":1,"qwer":[],"zxcv":[{},true,1000000000,"tyui"]}
|
||||
```
|
||||
|
||||
## Reference
|
||||
|
||||
### Other Canonicalizations
|
||||
|
||||
The OLPC project specifies [Canonical
|
||||
JSON](http://wiki.laptop.org/go/Canonical_JSON). While this is used in
|
||||
[TUF](http://theupdateframework.com/), which may be used with other
|
||||
distribution-related protocols, this alternative format has been proposed in
|
||||
case the original source changes. Specifications complying with either this
|
||||
specification or an alternative should explicitly call out the
|
||||
canonicalization format. Except for key ordering, this specification is mostly
|
||||
compatible.
|
||||
|
||||
### Go
|
||||
|
||||
In Go, the [`encoding/json`](http://golang.org/pkg/encoding/json/) library
|
||||
will emit canonical JSON by default. Simply using `json.Marshal` will suffice
|
||||
in most cases:
|
||||
|
||||
```go
|
||||
incoming := map[string]interface{}{
|
||||
"asdf": 1,
|
||||
"qwer": []interface{}{},
|
||||
"zxcv": []interface{}{
|
||||
map[string]interface{}{},
|
||||
true,
|
||||
int(1e9),
|
||||
"tyui",
|
||||
},
|
||||
}
|
||||
|
||||
canonical, err := json.Marshal(incoming)
|
||||
if err != nil {
|
||||
// ... handle error
|
||||
}
|
||||
```
|
||||
|
||||
To apply canonical JSON format spacing to an existing serialized JSON buffer, one
|
||||
can use
|
||||
[`json.Indent`](http://golang.org/src/encoding/json/indent.go?s=1918:1989#L65)
|
||||
with the following arguments:
|
||||
|
||||
```go
|
||||
incoming := getBytes()
|
||||
var canonical bytes.Buffer
|
||||
if err := json.Indent(&canonical, incoming, "", ""); err != nil {
|
||||
// ... handle error
|
||||
}
|
||||
```
|
163
gateway/vendor/github.com/docker/distribution/docs/spec/manifest-v2-1.md
generated
vendored
163
gateway/vendor/github.com/docker/distribution/docs/spec/manifest-v2-1.md
generated
vendored
@ -1,163 +0,0 @@
|
||||
---
|
||||
title: "Image Manifest V 2, Schema 1 "
|
||||
description: "image manifest for the Registry."
|
||||
keywords: ["registry, on-prem, images, tags, repository, distribution, api, advanced, manifest"]
|
||||
---
|
||||
|
||||
# Image Manifest Version 2, Schema 1
|
||||
|
||||
This document outlines the format of the V2 image manifest. The image
|
||||
manifest described herein was introduced in the Docker daemon in the [v1.3.0
|
||||
release](https://github.com/docker/docker/commit/9f482a66ab37ec396ac61ed0c00d59122ac07453).
|
||||
It is a provisional manifest to provide a compatibility with the [V1 Image
|
||||
format](https://github.com/docker/docker/blob/master/image/spec/v1.md), as the
|
||||
requirements are defined for the [V2 Schema 2
|
||||
image](https://github.com/docker/distribution/pull/62).
|
||||
|
||||
|
||||
Image manifests describe the various constituents of a docker image. Image
|
||||
manifests can be serialized to JSON format with the following media types:
|
||||
|
||||
Manifest Type | Media Type
|
||||
------------- | -------------
|
||||
manifest | "application/vnd.docker.distribution.manifest.v1+json"
|
||||
signed manifest | "application/vnd.docker.distribution.manifest.v1+prettyjws"
|
||||
|
||||
*Note that "application/json" will also be accepted for schema 1.*
|
||||
|
||||
References:
|
||||
|
||||
- [Proposal: JSON Registry API V2.1](https://github.com/docker/docker/issues/9015)
|
||||
- [Proposal: Provenance step 1 - Transform images for validation and verification](https://github.com/docker/docker/issues/8093)
|
||||
|
||||
## *Manifest* Field Descriptions
|
||||
|
||||
Manifest provides the base accessible fields for working with V2 image format
|
||||
in the registry.
|
||||
|
||||
- **`name`** *string*
|
||||
|
||||
name is the name of the image's repository
|
||||
|
||||
- **`tag`** *string*
|
||||
|
||||
tag is the tag of the image
|
||||
|
||||
- **`architecture`** *string*
|
||||
|
||||
architecture is the host architecture on which this image is intended to
|
||||
run. This is for information purposes and not currently used by the engine
|
||||
|
||||
- **`fsLayers`** *array*
|
||||
|
||||
fsLayers is a list of filesystem layer blob sums contained in this image.
|
||||
|
||||
An fsLayer is a struct consisting of the following fields
|
||||
- **`blobSum`** *digest.Digest*
|
||||
|
||||
blobSum is the digest of the referenced filesystem image layer. A
|
||||
digest must be a sha256 hash.
|
||||
|
||||
|
||||
- **`history`** *array*
|
||||
|
||||
history is a list of unstructured historical data for v1 compatibility. It
|
||||
contains ID of the image layer and ID of the layer's parent layers.
|
||||
|
||||
history is a struct consisting of the following fields
|
||||
- **`v1Compatibility`** string
|
||||
|
||||
V1Compatibility is the raw V1 compatibility information. This will
|
||||
contain the JSON object describing the V1 of this image.
|
||||
|
||||
- **`schemaVersion`** *int*
|
||||
|
||||
SchemaVersion is the image manifest schema that this image follows.
|
||||
|
||||
>**Note**:the length of `history` must be equal to the length of `fsLayers` and
|
||||
>entries in each are correlated by index.
|
||||
|
||||
## Signed Manifests
|
||||
|
||||
Signed manifests provides an envelope for a signed image manifest. A signed
|
||||
manifest consists of an image manifest along with an additional field
|
||||
containing the signature of the manifest.
|
||||
|
||||
The docker client can verify signed manifests and displays a message to the user.
|
||||
|
||||
### Signing Manifests
|
||||
|
||||
Image manifests can be signed in two different ways: with a *libtrust* private
|
||||
key or an x509 certificate chain. When signing with an x509 certificate chain,
|
||||
the public key of the first element in the chain must be the public key
|
||||
corresponding with the sign key.
|
||||
|
||||
### Signed Manifest Field Description
|
||||
|
||||
Signed manifests include an image manifest and a list of signatures generated
|
||||
by *libtrust*. A signature consists of the following fields:
|
||||
|
||||
|
||||
- **`header`** *[JOSE](http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-31#section-2)*
|
||||
|
||||
A [JSON Web Signature](http://self-issued.info/docs/draft-ietf-jose-json-web-signature.html)
|
||||
|
||||
- **`signature`** *string*
|
||||
|
||||
A signature for the image manifest, signed by a *libtrust* private key
|
||||
|
||||
- **`protected`** *string*
|
||||
|
||||
The signed protected header
|
||||
|
||||
## Example Manifest
|
||||
|
||||
*Example showing the official 'hello-world' image manifest.*
|
||||
|
||||
```
|
||||
{
|
||||
"name": "hello-world",
|
||||
"tag": "latest",
|
||||
"architecture": "amd64",
|
||||
"fsLayers": [
|
||||
{
|
||||
"blobSum": "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef"
|
||||
},
|
||||
{
|
||||
"blobSum": "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef"
|
||||
},
|
||||
{
|
||||
"blobSum": "sha256:cc8567d70002e957612902a8e985ea129d831ebe04057d88fb644857caa45d11"
|
||||
},
|
||||
{
|
||||
"blobSum": "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef"
|
||||
}
|
||||
],
|
||||
"history": [
|
||||
{
|
||||
"v1Compatibility": "{\"id\":\"e45a5af57b00862e5ef5782a9925979a02ba2b12dff832fd0991335f4a11e5c5\",\"parent\":\"31cbccb51277105ba3ae35ce33c22b69c9e3f1002e76e4c736a2e8ebff9d7b5d\",\"created\":\"2014-12-31T22:57:59.178729048Z\",\"container\":\"27b45f8fb11795b52e9605b686159729b0d9ca92f76d40fb4f05a62e19c46b4f\",\"container_config\":{\"Hostname\":\"8ce6509d66e2\",\"Domainname\":\"\",\"User\":\"\",\"Memory\":0,\"MemorySwap\":0,\"CpuShares\":0,\"Cpuset\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"PortSpecs\":null,\"ExposedPorts\":null,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) CMD [/hello]\"],\"Image\":\"31cbccb51277105ba3ae35ce33c22b69c9e3f1002e76e4c736a2e8ebff9d7b5d\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"NetworkDisabled\":false,\"MacAddress\":\"\",\"OnBuild\":[],\"SecurityOpt\":null,\"Labels\":null},\"docker_version\":\"1.4.1\",\"config\":{\"Hostname\":\"8ce6509d66e2\",\"Domainname\":\"\",\"User\":\"\",\"Memory\":0,\"MemorySwap\":0,\"CpuShares\":0,\"Cpuset\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"PortSpecs\":null,\"ExposedPorts\":null,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/hello\"],\"Image\":\"31cbccb51277105ba3ae35ce33c22b69c9e3f1002e76e4c736a2e8ebff9d7b5d\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"NetworkDisabled\":false,\"MacAddress\":\"\",\"OnBuild\":[],\"SecurityOpt\":null,\"Labels\":null},\"architecture\":\"amd64\",\"os\":\"linux\",\"Size\":0}\n"
|
||||
},
|
||||
{
|
||||
"v1Compatibility": "{\"id\":\"e45a5af57b00862e5ef5782a9925979a02ba2b12dff832fd0991335f4a11e5c5\",\"parent\":\"31cbccb51277105ba3ae35ce33c22b69c9e3f1002e76e4c736a2e8ebff9d7b5d\",\"created\":\"2014-12-31T22:57:59.178729048Z\",\"container\":\"27b45f8fb11795b52e9605b686159729b0d9ca92f76d40fb4f05a62e19c46b4f\",\"container_config\":{\"Hostname\":\"8ce6509d66e2\",\"Domainname\":\"\",\"User\":\"\",\"Memory\":0,\"MemorySwap\":0,\"CpuShares\":0,\"Cpuset\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"PortSpecs\":null,\"ExposedPorts\":null,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) CMD [/hello]\"],\"Image\":\"31cbccb51277105ba3ae35ce33c22b69c9e3f1002e76e4c736a2e8ebff9d7b5d\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"NetworkDisabled\":false,\"MacAddress\":\"\",\"OnBuild\":[],\"SecurityOpt\":null,\"Labels\":null},\"docker_version\":\"1.4.1\",\"config\":{\"Hostname\":\"8ce6509d66e2\",\"Domainname\":\"\",\"User\":\"\",\"Memory\":0,\"MemorySwap\":0,\"CpuShares\":0,\"Cpuset\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"PortSpecs\":null,\"ExposedPorts\":null,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/hello\"],\"Image\":\"31cbccb51277105ba3ae35ce33c22b69c9e3f1002e76e4c736a2e8ebff9d7b5d\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"NetworkDisabled\":false,\"MacAddress\":\"\",\"OnBuild\":[],\"SecurityOpt\":null,\"Labels\":null},\"architecture\":\"amd64\",\"os\":\"linux\",\"Size\":0}\n"
|
||||
},
|
||||
],
|
||||
"schemaVersion": 1,
|
||||
"signatures": [
|
||||
{
|
||||
"header": {
|
||||
"jwk": {
|
||||
"crv": "P-256",
|
||||
"kid": "OD6I:6DRK:JXEJ:KBM4:255X:NSAA:MUSF:E4VM:ZI6W:CUN2:L4Z6:LSF4",
|
||||
"kty": "EC",
|
||||
"x": "3gAwX48IQ5oaYQAYSxor6rYYc_6yjuLCjtQ9LUakg4A",
|
||||
"y": "t72ge6kIA1XOjqjVoEOiPPAURltJFBMGDSQvEGVB010"
|
||||
},
|
||||
"alg": "ES256"
|
||||
},
|
||||
"signature": "XREm0L8WNn27Ga_iE_vRnTxVMhhYY0Zst_FfkKopg6gWSoTOZTuW4rK0fg_IqnKkEKlbD83tD46LKEGi5aIVFg",
|
||||
"protected": "eyJmb3JtYXRMZW5ndGgiOjY2MjgsImZvcm1hdFRhaWwiOiJDbjAiLCJ0aW1lIjoiMjAxNS0wNC0wOFQxODo1Mjo1OVoifQ"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
```
|
295
gateway/vendor/github.com/docker/distribution/docs/spec/manifest-v2-2.md
generated
vendored
295
gateway/vendor/github.com/docker/distribution/docs/spec/manifest-v2-2.md
generated
vendored
@ -1,295 +0,0 @@
|
||||
---
|
||||
title: "Image Manifest V 2, Schema 2 "
|
||||
description: "image manifest for the Registry."
|
||||
keywords: ["registry, on-prem, images, tags, repository, distribution, api, advanced, manifest"]
|
||||
---
|
||||
|
||||
# Image Manifest Version 2, Schema 2
|
||||
|
||||
This document outlines the format of the V2 image manifest, schema version 2.
|
||||
The original (and provisional) image manifest for V2 (schema 1), was introduced
|
||||
in the Docker daemon in the [v1.3.0
|
||||
release](https://github.com/docker/docker/commit/9f482a66ab37ec396ac61ed0c00d59122ac07453)
|
||||
and is specified in the [schema 1 manifest definition](manifest-v2-1.md)
|
||||
|
||||
This second schema version has two primary goals. The first is to allow
|
||||
multi-architecture images, through a "fat manifest" which references image
|
||||
manifests for platform-specific versions of an image. The second is to
|
||||
move the Docker engine towards content-addressable images, by supporting
|
||||
an image model where the image's configuration can be hashed to generate
|
||||
an ID for the image.
|
||||
|
||||
# Media Types
|
||||
|
||||
The following media types are used by the manifest formats described here, and
|
||||
the resources they reference:
|
||||
|
||||
- `application/vnd.docker.distribution.manifest.v1+json`: schema1 (existing manifest format)
|
||||
- `application/vnd.docker.distribution.manifest.v2+json`: New image manifest format (schemaVersion = 2)
|
||||
- `application/vnd.docker.distribution.manifest.list.v2+json`: Manifest list, aka "fat manifest"
|
||||
- `application/vnd.docker.container.image.v1+json`: Container config JSON
|
||||
- `application/vnd.docker.image.rootfs.diff.tar.gzip`: "Layer", as a gzipped tar
|
||||
- `application/vnd.docker.image.rootfs.foreign.diff.tar.gzip`: "Layer", as a gzipped tar that should never be pushed
|
||||
- `application/vnd.docker.plugin.v1+json`: Plugin config JSON
|
||||
|
||||
## Manifest List
|
||||
|
||||
The manifest list is the "fat manifest" which points to specific image manifests
|
||||
for one or more platforms. Its use is optional, and relatively few images will
|
||||
use one of these manifests. A client will distinguish a manifest list from an
|
||||
image manifest based on the Content-Type returned in the HTTP response.
|
||||
|
||||
## *Manifest List* Field Descriptions
|
||||
|
||||
- **`schemaVersion`** *int*
|
||||
|
||||
This field specifies the image manifest schema version as an integer. This
|
||||
schema uses the version `2`.
|
||||
|
||||
- **`mediaType`** *string*
|
||||
|
||||
The MIME type of the manifest list. This should be set to
|
||||
`application/vnd.docker.distribution.manifest.list.v2+json`.
|
||||
|
||||
- **`manifests`** *array*
|
||||
|
||||
The manifests field contains a list of manifests for specific platforms.
|
||||
|
||||
Fields of an object in the manifests list are:
|
||||
|
||||
- **`mediaType`** *string*
|
||||
|
||||
The MIME type of the referenced object. This will generally be
|
||||
`application/vnd.docker.image.manifest.v2+json`, but it could also
|
||||
be `application/vnd.docker.image.manifest.v1+json` if the manifest
|
||||
list references a legacy schema-1 manifest.
|
||||
|
||||
- **`size`** *int*
|
||||
|
||||
The size in bytes of the object. This field exists so that a client
|
||||
will have an expected size for the content before validating. If the
|
||||
length of the retrieved content does not match the specified length,
|
||||
the content should not be trusted.
|
||||
|
||||
- **`digest`** *string*
|
||||
|
||||
The digest of the content, as defined by the
|
||||
[Registry V2 HTTP API Specificiation](api.md#digest-parameter).
|
||||
|
||||
- **`platform`** *object*
|
||||
|
||||
The platform object describes the platform which the image in the
|
||||
manifest runs on. A full list of valid operating system and architecture
|
||||
values are listed in the [Go language documentation for `$GOOS` and
|
||||
`$GOARCH`](https://golang.org/doc/install/source#environment)
|
||||
|
||||
- **`architecture`** *string*
|
||||
|
||||
The architecture field specifies the CPU architecture, for example
|
||||
`amd64` or `ppc64le`.
|
||||
|
||||
- **`os`** *string*
|
||||
|
||||
The os field specifies the operating system, for example
|
||||
`linux` or `windows`.
|
||||
|
||||
- **`os.version`** *string*
|
||||
|
||||
The optional os.version field specifies the operating system version,
|
||||
for example `10.0.10586`.
|
||||
|
||||
- **`os.features`** *array*
|
||||
|
||||
The optional os.features field specifies an array of strings,
|
||||
each listing a required OS feature (for example on Windows
|
||||
`win32k`).
|
||||
|
||||
- **`variant`** *string*
|
||||
|
||||
The optional variant field specifies a variant of the CPU, for
|
||||
example `armv6l` to specify a particular CPU variant of the ARM CPU.
|
||||
|
||||
- **`features`** *array*
|
||||
|
||||
The optional features field specifies an array of strings, each
|
||||
listing a required CPU feature (for example `sse4` or `aes`).
|
||||
|
||||
## Example Manifest List
|
||||
|
||||
*Example showing a simple manifest list pointing to image manifests for two platforms:*
|
||||
```json
|
||||
{
|
||||
"schemaVersion": 2,
|
||||
"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
|
||||
"manifests": [
|
||||
{
|
||||
"mediaType": "application/vnd.docker.image.manifest.v2+json",
|
||||
"size": 7143,
|
||||
"digest": "sha256:e692418e4cbaf90ca69d05a66403747baa33ee08806650b51fab815ad7fc331f",
|
||||
"platform": {
|
||||
"architecture": "ppc64le",
|
||||
"os": "linux",
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.docker.image.manifest.v2+json",
|
||||
"size": 7682,
|
||||
"digest": "sha256:5b0bcabd1ed22e9fb1310cf6c2dec7cdef19f0ad69efa1f392e94a4333501270",
|
||||
"platform": {
|
||||
"architecture": "amd64",
|
||||
"os": "linux",
|
||||
"features": [
|
||||
"sse4"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
# Image Manifest
|
||||
|
||||
The image manifest provides a configuration and a set of layers for a container
|
||||
image. It's the direct replacement for the schema-1 manifest.
|
||||
|
||||
## *Image Manifest* Field Descriptions
|
||||
|
||||
- **`schemaVersion`** *int*
|
||||
|
||||
This field specifies the image manifest schema version as an integer. This
|
||||
schema uses version `2`.
|
||||
|
||||
- **`mediaType`** *string*
|
||||
|
||||
The MIME type of the manifest. This should be set to
|
||||
`application/vnd.docker.distribution.manifest.v2+json`.
|
||||
|
||||
- **`config`** *object*
|
||||
|
||||
The config field references a configuration object for a container, by
|
||||
digest. This configuration item is a JSON blob that the runtime uses
|
||||
to set up the container. This new schema uses a tweaked version
|
||||
of this configuration to allow image content-addressability on the
|
||||
daemon side.
|
||||
|
||||
Fields of a config object are:
|
||||
|
||||
- **`mediaType`** *string*
|
||||
|
||||
The MIME type of the referenced object. This should generally be
|
||||
`application/vnd.docker.container.image.v1+json`.
|
||||
|
||||
- **`size`** *int*
|
||||
|
||||
The size in bytes of the object. This field exists so that a client
|
||||
will have an expected size for the content before validating. If the
|
||||
length of the retrieved content does not match the specified length,
|
||||
the content should not be trusted.
|
||||
|
||||
- **`digest`** *string*
|
||||
|
||||
The digest of the content, as defined by the
|
||||
[Registry V2 HTTP API Specificiation](api.md#digest-parameter).
|
||||
|
||||
- **`layers`** *array*
|
||||
|
||||
The layer list is ordered starting from the base image (opposite order of schema1).
|
||||
|
||||
Fields of an item in the layers list are:
|
||||
|
||||
- **`mediaType`** *string*
|
||||
|
||||
The MIME type of the referenced object. This should
|
||||
generally be `application/vnd.docker.image.rootfs.diff.tar.gzip`.
|
||||
Layers of type
|
||||
`application/vnd.docker.image.rootfs.foreign.diff.tar.gzip` may be
|
||||
pulled from a remote location but they should never be pushed.
|
||||
|
||||
- **`size`** *int*
|
||||
|
||||
The size in bytes of the object. This field exists so that a client
|
||||
will have an expected size for the content before validating. If the
|
||||
length of the retrieved content does not match the specified length,
|
||||
the content should not be trusted.
|
||||
|
||||
- **`digest`** *string*
|
||||
|
||||
The digest of the content, as defined by the
|
||||
[Registry V2 HTTP API Specificiation](api.md#digest-parameter).
|
||||
|
||||
- **`urls`** *array*
|
||||
|
||||
Provides a list of URLs from which the content may be fetched. Content
|
||||
should be verified against the `digest` and `size`. This field is
|
||||
optional and uncommon.
|
||||
|
||||
## Example Image Manifest
|
||||
|
||||
*Example showing an image manifest:*
|
||||
```json
|
||||
{
|
||||
"schemaVersion": 2,
|
||||
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
|
||||
"config": {
|
||||
"mediaType": "application/vnd.docker.container.image.v1+json",
|
||||
"size": 7023,
|
||||
"digest": "sha256:b5b2b2c507a0944348e0303114d8d93aaaa081732b86451d9bce1f432a537bc7"
|
||||
},
|
||||
"layers": [
|
||||
{
|
||||
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
|
||||
"size": 32654,
|
||||
"digest": "sha256:e692418e4cbaf90ca69d05a66403747baa33ee08806650b51fab815ad7fc331f"
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
|
||||
"size": 16724,
|
||||
"digest": "sha256:3c3a4604a545cdc127456d94e421cd355bca5b528f4a9c1905b15da2eb4a4c6b"
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
|
||||
"size": 73109,
|
||||
"digest": "sha256:ec4b8955958665577945c89419d1af06b5f7636b4ac3da7f12184802ad867736"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
# Backward compatibility
|
||||
|
||||
The registry will continue to accept uploads of manifests in both the old and
|
||||
new formats.
|
||||
|
||||
When pushing images, clients which support the new manifest format should first
|
||||
construct a manifest in the new format. If uploading this manifest fails,
|
||||
presumably because the registry only supports the old format, the client may
|
||||
fall back to uploading a manifest in the old format.
|
||||
|
||||
When pulling images, clients indicate support for this new version of the
|
||||
manifest format by sending the
|
||||
`application/vnd.docker.distribution.manifest.v2+json` and
|
||||
`application/vnd.docker.distribution.manifest.list.v2+json` media types in an
|
||||
`Accept` header when making a request to the `manifests` endpoint. Updated
|
||||
clients should check the `Content-Type` header to see whether the manifest
|
||||
returned from the endpoint is in the old format, or is an image manifest or
|
||||
manifest list in the new format.
|
||||
|
||||
If the manifest being requested uses the new format, and the appropriate media
|
||||
type is not present in an `Accept` header, the registry will assume that the
|
||||
client cannot handle the manifest as-is, and rewrite it on the fly into the old
|
||||
format. If the object that would otherwise be returned is a manifest list, the
|
||||
registry will look up the appropriate manifest for the amd64 platform and
|
||||
linux OS, rewrite that manifest into the old format if necessary, and return
|
||||
the result to the client. If no suitable manifest is found in the manifest
|
||||
list, the registry will return a 404 error.
|
||||
|
||||
One of the challenges in rewriting manifests to the old format is that the old
|
||||
format involves an image configuration for each layer in the manifest, but the
|
||||
new format only provides one image configuration. To work around this, the
|
||||
registry will create synthetic image configurations for all layers except the
|
||||
top layer. These image configurations will not result in runnable images on
|
||||
their own, but only serve to fill in the parent chain in a compatible way.
|
||||
The IDs in these synthetic configurations will be derived from hashes of their
|
||||
respective blobs. The registry will create these configurations and their IDs
|
||||
using the same scheme as Docker 1.10 when it creates a legacy manifest to push
|
||||
to a registry which doesn't support the new format.
|
7
gateway/vendor/github.com/docker/distribution/docs/spec/menu.md
generated
vendored
7
gateway/vendor/github.com/docker/distribution/docs/spec/menu.md
generated
vendored
@ -1,7 +0,0 @@
|
||||
---
|
||||
title: "Reference"
|
||||
description: "Explains registry JSON objects"
|
||||
keywords: ["registry, service, images, repository, json"]
|
||||
type: "menu"
|
||||
identifier: "smn_registry_ref"
|
||||
---
|
Reference in New Issue
Block a user