fix(deps): update module github.com/docker/docker to v24
Signed-off-by: Renovate Bot <bot@renovateapp.com>
This commit is contained in:
parent
90480e2eb2
commit
056ccb04e4
|
|
@ -16,7 +16,7 @@ require (
|
||||||
github.com/davecgh/go-spew v1.1.1
|
github.com/davecgh/go-spew v1.1.1
|
||||||
github.com/disiqueira/gotree/v3 v3.0.2
|
github.com/disiqueira/gotree/v3 v3.0.2
|
||||||
github.com/docker/distribution v2.8.1+incompatible
|
github.com/docker/distribution v2.8.1+incompatible
|
||||||
github.com/docker/docker v23.0.6+incompatible
|
github.com/docker/docker v24.0.0+incompatible
|
||||||
github.com/docker/go-units v0.5.0
|
github.com/docker/go-units v0.5.0
|
||||||
github.com/fsnotify/fsnotify v1.6.0
|
github.com/fsnotify/fsnotify v1.6.0
|
||||||
github.com/ghodss/yaml v1.0.0
|
github.com/ghodss/yaml v1.0.0
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,8 @@ github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6
|
||||||
github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
|
github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
|
||||||
github.com/docker/docker v23.0.6+incompatible h1:aBD4np894vatVX99UTx/GyOUOK4uEcROwA3+bQhEcoU=
|
github.com/docker/docker v23.0.6+incompatible h1:aBD4np894vatVX99UTx/GyOUOK4uEcROwA3+bQhEcoU=
|
||||||
github.com/docker/docker v23.0.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
|
github.com/docker/docker v23.0.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
|
||||||
|
github.com/docker/docker v24.0.0+incompatible h1:z4bf8HvONXX9Tde5lGBMQ7yCJgNahmJumdrStZAbeY4=
|
||||||
|
github.com/docker/docker v24.0.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
|
||||||
github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A=
|
github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A=
|
||||||
github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0=
|
github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0=
|
||||||
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
|
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ Adam Pointer <adam.pointer@skybettingandgaming.com>
|
||||||
Adam Singer <financeCoding@gmail.com>
|
Adam Singer <financeCoding@gmail.com>
|
||||||
Adam Walz <adam@adamwalz.net>
|
Adam Walz <adam@adamwalz.net>
|
||||||
Adam Williams <awilliams@mirantis.com>
|
Adam Williams <awilliams@mirantis.com>
|
||||||
|
AdamKorcz <adam@adalogics.com>
|
||||||
Addam Hardy <addam.hardy@gmail.com>
|
Addam Hardy <addam.hardy@gmail.com>
|
||||||
Aditi Rajagopal <arajagopal@us.ibm.com>
|
Aditi Rajagopal <arajagopal@us.ibm.com>
|
||||||
Aditya <aditya@netroy.in>
|
Aditya <aditya@netroy.in>
|
||||||
|
|
@ -81,6 +82,7 @@ Alex Goodman <wagoodman@gmail.com>
|
||||||
Alex Nordlund <alexander.nordlund@nasdaq.com>
|
Alex Nordlund <alexander.nordlund@nasdaq.com>
|
||||||
Alex Olshansky <i@creagenics.com>
|
Alex Olshansky <i@creagenics.com>
|
||||||
Alex Samorukov <samm@os2.kiev.ua>
|
Alex Samorukov <samm@os2.kiev.ua>
|
||||||
|
Alex Stockinger <alex@atomicjar.com>
|
||||||
Alex Warhawk <ax.warhawk@gmail.com>
|
Alex Warhawk <ax.warhawk@gmail.com>
|
||||||
Alexander Artemenko <svetlyak.40wt@gmail.com>
|
Alexander Artemenko <svetlyak.40wt@gmail.com>
|
||||||
Alexander Boyd <alex@opengroove.org>
|
Alexander Boyd <alex@opengroove.org>
|
||||||
|
|
@ -198,6 +200,7 @@ Anusha Ragunathan <anusha.ragunathan@docker.com>
|
||||||
Anyu Wang <wanganyu@outlook.com>
|
Anyu Wang <wanganyu@outlook.com>
|
||||||
apocas <petermdias@gmail.com>
|
apocas <petermdias@gmail.com>
|
||||||
Arash Deshmeh <adeshmeh@ca.ibm.com>
|
Arash Deshmeh <adeshmeh@ca.ibm.com>
|
||||||
|
arcosx <arcosx@outlook.com>
|
||||||
ArikaChen <eaglesora@gmail.com>
|
ArikaChen <eaglesora@gmail.com>
|
||||||
Arko Dasgupta <arko@tetrate.io>
|
Arko Dasgupta <arko@tetrate.io>
|
||||||
Arnaud Lefebvre <a.lefebvre@outlook.fr>
|
Arnaud Lefebvre <a.lefebvre@outlook.fr>
|
||||||
|
|
@ -241,6 +244,7 @@ Benjamin Atkin <ben@benatkin.com>
|
||||||
Benjamin Baker <Benjamin.baker@utexas.edu>
|
Benjamin Baker <Benjamin.baker@utexas.edu>
|
||||||
Benjamin Boudreau <boudreau.benjamin@gmail.com>
|
Benjamin Boudreau <boudreau.benjamin@gmail.com>
|
||||||
Benjamin Böhmke <benjamin@boehmke.net>
|
Benjamin Böhmke <benjamin@boehmke.net>
|
||||||
|
Benjamin Wang <wachao@vmware.com>
|
||||||
Benjamin Yolken <yolken@stripe.com>
|
Benjamin Yolken <yolken@stripe.com>
|
||||||
Benny Ng <benny.tpng@gmail.com>
|
Benny Ng <benny.tpng@gmail.com>
|
||||||
Benoit Chesneau <bchesneau@gmail.com>
|
Benoit Chesneau <bchesneau@gmail.com>
|
||||||
|
|
@ -634,6 +638,7 @@ Eng Zer Jun <engzerjun@gmail.com>
|
||||||
Enguerran <engcolson@gmail.com>
|
Enguerran <engcolson@gmail.com>
|
||||||
Eohyung Lee <liquidnuker@gmail.com>
|
Eohyung Lee <liquidnuker@gmail.com>
|
||||||
epeterso <epeterson@breakpoint-labs.com>
|
epeterso <epeterson@breakpoint-labs.com>
|
||||||
|
er0k <er0k@er0k.net>
|
||||||
Eric Barch <barch@tomesoftware.com>
|
Eric Barch <barch@tomesoftware.com>
|
||||||
Eric Curtin <ericcurtin17@gmail.com>
|
Eric Curtin <ericcurtin17@gmail.com>
|
||||||
Eric G. Noriega <enoriega@vizuri.com>
|
Eric G. Noriega <enoriega@vizuri.com>
|
||||||
|
|
@ -754,6 +759,7 @@ Félix Baylac-Jacqué <baylac.felix@gmail.com>
|
||||||
Félix Cantournet <felix.cantournet@cloudwatt.com>
|
Félix Cantournet <felix.cantournet@cloudwatt.com>
|
||||||
Gabe Rosenhouse <gabe@missionst.com>
|
Gabe Rosenhouse <gabe@missionst.com>
|
||||||
Gabor Nagy <mail@aigeruth.hu>
|
Gabor Nagy <mail@aigeruth.hu>
|
||||||
|
Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
|
||||||
Gabriel Goller <gabrielgoller123@gmail.com>
|
Gabriel Goller <gabrielgoller123@gmail.com>
|
||||||
Gabriel L. Somlo <gsomlo@gmail.com>
|
Gabriel L. Somlo <gsomlo@gmail.com>
|
||||||
Gabriel Linder <linder.gabriel@gmail.com>
|
Gabriel Linder <linder.gabriel@gmail.com>
|
||||||
|
|
@ -855,6 +861,7 @@ Hongbin Lu <hongbin034@gmail.com>
|
||||||
Hongxu Jia <hongxu.jia@windriver.com>
|
Hongxu Jia <hongxu.jia@windriver.com>
|
||||||
Honza Pokorny <me@honza.ca>
|
Honza Pokorny <me@honza.ca>
|
||||||
Hsing-Hui Hsu <hsinghui@amazon.com>
|
Hsing-Hui Hsu <hsinghui@amazon.com>
|
||||||
|
Hsing-Yu (David) Chen <davidhsingyuchen@gmail.com>
|
||||||
hsinko <21551195@zju.edu.cn>
|
hsinko <21551195@zju.edu.cn>
|
||||||
Hu Keping <hukeping@huawei.com>
|
Hu Keping <hukeping@huawei.com>
|
||||||
Hu Tao <hutao@cn.fujitsu.com>
|
Hu Tao <hutao@cn.fujitsu.com>
|
||||||
|
|
@ -887,6 +894,7 @@ Igor Dolzhikov <bluesriverz@gmail.com>
|
||||||
Igor Karpovich <i.karpovich@currencysolutions.com>
|
Igor Karpovich <i.karpovich@currencysolutions.com>
|
||||||
Iliana Weller <iweller@amazon.com>
|
Iliana Weller <iweller@amazon.com>
|
||||||
Ilkka Laukkanen <ilkka@ilkka.io>
|
Ilkka Laukkanen <ilkka@ilkka.io>
|
||||||
|
Illia Antypenko <ilya@antipenko.pp.ua>
|
||||||
Illo Abdulrahim <abdulrahim.illo@nokia.com>
|
Illo Abdulrahim <abdulrahim.illo@nokia.com>
|
||||||
Ilya Dmitrichenko <errordeveloper@gmail.com>
|
Ilya Dmitrichenko <errordeveloper@gmail.com>
|
||||||
Ilya Gusev <mail@igusev.ru>
|
Ilya Gusev <mail@igusev.ru>
|
||||||
|
|
@ -938,6 +946,7 @@ Jamie Hannaford <jamie@limetree.org>
|
||||||
Jamshid Afshar <jafshar@yahoo.com>
|
Jamshid Afshar <jafshar@yahoo.com>
|
||||||
Jan Breig <git@pygos.space>
|
Jan Breig <git@pygos.space>
|
||||||
Jan Chren <dev.rindeal@gmail.com>
|
Jan Chren <dev.rindeal@gmail.com>
|
||||||
|
Jan Garcia <github-public@n-garcia.com>
|
||||||
Jan Götte <jaseg@jaseg.net>
|
Jan Götte <jaseg@jaseg.net>
|
||||||
Jan Keromnes <janx@linux.com>
|
Jan Keromnes <janx@linux.com>
|
||||||
Jan Koprowski <jan.koprowski@gmail.com>
|
Jan Koprowski <jan.koprowski@gmail.com>
|
||||||
|
|
@ -1206,6 +1215,7 @@ Kimbro Staken <kstaken@kstaken.com>
|
||||||
Kir Kolyshkin <kolyshkin@gmail.com>
|
Kir Kolyshkin <kolyshkin@gmail.com>
|
||||||
Kiran Gangadharan <kiran.daredevil@gmail.com>
|
Kiran Gangadharan <kiran.daredevil@gmail.com>
|
||||||
Kirill SIbirev <l0kix2@gmail.com>
|
Kirill SIbirev <l0kix2@gmail.com>
|
||||||
|
Kirk Easterson <kirk.easterson@gmail.com>
|
||||||
knappe <tyler.knappe@gmail.com>
|
knappe <tyler.knappe@gmail.com>
|
||||||
Kohei Tsuruta <coheyxyz@gmail.com>
|
Kohei Tsuruta <coheyxyz@gmail.com>
|
||||||
Koichi Shiraishi <k@zchee.io>
|
Koichi Shiraishi <k@zchee.io>
|
||||||
|
|
@ -1240,10 +1250,12 @@ Lars Kellogg-Stedman <lars@redhat.com>
|
||||||
Lars R. Damerow <lars@pixar.com>
|
Lars R. Damerow <lars@pixar.com>
|
||||||
Lars-Magnus Skog <ralphtheninja@riseup.net>
|
Lars-Magnus Skog <ralphtheninja@riseup.net>
|
||||||
Laszlo Meszaros <lacienator@gmail.com>
|
Laszlo Meszaros <lacienator@gmail.com>
|
||||||
|
Laura Brehm <laurabrehm@hey.com>
|
||||||
Laura Frank <ljfrank@gmail.com>
|
Laura Frank <ljfrank@gmail.com>
|
||||||
Laurent Bernaille <laurent.bernaille@datadoghq.com>
|
Laurent Bernaille <laurent.bernaille@datadoghq.com>
|
||||||
Laurent Erignoux <lerignoux@gmail.com>
|
Laurent Erignoux <lerignoux@gmail.com>
|
||||||
Laurie Voss <github@seldo.com>
|
Laurie Voss <github@seldo.com>
|
||||||
|
Leandro Motta Barros <lmb@stackedboxes.org>
|
||||||
Leandro Siqueira <leandro.siqueira@gmail.com>
|
Leandro Siqueira <leandro.siqueira@gmail.com>
|
||||||
Lee Calcote <leecalcote@gmail.com>
|
Lee Calcote <leecalcote@gmail.com>
|
||||||
Lee Chao <932819864@qq.com>
|
Lee Chao <932819864@qq.com>
|
||||||
|
|
@ -1563,6 +1575,7 @@ Nick Neisen <nwneisen@gmail.com>
|
||||||
Nick Parker <nikaios@gmail.com>
|
Nick Parker <nikaios@gmail.com>
|
||||||
Nick Payne <nick@kurai.co.uk>
|
Nick Payne <nick@kurai.co.uk>
|
||||||
Nick Russo <nicholasjamesrusso@gmail.com>
|
Nick Russo <nicholasjamesrusso@gmail.com>
|
||||||
|
Nick Santos <nick.santos@docker.com>
|
||||||
Nick Stenning <nick.stenning@digital.cabinet-office.gov.uk>
|
Nick Stenning <nick.stenning@digital.cabinet-office.gov.uk>
|
||||||
Nick Stinemates <nick@stinemates.org>
|
Nick Stinemates <nick@stinemates.org>
|
||||||
Nick Wood <nwood@microsoft.com>
|
Nick Wood <nwood@microsoft.com>
|
||||||
|
|
@ -1584,6 +1597,7 @@ NikolaMandic <mn080202@gmail.com>
|
||||||
Nikolas Garofil <nikolas.garofil@uantwerpen.be>
|
Nikolas Garofil <nikolas.garofil@uantwerpen.be>
|
||||||
Nikolay Edigaryev <edigaryev@gmail.com>
|
Nikolay Edigaryev <edigaryev@gmail.com>
|
||||||
Nikolay Milovanov <nmil@itransformers.net>
|
Nikolay Milovanov <nmil@itransformers.net>
|
||||||
|
ningmingxiao <ning.mingxiao@zte.com.cn>
|
||||||
Nirmal Mehta <nirmalkmehta@gmail.com>
|
Nirmal Mehta <nirmalkmehta@gmail.com>
|
||||||
Nishant Totla <nishanttotla@gmail.com>
|
Nishant Totla <nishanttotla@gmail.com>
|
||||||
NIWA Hideyuki <niwa.niwa@nifty.ne.jp>
|
NIWA Hideyuki <niwa.niwa@nifty.ne.jp>
|
||||||
|
|
@ -1615,6 +1629,7 @@ Omri Shiv <Omri.Shiv@teradata.com>
|
||||||
Onur Filiz <onur.filiz@microsoft.com>
|
Onur Filiz <onur.filiz@microsoft.com>
|
||||||
Oriol Francès <oriolfa@gmail.com>
|
Oriol Francès <oriolfa@gmail.com>
|
||||||
Oscar Bonilla <6f6231@gmail.com>
|
Oscar Bonilla <6f6231@gmail.com>
|
||||||
|
oscar.chen <2972789494@qq.com>
|
||||||
Oskar Niburski <oskarniburski@gmail.com>
|
Oskar Niburski <oskarniburski@gmail.com>
|
||||||
Otto Kekäläinen <otto@seravo.fi>
|
Otto Kekäläinen <otto@seravo.fi>
|
||||||
Ouyang Liduo <oyld0210@163.com>
|
Ouyang Liduo <oyld0210@163.com>
|
||||||
|
|
@ -1822,6 +1837,7 @@ Rory Hunter <roryhunter2@gmail.com>
|
||||||
Rory McCune <raesene@gmail.com>
|
Rory McCune <raesene@gmail.com>
|
||||||
Ross Boucher <rboucher@gmail.com>
|
Ross Boucher <rboucher@gmail.com>
|
||||||
Rovanion Luckey <rovanion.luckey@gmail.com>
|
Rovanion Luckey <rovanion.luckey@gmail.com>
|
||||||
|
Roy Reznik <roy@wiz.io>
|
||||||
Royce Remer <royceremer@gmail.com>
|
Royce Remer <royceremer@gmail.com>
|
||||||
Rozhnov Alexandr <nox73@ya.ru>
|
Rozhnov Alexandr <nox73@ya.ru>
|
||||||
Rudolph Gottesheim <r.gottesheim@loot.at>
|
Rudolph Gottesheim <r.gottesheim@loot.at>
|
||||||
|
|
@ -2271,6 +2287,7 @@ Xiaoyu Zhang <zhang.xiaoyu33@zte.com.cn>
|
||||||
xichengliudui <1693291525@qq.com>
|
xichengliudui <1693291525@qq.com>
|
||||||
xiekeyang <xiekeyang@huawei.com>
|
xiekeyang <xiekeyang@huawei.com>
|
||||||
Ximo Guanter Gonzálbez <joaquin.guantergonzalbez@telefonica.com>
|
Ximo Guanter Gonzálbez <joaquin.guantergonzalbez@telefonica.com>
|
||||||
|
xin.li <xin.li@daocloud.io>
|
||||||
Xinbo Weng <xihuanbo_0521@zju.edu.cn>
|
Xinbo Weng <xihuanbo_0521@zju.edu.cn>
|
||||||
Xinfeng Liu <xinfeng.liu@gmail.com>
|
Xinfeng Liu <xinfeng.liu@gmail.com>
|
||||||
Xinzi Zhou <imdreamrunner@gmail.com>
|
Xinzi Zhou <imdreamrunner@gmail.com>
|
||||||
|
|
@ -2282,6 +2299,7 @@ Yahya <ya7yaz@gmail.com>
|
||||||
yalpul <yalpul@gmail.com>
|
yalpul <yalpul@gmail.com>
|
||||||
YAMADA Tsuyoshi <tyamada@minimum2scp.org>
|
YAMADA Tsuyoshi <tyamada@minimum2scp.org>
|
||||||
Yamasaki Masahide <masahide.y@gmail.com>
|
Yamasaki Masahide <masahide.y@gmail.com>
|
||||||
|
Yamazaki Masashi <masi19bw@gmail.com>
|
||||||
Yan Feng <yanfeng2@huawei.com>
|
Yan Feng <yanfeng2@huawei.com>
|
||||||
Yan Zhu <yanzhu@alauda.io>
|
Yan Zhu <yanzhu@alauda.io>
|
||||||
Yang Bai <hamo.by@gmail.com>
|
Yang Bai <hamo.by@gmail.com>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package api // import "github.com/docker/docker/api"
|
||||||
// Common constants for daemon and client.
|
// Common constants for daemon and client.
|
||||||
const (
|
const (
|
||||||
// DefaultVersion of Current REST API
|
// DefaultVersion of Current REST API
|
||||||
DefaultVersion = "1.42"
|
DefaultVersion = "1.43"
|
||||||
|
|
||||||
// NoBaseImageSpecifier is the symbol used by the FROM
|
// NoBaseImageSpecifier is the symbol used by the FROM
|
||||||
// command to specify that no base image is to be used.
|
// command to specify that no base image is to be used.
|
||||||
|
|
|
||||||
|
|
@ -19,10 +19,10 @@ produces:
|
||||||
consumes:
|
consumes:
|
||||||
- "application/json"
|
- "application/json"
|
||||||
- "text/plain"
|
- "text/plain"
|
||||||
basePath: "/v1.42"
|
basePath: "/v1.43"
|
||||||
info:
|
info:
|
||||||
title: "Docker Engine API"
|
title: "Docker Engine API"
|
||||||
version: "1.42"
|
version: "1.43"
|
||||||
x-logo:
|
x-logo:
|
||||||
url: "https://docs.docker.com/assets/images/logo-docker-main.png"
|
url: "https://docs.docker.com/assets/images/logo-docker-main.png"
|
||||||
description: |
|
description: |
|
||||||
|
|
@ -55,8 +55,8 @@ info:
|
||||||
the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
|
the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
|
||||||
is returned.
|
is returned.
|
||||||
|
|
||||||
If you omit the version-prefix, the current version of the API (v1.42) is used.
|
If you omit the version-prefix, the current version of the API (v1.43) is used.
|
||||||
For example, calling `/info` is the same as calling `/v1.42/info`. Using the
|
For example, calling `/info` is the same as calling `/v1.43/info`. Using the
|
||||||
API without a version-prefix is deprecated and will be removed in a future release.
|
API without a version-prefix is deprecated and will be removed in a future release.
|
||||||
|
|
||||||
Engine releases in the near future should support this version of the API,
|
Engine releases in the near future should support this version of the API,
|
||||||
|
|
@ -976,6 +976,13 @@ definitions:
|
||||||
items:
|
items:
|
||||||
type: "integer"
|
type: "integer"
|
||||||
minimum: 0
|
minimum: 0
|
||||||
|
Annotations:
|
||||||
|
type: "object"
|
||||||
|
description: |
|
||||||
|
Arbitrary non-identifying metadata attached to container and
|
||||||
|
provided to the runtime when the container is started.
|
||||||
|
additionalProperties:
|
||||||
|
type: "string"
|
||||||
|
|
||||||
# Applicable to UNIX platforms
|
# Applicable to UNIX platforms
|
||||||
CapAdd:
|
CapAdd:
|
||||||
|
|
@ -1122,6 +1129,7 @@ definitions:
|
||||||
remapping option is enabled.
|
remapping option is enabled.
|
||||||
ShmSize:
|
ShmSize:
|
||||||
type: "integer"
|
type: "integer"
|
||||||
|
format: "int64"
|
||||||
description: |
|
description: |
|
||||||
Size of `/dev/shm` in bytes. If omitted, the system uses 64MB.
|
Size of `/dev/shm` in bytes. If omitted, the system uses 64MB.
|
||||||
minimum: 0
|
minimum: 0
|
||||||
|
|
@ -1610,6 +1618,34 @@ definitions:
|
||||||
"WorkDir": "/var/lib/docker/overlay2/ef749362d13333e65fc95c572eb525abbe0052e16e086cb64bc3b98ae9aa6d74/work"
|
"WorkDir": "/var/lib/docker/overlay2/ef749362d13333e65fc95c572eb525abbe0052e16e086cb64bc3b98ae9aa6d74/work"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FilesystemChange:
|
||||||
|
description: |
|
||||||
|
Change in the container's filesystem.
|
||||||
|
type: "object"
|
||||||
|
required: [Path, Kind]
|
||||||
|
properties:
|
||||||
|
Path:
|
||||||
|
description: |
|
||||||
|
Path to file or directory that has changed.
|
||||||
|
type: "string"
|
||||||
|
x-nullable: false
|
||||||
|
Kind:
|
||||||
|
$ref: "#/definitions/ChangeType"
|
||||||
|
|
||||||
|
ChangeType:
|
||||||
|
description: |
|
||||||
|
Kind of change
|
||||||
|
|
||||||
|
Can be one of:
|
||||||
|
|
||||||
|
- `0`: Modified ("C")
|
||||||
|
- `1`: Added ("A")
|
||||||
|
- `2`: Deleted ("D")
|
||||||
|
type: "integer"
|
||||||
|
format: "uint8"
|
||||||
|
enum: [0, 1, 2]
|
||||||
|
x-nullable: false
|
||||||
|
|
||||||
ImageInspect:
|
ImageInspect:
|
||||||
description: |
|
description: |
|
||||||
Information about an image in the local image cache.
|
Information about an image in the local image cache.
|
||||||
|
|
@ -1746,15 +1782,14 @@ definitions:
|
||||||
Total size of the image including all layers it is composed of.
|
Total size of the image including all layers it is composed of.
|
||||||
|
|
||||||
In versions of Docker before v1.10, this field was calculated from
|
In versions of Docker before v1.10, this field was calculated from
|
||||||
the image itself and all of its parent images. Docker v1.10 and up
|
the image itself and all of its parent images. Images are now stored
|
||||||
store images self-contained, and no longer use a parent-chain, making
|
self-contained, and no longer use a parent-chain, making this field
|
||||||
this field an equivalent of the Size field.
|
an equivalent of the Size field.
|
||||||
|
|
||||||
This field is kept for backward compatibility, but may be removed in
|
> **Deprecated**: this field is kept for backward compatibility, but
|
||||||
a future version of the API.
|
> will be removed in API v1.44.
|
||||||
type: "integer"
|
type: "integer"
|
||||||
format: "int64"
|
format: "int64"
|
||||||
x-nullable: false
|
|
||||||
example: 1239828
|
example: 1239828
|
||||||
GraphDriver:
|
GraphDriver:
|
||||||
$ref: "#/definitions/GraphDriverData"
|
$ref: "#/definitions/GraphDriverData"
|
||||||
|
|
@ -1802,7 +1837,6 @@ definitions:
|
||||||
- Created
|
- Created
|
||||||
- Size
|
- Size
|
||||||
- SharedSize
|
- SharedSize
|
||||||
- VirtualSize
|
|
||||||
- Labels
|
- Labels
|
||||||
- Containers
|
- Containers
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -1888,19 +1922,17 @@ definitions:
|
||||||
x-nullable: false
|
x-nullable: false
|
||||||
example: 1239828
|
example: 1239828
|
||||||
VirtualSize:
|
VirtualSize:
|
||||||
description: |
|
description: |-
|
||||||
Total size of the image including all layers it is composed of.
|
Total size of the image including all layers it is composed of.
|
||||||
|
|
||||||
In versions of Docker before v1.10, this field was calculated from
|
In versions of Docker before v1.10, this field was calculated from
|
||||||
the image itself and all of its parent images. Docker v1.10 and up
|
the image itself and all of its parent images. Images are now stored
|
||||||
store images self-contained, and no longer use a parent-chain, making
|
self-contained, and no longer use a parent-chain, making this field
|
||||||
this field an equivalent of the Size field.
|
an equivalent of the Size field.
|
||||||
|
|
||||||
This field is kept for backward compatibility, but may be removed in
|
Deprecated: this field is kept for backward compatibility, and will be removed in API v1.44.
|
||||||
a future version of the API.
|
|
||||||
type: "integer"
|
type: "integer"
|
||||||
format: "int64"
|
format: "int64"
|
||||||
x-nullable: false
|
|
||||||
example: 172064416
|
example: 172064416
|
||||||
Labels:
|
Labels:
|
||||||
description: "User-defined key/value metadata."
|
description: "User-defined key/value metadata."
|
||||||
|
|
@ -4652,7 +4684,8 @@ definitions:
|
||||||
example: false
|
example: false
|
||||||
OOMKilled:
|
OOMKilled:
|
||||||
description: |
|
description: |
|
||||||
Whether this container has been killed because it ran out of memory.
|
Whether a process within this container has been killed because it ran
|
||||||
|
out of memory since the container was last started.
|
||||||
type: "boolean"
|
type: "boolean"
|
||||||
example: false
|
example: false
|
||||||
Dead:
|
Dead:
|
||||||
|
|
@ -5242,7 +5275,8 @@ definitions:
|
||||||
SecurityOptions:
|
SecurityOptions:
|
||||||
description: |
|
description: |
|
||||||
List of security features that are enabled on the daemon, such as
|
List of security features that are enabled on the daemon, such as
|
||||||
apparmor, seccomp, SELinux, user-namespaces (userns), and rootless.
|
apparmor, seccomp, SELinux, user-namespaces (userns), rootless and
|
||||||
|
no-new-privileges.
|
||||||
|
|
||||||
Additional configuration options for each security feature may
|
Additional configuration options for each security feature may
|
||||||
be present, and are included as a comma-separated list of key/value
|
be present, and are included as a comma-separated list of key/value
|
||||||
|
|
@ -6875,9 +6909,9 @@ paths:
|
||||||
Returns which files in a container's filesystem have been added, deleted,
|
Returns which files in a container's filesystem have been added, deleted,
|
||||||
or modified. The `Kind` of modification can be one of:
|
or modified. The `Kind` of modification can be one of:
|
||||||
|
|
||||||
- `0`: Modified
|
- `0`: Modified ("C")
|
||||||
- `1`: Added
|
- `1`: Added ("A")
|
||||||
- `2`: Deleted
|
- `2`: Deleted ("D")
|
||||||
operationId: "ContainerChanges"
|
operationId: "ContainerChanges"
|
||||||
produces: ["application/json"]
|
produces: ["application/json"]
|
||||||
responses:
|
responses:
|
||||||
|
|
@ -6886,22 +6920,7 @@ paths:
|
||||||
schema:
|
schema:
|
||||||
type: "array"
|
type: "array"
|
||||||
items:
|
items:
|
||||||
type: "object"
|
$ref: "#/definitions/FilesystemChange"
|
||||||
x-go-name: "ContainerChangeResponseItem"
|
|
||||||
title: "ContainerChangeResponseItem"
|
|
||||||
description: "change item in response to ContainerChanges operation"
|
|
||||||
required: [Path, Kind]
|
|
||||||
properties:
|
|
||||||
Path:
|
|
||||||
description: "Path to file that has changed"
|
|
||||||
type: "string"
|
|
||||||
x-nullable: false
|
|
||||||
Kind:
|
|
||||||
description: "Kind of change"
|
|
||||||
type: "integer"
|
|
||||||
format: "uint8"
|
|
||||||
enum: [0, 1, 2]
|
|
||||||
x-nullable: false
|
|
||||||
examples:
|
examples:
|
||||||
application/json:
|
application/json:
|
||||||
- Path: "/dev"
|
- Path: "/dev"
|
||||||
|
|
@ -8228,7 +8247,7 @@ paths:
|
||||||
|
|
||||||
Available filters:
|
Available filters:
|
||||||
|
|
||||||
- `until=<duration>`: duration relative to daemon's time, during which build cache was not used, in Go's duration format (e.g., '24h')
|
- `until=<timestamp>` remove cache older than `<timestamp>`. The `<timestamp>` can be Unix timestamps, date formatted timestamps, or Go duration strings (e.g. `10m`, `1h30m`) computed relative to the daemon's local time.
|
||||||
- `id=<id>`
|
- `id=<id>`
|
||||||
- `parent=<id>`
|
- `parent=<id>`
|
||||||
- `type=<string>`
|
- `type=<string>`
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,7 @@
|
||||||
package types // import "github.com/docker/docker/api/types"
|
package types // import "github.com/docker/docker/api/types"
|
||||||
|
import "github.com/docker/docker/api/types/registry"
|
||||||
|
|
||||||
// AuthConfig contains authorization information for connecting to a Registry
|
// AuthConfig contains authorization information for connecting to a Registry.
|
||||||
type AuthConfig struct {
|
//
|
||||||
Username string `json:"username,omitempty"`
|
// Deprecated: use github.com/docker/docker/api/types/registry.AuthConfig
|
||||||
Password string `json:"password,omitempty"`
|
type AuthConfig = registry.AuthConfig
|
||||||
Auth string `json:"auth,omitempty"`
|
|
||||||
|
|
||||||
// Email is an optional value associated with the username.
|
|
||||||
// This field is deprecated and will be removed in a later
|
|
||||||
// version of docker.
|
|
||||||
Email string `json:"email,omitempty"`
|
|
||||||
|
|
||||||
ServerAddress string `json:"serveraddress,omitempty"`
|
|
||||||
|
|
||||||
// IdentityToken is used to authenticate the user and get
|
|
||||||
// an access token for the registry.
|
|
||||||
IdentityToken string `json:"identitytoken,omitempty"`
|
|
||||||
|
|
||||||
// RegistryToken is a bearer token to be sent to a registry
|
|
||||||
RegistryToken string `json:"registrytoken,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import (
|
||||||
|
|
||||||
"github.com/docker/docker/api/types/container"
|
"github.com/docker/docker/api/types/container"
|
||||||
"github.com/docker/docker/api/types/filters"
|
"github.com/docker/docker/api/types/filters"
|
||||||
|
"github.com/docker/docker/api/types/registry"
|
||||||
units "github.com/docker/go-units"
|
units "github.com/docker/go-units"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -180,7 +181,7 @@ type ImageBuildOptions struct {
|
||||||
// at all (nil). See the parsing of buildArgs in
|
// at all (nil). See the parsing of buildArgs in
|
||||||
// api/server/router/build/build_routes.go for even more info.
|
// api/server/router/build/build_routes.go for even more info.
|
||||||
BuildArgs map[string]*string
|
BuildArgs map[string]*string
|
||||||
AuthConfigs map[string]AuthConfig
|
AuthConfigs map[string]registry.AuthConfig
|
||||||
Context io.Reader
|
Context io.Reader
|
||||||
Labels map[string]string
|
Labels map[string]string
|
||||||
// squash the resulting image's layers to the parent
|
// squash the resulting image's layers to the parent
|
||||||
|
|
|
||||||
6
common/vendor/github.com/docker/docker/api/types/container/change_response_deprecated.go
generated
vendored
Normal file
6
common/vendor/github.com/docker/docker/api/types/container/change_response_deprecated.go
generated
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
package container
|
||||||
|
|
||||||
|
// ContainerChangeResponseItem change item in response to ContainerChanges operation
|
||||||
|
//
|
||||||
|
// Deprecated: use [FilesystemChange].
|
||||||
|
type ContainerChangeResponseItem = FilesystemChange
|
||||||
15
common/vendor/github.com/docker/docker/api/types/container/change_type.go
generated
vendored
Normal file
15
common/vendor/github.com/docker/docker/api/types/container/change_type.go
generated
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
package container
|
||||||
|
|
||||||
|
// This file was generated by the swagger tool.
|
||||||
|
// Editing this file might prove futile when you re-run the swagger generate command
|
||||||
|
|
||||||
|
// ChangeType Kind of change
|
||||||
|
//
|
||||||
|
// Can be one of:
|
||||||
|
//
|
||||||
|
// - `0`: Modified ("C")
|
||||||
|
// - `1`: Added ("A")
|
||||||
|
// - `2`: Deleted ("D")
|
||||||
|
//
|
||||||
|
// swagger:model ChangeType
|
||||||
|
type ChangeType uint8
|
||||||
23
common/vendor/github.com/docker/docker/api/types/container/change_types.go
generated
vendored
Normal file
23
common/vendor/github.com/docker/docker/api/types/container/change_types.go
generated
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
package container
|
||||||
|
|
||||||
|
const (
|
||||||
|
// ChangeModify represents the modify operation.
|
||||||
|
ChangeModify ChangeType = 0
|
||||||
|
// ChangeAdd represents the add operation.
|
||||||
|
ChangeAdd ChangeType = 1
|
||||||
|
// ChangeDelete represents the delete operation.
|
||||||
|
ChangeDelete ChangeType = 2
|
||||||
|
)
|
||||||
|
|
||||||
|
func (ct ChangeType) String() string {
|
||||||
|
switch ct {
|
||||||
|
case ChangeModify:
|
||||||
|
return "C"
|
||||||
|
case ChangeAdd:
|
||||||
|
return "A"
|
||||||
|
case ChangeDelete:
|
||||||
|
return "D"
|
||||||
|
default:
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
}
|
||||||
20
common/vendor/github.com/docker/docker/api/types/container/container_changes.go
generated
vendored
20
common/vendor/github.com/docker/docker/api/types/container/container_changes.go
generated
vendored
|
|
@ -1,20 +0,0 @@
|
||||||
package container // import "github.com/docker/docker/api/types/container"
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
// Code generated by `swagger generate operation`. DO NOT EDIT.
|
|
||||||
//
|
|
||||||
// See hack/generate-swagger-api.sh
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// ContainerChangeResponseItem change item in response to ContainerChanges operation
|
|
||||||
// swagger:model ContainerChangeResponseItem
|
|
||||||
type ContainerChangeResponseItem struct {
|
|
||||||
|
|
||||||
// Kind of change
|
|
||||||
// Required: true
|
|
||||||
Kind uint8 `json:"Kind"`
|
|
||||||
|
|
||||||
// Path to file that has changed
|
|
||||||
// Required: true
|
|
||||||
Path string `json:"Path"`
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
package container // import "github.com/docker/docker/api/types/container"
|
|
||||||
|
|
||||||
// ContainerCreateCreatedBody OK response to ContainerCreate operation
|
|
||||||
//
|
|
||||||
// Deprecated: use CreateResponse
|
|
||||||
type ContainerCreateCreatedBody = CreateResponse
|
|
||||||
|
|
||||||
// ContainerWaitOKBody OK response to ContainerWait operation
|
|
||||||
//
|
|
||||||
// Deprecated: use WaitResponse
|
|
||||||
type ContainerWaitOKBody = WaitResponse
|
|
||||||
|
|
||||||
// ContainerWaitOKBodyError container waiting error, if any
|
|
||||||
//
|
|
||||||
// Deprecated: use WaitExitError
|
|
||||||
type ContainerWaitOKBodyError = WaitExitError
|
|
||||||
19
common/vendor/github.com/docker/docker/api/types/container/filesystem_change.go
generated
vendored
Normal file
19
common/vendor/github.com/docker/docker/api/types/container/filesystem_change.go
generated
vendored
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
package container
|
||||||
|
|
||||||
|
// This file was generated by the swagger tool.
|
||||||
|
// Editing this file might prove futile when you re-run the swagger generate command
|
||||||
|
|
||||||
|
// FilesystemChange Change in the container's filesystem.
|
||||||
|
//
|
||||||
|
// swagger:model FilesystemChange
|
||||||
|
type FilesystemChange struct {
|
||||||
|
|
||||||
|
// kind
|
||||||
|
// Required: true
|
||||||
|
Kind ChangeType `json:"Kind"`
|
||||||
|
|
||||||
|
// Path to file or directory that has changed.
|
||||||
|
//
|
||||||
|
// Required: true
|
||||||
|
Path string `json:"Path"`
|
||||||
|
}
|
||||||
|
|
@ -101,7 +101,8 @@ func (n IpcMode) IsShareable() bool {
|
||||||
|
|
||||||
// IsContainer indicates whether the container uses another container's ipc namespace.
|
// IsContainer indicates whether the container uses another container's ipc namespace.
|
||||||
func (n IpcMode) IsContainer() bool {
|
func (n IpcMode) IsContainer() bool {
|
||||||
return strings.HasPrefix(string(n), string(IPCModeContainer)+":")
|
_, ok := containerID(string(n))
|
||||||
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsNone indicates whether container IpcMode is set to "none".
|
// IsNone indicates whether container IpcMode is set to "none".
|
||||||
|
|
@ -116,15 +117,14 @@ func (n IpcMode) IsEmpty() bool {
|
||||||
|
|
||||||
// Valid indicates whether the ipc mode is valid.
|
// Valid indicates whether the ipc mode is valid.
|
||||||
func (n IpcMode) Valid() bool {
|
func (n IpcMode) Valid() bool {
|
||||||
|
// TODO(thaJeztah): align with PidMode, and consider container-mode without a container name/ID to be invalid.
|
||||||
return n.IsEmpty() || n.IsNone() || n.IsPrivate() || n.IsHost() || n.IsShareable() || n.IsContainer()
|
return n.IsEmpty() || n.IsNone() || n.IsPrivate() || n.IsHost() || n.IsShareable() || n.IsContainer()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Container returns the name of the container ipc stack is going to be used.
|
// Container returns the name of the container ipc stack is going to be used.
|
||||||
func (n IpcMode) Container() string {
|
func (n IpcMode) Container() (idOrName string) {
|
||||||
if n.IsContainer() {
|
idOrName, _ = containerID(string(n))
|
||||||
return strings.TrimPrefix(string(n), string(IPCModeContainer)+":")
|
return idOrName
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// NetworkMode represents the container network stack.
|
// NetworkMode represents the container network stack.
|
||||||
|
|
@ -147,17 +147,14 @@ func (n NetworkMode) IsPrivate() bool {
|
||||||
|
|
||||||
// IsContainer indicates whether container uses a container network stack.
|
// IsContainer indicates whether container uses a container network stack.
|
||||||
func (n NetworkMode) IsContainer() bool {
|
func (n NetworkMode) IsContainer() bool {
|
||||||
parts := strings.SplitN(string(n), ":", 2)
|
_, ok := containerID(string(n))
|
||||||
return len(parts) > 1 && parts[0] == "container"
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
// ConnectedContainer is the id of the container which network this container is connected to.
|
// ConnectedContainer is the id of the container which network this container is connected to.
|
||||||
func (n NetworkMode) ConnectedContainer() string {
|
func (n NetworkMode) ConnectedContainer() (idOrName string) {
|
||||||
parts := strings.SplitN(string(n), ":", 2)
|
idOrName, _ = containerID(string(n))
|
||||||
if len(parts) > 1 {
|
return idOrName
|
||||||
return parts[1]
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// UserDefined indicates user-created network
|
// UserDefined indicates user-created network
|
||||||
|
|
@ -178,18 +175,12 @@ func (n UsernsMode) IsHost() bool {
|
||||||
|
|
||||||
// IsPrivate indicates whether the container uses the a private userns.
|
// IsPrivate indicates whether the container uses the a private userns.
|
||||||
func (n UsernsMode) IsPrivate() bool {
|
func (n UsernsMode) IsPrivate() bool {
|
||||||
return !(n.IsHost())
|
return !n.IsHost()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Valid indicates whether the userns is valid.
|
// Valid indicates whether the userns is valid.
|
||||||
func (n UsernsMode) Valid() bool {
|
func (n UsernsMode) Valid() bool {
|
||||||
parts := strings.Split(string(n), ":")
|
return n == "" || n.IsHost()
|
||||||
switch mode := parts[0]; mode {
|
|
||||||
case "", "host":
|
|
||||||
default:
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// CgroupSpec represents the cgroup to use for the container.
|
// CgroupSpec represents the cgroup to use for the container.
|
||||||
|
|
@ -197,22 +188,20 @@ type CgroupSpec string
|
||||||
|
|
||||||
// IsContainer indicates whether the container is using another container cgroup
|
// IsContainer indicates whether the container is using another container cgroup
|
||||||
func (c CgroupSpec) IsContainer() bool {
|
func (c CgroupSpec) IsContainer() bool {
|
||||||
parts := strings.SplitN(string(c), ":", 2)
|
_, ok := containerID(string(c))
|
||||||
return len(parts) > 1 && parts[0] == "container"
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
// Valid indicates whether the cgroup spec is valid.
|
// Valid indicates whether the cgroup spec is valid.
|
||||||
func (c CgroupSpec) Valid() bool {
|
func (c CgroupSpec) Valid() bool {
|
||||||
return c.IsContainer() || c == ""
|
// TODO(thaJeztah): align with PidMode, and consider container-mode without a container name/ID to be invalid.
|
||||||
|
return c == "" || c.IsContainer()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Container returns the name of the container whose cgroup will be used.
|
// Container returns the ID or name of the container whose cgroup will be used.
|
||||||
func (c CgroupSpec) Container() string {
|
func (c CgroupSpec) Container() (idOrName string) {
|
||||||
parts := strings.SplitN(string(c), ":", 2)
|
idOrName, _ = containerID(string(c))
|
||||||
if len(parts) > 1 {
|
return idOrName
|
||||||
return parts[1]
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// UTSMode represents the UTS namespace of the container.
|
// UTSMode represents the UTS namespace of the container.
|
||||||
|
|
@ -220,7 +209,7 @@ type UTSMode string
|
||||||
|
|
||||||
// IsPrivate indicates whether the container uses its private UTS namespace.
|
// IsPrivate indicates whether the container uses its private UTS namespace.
|
||||||
func (n UTSMode) IsPrivate() bool {
|
func (n UTSMode) IsPrivate() bool {
|
||||||
return !(n.IsHost())
|
return !n.IsHost()
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsHost indicates whether the container uses the host's UTS namespace.
|
// IsHost indicates whether the container uses the host's UTS namespace.
|
||||||
|
|
@ -230,13 +219,7 @@ func (n UTSMode) IsHost() bool {
|
||||||
|
|
||||||
// Valid indicates whether the UTS namespace is valid.
|
// Valid indicates whether the UTS namespace is valid.
|
||||||
func (n UTSMode) Valid() bool {
|
func (n UTSMode) Valid() bool {
|
||||||
parts := strings.Split(string(n), ":")
|
return n == "" || n.IsHost()
|
||||||
switch mode := parts[0]; mode {
|
|
||||||
case "", "host":
|
|
||||||
default:
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PidMode represents the pid namespace of the container.
|
// PidMode represents the pid namespace of the container.
|
||||||
|
|
@ -254,32 +237,19 @@ func (n PidMode) IsHost() bool {
|
||||||
|
|
||||||
// IsContainer indicates whether the container uses a container's pid namespace.
|
// IsContainer indicates whether the container uses a container's pid namespace.
|
||||||
func (n PidMode) IsContainer() bool {
|
func (n PidMode) IsContainer() bool {
|
||||||
parts := strings.SplitN(string(n), ":", 2)
|
_, ok := containerID(string(n))
|
||||||
return len(parts) > 1 && parts[0] == "container"
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
// Valid indicates whether the pid namespace is valid.
|
// Valid indicates whether the pid namespace is valid.
|
||||||
func (n PidMode) Valid() bool {
|
func (n PidMode) Valid() bool {
|
||||||
parts := strings.Split(string(n), ":")
|
return n == "" || n.IsHost() || validContainer(string(n))
|
||||||
switch mode := parts[0]; mode {
|
|
||||||
case "", "host":
|
|
||||||
case "container":
|
|
||||||
if len(parts) != 2 || parts[1] == "" {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Container returns the name of the container whose pid namespace is going to be used.
|
// Container returns the name of the container whose pid namespace is going to be used.
|
||||||
func (n PidMode) Container() string {
|
func (n PidMode) Container() (idOrName string) {
|
||||||
parts := strings.SplitN(string(n), ":", 2)
|
idOrName, _ = containerID(string(n))
|
||||||
if len(parts) > 1 {
|
return idOrName
|
||||||
return parts[1]
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeviceRequest represents a request for devices from a device driver.
|
// DeviceRequest represents a request for devices from a device driver.
|
||||||
|
|
@ -418,6 +388,7 @@ type HostConfig struct {
|
||||||
VolumeDriver string // Name of the volume driver used to mount volumes
|
VolumeDriver string // Name of the volume driver used to mount volumes
|
||||||
VolumesFrom []string // List of volumes to take from other container
|
VolumesFrom []string // List of volumes to take from other container
|
||||||
ConsoleSize [2]uint // Initial console size (height,width)
|
ConsoleSize [2]uint // Initial console size (height,width)
|
||||||
|
Annotations map[string]string `json:",omitempty"` // Arbitrary non-identifying metadata attached to container and provided to the runtime
|
||||||
|
|
||||||
// Applicable to UNIX platforms
|
// Applicable to UNIX platforms
|
||||||
CapAdd strslice.StrSlice // List of kernel capabilities to add to the container
|
CapAdd strslice.StrSlice // List of kernel capabilities to add to the container
|
||||||
|
|
@ -463,3 +434,23 @@ type HostConfig struct {
|
||||||
// Run a custom init inside the container, if null, use the daemon's configured settings
|
// Run a custom init inside the container, if null, use the daemon's configured settings
|
||||||
Init *bool `json:",omitempty"`
|
Init *bool `json:",omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// containerID splits "container:<ID|name>" values. It returns the container
|
||||||
|
// ID or name, and whether an ID/name was found. It returns an empty string and
|
||||||
|
// a "false" if the value does not have a "container:" prefix. Further validation
|
||||||
|
// of the returned, including checking if the value is empty, should be handled
|
||||||
|
// by the caller.
|
||||||
|
func containerID(val string) (idOrName string, ok bool) {
|
||||||
|
k, v, hasSep := strings.Cut(val, ":")
|
||||||
|
if !hasSep || k != "container" {
|
||||||
|
return "", false
|
||||||
|
}
|
||||||
|
return v, true
|
||||||
|
}
|
||||||
|
|
||||||
|
// validContainer checks if the given value is a "container:" mode with
|
||||||
|
// a non-empty name/ID.
|
||||||
|
func validContainer(val string) bool {
|
||||||
|
id, ok := containerID(val)
|
||||||
|
return ok && id != ""
|
||||||
|
}
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
package types // import "github.com/docker/docker/api/types"
|
|
||||||
|
|
||||||
import "github.com/docker/docker/api/types/volume"
|
|
||||||
|
|
||||||
// Volume volume
|
|
||||||
//
|
|
||||||
// Deprecated: use github.com/docker/docker/api/types/volume.Volume
|
|
||||||
type Volume = volume.Volume
|
|
||||||
|
|
||||||
// VolumeUsageData Usage details about the volume. This information is used by the
|
|
||||||
// `GET /system/df` endpoint, and omitted in other endpoints.
|
|
||||||
//
|
|
||||||
// Deprecated: use github.com/docker/docker/api/types/volume.UsageData
|
|
||||||
type VolumeUsageData = volume.UsageData
|
|
||||||
37
common/vendor/github.com/docker/docker/api/types/filters/errors.go
generated
vendored
Normal file
37
common/vendor/github.com/docker/docker/api/types/filters/errors.go
generated
vendored
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
package filters
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
// invalidFilter indicates that the provided filter or its value is invalid
|
||||||
|
type invalidFilter struct {
|
||||||
|
Filter string
|
||||||
|
Value []string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e invalidFilter) Error() string {
|
||||||
|
msg := "invalid filter"
|
||||||
|
if e.Filter != "" {
|
||||||
|
msg += " '" + e.Filter
|
||||||
|
if e.Value != nil {
|
||||||
|
msg = fmt.Sprintf("%s=%s", msg, e.Value)
|
||||||
|
}
|
||||||
|
msg += "'"
|
||||||
|
}
|
||||||
|
return msg
|
||||||
|
}
|
||||||
|
|
||||||
|
// InvalidParameter marks this error as ErrInvalidParameter
|
||||||
|
func (e invalidFilter) InvalidParameter() {}
|
||||||
|
|
||||||
|
// unreachableCode is an error indicating that the code path was not expected to be reached.
|
||||||
|
type unreachableCode struct {
|
||||||
|
Filter string
|
||||||
|
Value []string
|
||||||
|
}
|
||||||
|
|
||||||
|
// System marks this error as ErrSystem
|
||||||
|
func (e unreachableCode) System() {}
|
||||||
|
|
||||||
|
func (e unreachableCode) Error() string {
|
||||||
|
return fmt.Sprintf("unreachable code reached for filter: %q with values: %s", e.Filter, e.Value)
|
||||||
|
}
|
||||||
|
|
@ -10,7 +10,6 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/docker/docker/api/types/versions"
|
"github.com/docker/docker/api/types/versions"
|
||||||
"github.com/pkg/errors"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Args stores a mapping of keys to a set of multiple values.
|
// Args stores a mapping of keys to a set of multiple values.
|
||||||
|
|
@ -99,7 +98,7 @@ func FromJSON(p string) (Args, error) {
|
||||||
// Fallback to parsing arguments in the legacy slice format
|
// Fallback to parsing arguments in the legacy slice format
|
||||||
deprecated := map[string][]string{}
|
deprecated := map[string][]string{}
|
||||||
if legacyErr := json.Unmarshal(raw, &deprecated); legacyErr != nil {
|
if legacyErr := json.Unmarshal(raw, &deprecated); legacyErr != nil {
|
||||||
return args, invalidFilter{errors.Wrap(err, "invalid filter")}
|
return args, invalidFilter{}
|
||||||
}
|
}
|
||||||
|
|
||||||
args.fields = deprecatedArgs(deprecated)
|
args.fields = deprecatedArgs(deprecated)
|
||||||
|
|
@ -163,13 +162,13 @@ func (args Args) MatchKVList(key string, sources map[string]string) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
for value := range fieldValues {
|
for value := range fieldValues {
|
||||||
testKV := strings.SplitN(value, "=", 2)
|
testK, testV, hasValue := strings.Cut(value, "=")
|
||||||
|
|
||||||
v, ok := sources[testKV[0]]
|
v, ok := sources[testK]
|
||||||
if !ok {
|
if !ok {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if len(testKV) == 2 && testKV[1] != v {
|
if hasValue && testV != v {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -196,6 +195,38 @@ func (args Args) Match(field, source string) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetBoolOrDefault returns a boolean value of the key if the key is present
|
||||||
|
// and is intepretable as a boolean value. Otherwise the default value is returned.
|
||||||
|
// Error is not nil only if the filter values are not valid boolean or are conflicting.
|
||||||
|
func (args Args) GetBoolOrDefault(key string, defaultValue bool) (bool, error) {
|
||||||
|
fieldValues, ok := args.fields[key]
|
||||||
|
|
||||||
|
if !ok {
|
||||||
|
return defaultValue, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(fieldValues) == 0 {
|
||||||
|
return defaultValue, invalidFilter{key, nil}
|
||||||
|
}
|
||||||
|
|
||||||
|
isFalse := fieldValues["0"] || fieldValues["false"]
|
||||||
|
isTrue := fieldValues["1"] || fieldValues["true"]
|
||||||
|
|
||||||
|
conflicting := isFalse && isTrue
|
||||||
|
invalid := !isFalse && !isTrue
|
||||||
|
|
||||||
|
if conflicting || invalid {
|
||||||
|
return defaultValue, invalidFilter{key, args.Get(key)}
|
||||||
|
} else if isFalse {
|
||||||
|
return false, nil
|
||||||
|
} else if isTrue {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// This code shouldn't be reached.
|
||||||
|
return defaultValue, unreachableCode{Filter: key, Value: args.Get(key)}
|
||||||
|
}
|
||||||
|
|
||||||
// ExactMatch returns true if the source matches exactly one of the values.
|
// ExactMatch returns true if the source matches exactly one of the values.
|
||||||
func (args Args) ExactMatch(key, source string) bool {
|
func (args Args) ExactMatch(key, source string) bool {
|
||||||
fieldValues, ok := args.fields[key]
|
fieldValues, ok := args.fields[key]
|
||||||
|
|
@ -246,20 +277,12 @@ func (args Args) Contains(field string) bool {
|
||||||
return ok
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
type invalidFilter struct{ error }
|
|
||||||
|
|
||||||
func (e invalidFilter) Error() string {
|
|
||||||
return e.error.Error()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (invalidFilter) InvalidParameter() {}
|
|
||||||
|
|
||||||
// Validate compared the set of accepted keys against the keys in the mapping.
|
// Validate compared the set of accepted keys against the keys in the mapping.
|
||||||
// An error is returned if any mapping keys are not in the accepted set.
|
// An error is returned if any mapping keys are not in the accepted set.
|
||||||
func (args Args) Validate(accepted map[string]bool) error {
|
func (args Args) Validate(accepted map[string]bool) error {
|
||||||
for name := range args.fields {
|
for name := range args.fields {
|
||||||
if !accepted[name] {
|
if !accepted[name] {
|
||||||
return invalidFilter{errors.New("invalid filter '" + name + "'")}
|
return invalidFilter{name, nil}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
package image
|
||||||
|
|
||||||
|
import specs "github.com/opencontainers/image-spec/specs-go/v1"
|
||||||
|
|
||||||
|
// GetImageOpts holds parameters to inspect an image.
|
||||||
|
type GetImageOpts struct {
|
||||||
|
Platform *specs.Platform
|
||||||
|
Details bool
|
||||||
|
}
|
||||||
|
|
@ -85,13 +85,10 @@ type ImageSummary struct {
|
||||||
// Total size of the image including all layers it is composed of.
|
// Total size of the image including all layers it is composed of.
|
||||||
//
|
//
|
||||||
// In versions of Docker before v1.10, this field was calculated from
|
// In versions of Docker before v1.10, this field was calculated from
|
||||||
// the image itself and all of its parent images. Docker v1.10 and up
|
// the image itself and all of its parent images. Images are now stored
|
||||||
// store images self-contained, and no longer use a parent-chain, making
|
// self-contained, and no longer use a parent-chain, making this field
|
||||||
// this field an equivalent of the Size field.
|
// an equivalent of the Size field.
|
||||||
//
|
//
|
||||||
// This field is kept for backward compatibility, but may be removed in
|
// Deprecated: this field is kept for backward compatibility, and will be removed in API v1.44.
|
||||||
// a future version of the API.
|
VirtualSize int64 `json:"VirtualSize,omitempty"`
|
||||||
//
|
|
||||||
// Required: true
|
|
||||||
VirtualSize int64 `json:"VirtualSize"`
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
99
common/vendor/github.com/docker/docker/api/types/registry/authconfig.go
generated
vendored
Normal file
99
common/vendor/github.com/docker/docker/api/types/registry/authconfig.go
generated
vendored
Normal file
|
|
@ -0,0 +1,99 @@
|
||||||
|
package registry // import "github.com/docker/docker/api/types/registry"
|
||||||
|
import (
|
||||||
|
"encoding/base64"
|
||||||
|
"encoding/json"
|
||||||
|
"io"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
// AuthHeader is the name of the header used to send encoded registry
|
||||||
|
// authorization credentials for registry operations (push/pull).
|
||||||
|
const AuthHeader = "X-Registry-Auth"
|
||||||
|
|
||||||
|
// AuthConfig contains authorization information for connecting to a Registry.
|
||||||
|
type AuthConfig struct {
|
||||||
|
Username string `json:"username,omitempty"`
|
||||||
|
Password string `json:"password,omitempty"`
|
||||||
|
Auth string `json:"auth,omitempty"`
|
||||||
|
|
||||||
|
// Email is an optional value associated with the username.
|
||||||
|
// This field is deprecated and will be removed in a later
|
||||||
|
// version of docker.
|
||||||
|
Email string `json:"email,omitempty"`
|
||||||
|
|
||||||
|
ServerAddress string `json:"serveraddress,omitempty"`
|
||||||
|
|
||||||
|
// IdentityToken is used to authenticate the user and get
|
||||||
|
// an access token for the registry.
|
||||||
|
IdentityToken string `json:"identitytoken,omitempty"`
|
||||||
|
|
||||||
|
// RegistryToken is a bearer token to be sent to a registry
|
||||||
|
RegistryToken string `json:"registrytoken,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// EncodeAuthConfig serializes the auth configuration as a base64url encoded
|
||||||
|
// RFC4648, section 5) JSON string for sending through the X-Registry-Auth header.
|
||||||
|
//
|
||||||
|
// For details on base64url encoding, see:
|
||||||
|
// - RFC4648, section 5: https://tools.ietf.org/html/rfc4648#section-5
|
||||||
|
func EncodeAuthConfig(authConfig AuthConfig) (string, error) {
|
||||||
|
buf, err := json.Marshal(authConfig)
|
||||||
|
if err != nil {
|
||||||
|
return "", errInvalidParameter{err}
|
||||||
|
}
|
||||||
|
return base64.URLEncoding.EncodeToString(buf), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DecodeAuthConfig decodes base64url encoded (RFC4648, section 5) JSON
|
||||||
|
// authentication information as sent through the X-Registry-Auth header.
|
||||||
|
//
|
||||||
|
// This function always returns an AuthConfig, even if an error occurs. It is up
|
||||||
|
// to the caller to decide if authentication is required, and if the error can
|
||||||
|
// be ignored.
|
||||||
|
//
|
||||||
|
// For details on base64url encoding, see:
|
||||||
|
// - RFC4648, section 5: https://tools.ietf.org/html/rfc4648#section-5
|
||||||
|
func DecodeAuthConfig(authEncoded string) (*AuthConfig, error) {
|
||||||
|
if authEncoded == "" {
|
||||||
|
return &AuthConfig{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
authJSON := base64.NewDecoder(base64.URLEncoding, strings.NewReader(authEncoded))
|
||||||
|
return decodeAuthConfigFromReader(authJSON)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DecodeAuthConfigBody decodes authentication information as sent as JSON in the
|
||||||
|
// body of a request. This function is to provide backward compatibility with old
|
||||||
|
// clients and API versions. Current clients and API versions expect authentication
|
||||||
|
// to be provided through the X-Registry-Auth header.
|
||||||
|
//
|
||||||
|
// Like DecodeAuthConfig, this function always returns an AuthConfig, even if an
|
||||||
|
// error occurs. It is up to the caller to decide if authentication is required,
|
||||||
|
// and if the error can be ignored.
|
||||||
|
func DecodeAuthConfigBody(rdr io.ReadCloser) (*AuthConfig, error) {
|
||||||
|
return decodeAuthConfigFromReader(rdr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func decodeAuthConfigFromReader(rdr io.Reader) (*AuthConfig, error) {
|
||||||
|
authConfig := &AuthConfig{}
|
||||||
|
if err := json.NewDecoder(rdr).Decode(authConfig); err != nil {
|
||||||
|
// always return an (empty) AuthConfig to increase compatibility with
|
||||||
|
// the existing API.
|
||||||
|
return &AuthConfig{}, invalid(err)
|
||||||
|
}
|
||||||
|
return authConfig, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func invalid(err error) error {
|
||||||
|
return errInvalidParameter{errors.Wrap(err, "invalid X-Registry-Auth header")}
|
||||||
|
}
|
||||||
|
|
||||||
|
type errInvalidParameter struct{ error }
|
||||||
|
|
||||||
|
func (errInvalidParameter) InvalidParameter() {}
|
||||||
|
|
||||||
|
func (e errInvalidParameter) Cause() error { return e.error }
|
||||||
|
|
||||||
|
func (e errInvalidParameter) Unwrap() error { return e.error }
|
||||||
|
|
@ -95,37 +95,37 @@ func GetTimestamp(value string, reference time.Time) (string, error) {
|
||||||
return fmt.Sprintf("%d.%09d", t.Unix(), int64(t.Nanosecond())), nil
|
return fmt.Sprintf("%d.%09d", t.Unix(), int64(t.Nanosecond())), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParseTimestamps returns seconds and nanoseconds from a timestamp that has the
|
// ParseTimestamps returns seconds and nanoseconds from a timestamp that has
|
||||||
// format "%d.%09d", time.Unix(), int64(time.Nanosecond()))
|
// the format ("%d.%09d", time.Unix(), int64(time.Nanosecond())).
|
||||||
// if the incoming nanosecond portion is longer or shorter than 9 digits it is
|
// If the incoming nanosecond portion is longer than 9 digits it is truncated.
|
||||||
// converted to nanoseconds. The expectation is that the seconds and
|
// The expectation is that the seconds and nanoseconds will be used to create a
|
||||||
// seconds will be used to create a time variable. For example:
|
// time variable. For example:
|
||||||
//
|
//
|
||||||
// seconds, nanoseconds, err := ParseTimestamp("1136073600.000000001",0)
|
// seconds, nanoseconds, _ := ParseTimestamp("1136073600.000000001",0)
|
||||||
// if err == nil since := time.Unix(seconds, nanoseconds)
|
// since := time.Unix(seconds, nanoseconds)
|
||||||
//
|
//
|
||||||
// returns seconds as def(aultSeconds) if value == ""
|
// returns seconds as defaultSeconds if value == ""
|
||||||
func ParseTimestamps(value string, def int64) (int64, int64, error) {
|
func ParseTimestamps(value string, defaultSeconds int64) (seconds int64, nanoseconds int64, err error) {
|
||||||
if value == "" {
|
if value == "" {
|
||||||
return def, 0, nil
|
return defaultSeconds, 0, nil
|
||||||
}
|
}
|
||||||
return parseTimestamp(value)
|
return parseTimestamp(value)
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseTimestamp(value string) (int64, int64, error) {
|
func parseTimestamp(value string) (sec int64, nsec int64, err error) {
|
||||||
sa := strings.SplitN(value, ".", 2)
|
s, n, ok := strings.Cut(value, ".")
|
||||||
s, err := strconv.ParseInt(sa[0], 10, 64)
|
sec, err = strconv.ParseInt(s, 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return s, 0, err
|
return sec, 0, err
|
||||||
}
|
}
|
||||||
if len(sa) != 2 {
|
if !ok {
|
||||||
return s, 0, nil
|
return sec, 0, nil
|
||||||
}
|
}
|
||||||
n, err := strconv.ParseInt(sa[1], 10, 64)
|
nsec, err = strconv.ParseInt(n, 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return s, n, err
|
return sec, nsec, err
|
||||||
}
|
}
|
||||||
// should already be in nanoseconds but just in case convert n to nanoseconds
|
// should already be in nanoseconds but just in case convert n to nanoseconds
|
||||||
n = int64(float64(n) * math.Pow(float64(10), float64(9-len(sa[1]))))
|
nsec = int64(float64(nsec) * math.Pow(float64(10), float64(9-len(n))))
|
||||||
return s, n, nil
|
return sec, nsec, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -123,9 +123,8 @@ type ImageInspect struct {
|
||||||
// store images self-contained, and no longer use a parent-chain, making
|
// store images self-contained, and no longer use a parent-chain, making
|
||||||
// this field an equivalent of the Size field.
|
// this field an equivalent of the Size field.
|
||||||
//
|
//
|
||||||
// This field is kept for backward compatibility, but may be removed in
|
// Deprecated: Unused in API 1.43 and up, but kept for backward compatibility with older API versions.
|
||||||
// a future version of the API.
|
VirtualSize int64 `json:"VirtualSize,omitempty"`
|
||||||
VirtualSize int64 // TODO(thaJeztah): deprecate this field
|
|
||||||
|
|
||||||
// GraphDriver holds information about the storage driver used to store the
|
// GraphDriver holds information about the storage driver used to store the
|
||||||
// container's and image's filesystem.
|
// container's and image's filesystem.
|
||||||
|
|
@ -297,8 +296,6 @@ type Info struct {
|
||||||
Labels []string
|
Labels []string
|
||||||
ExperimentalBuild bool
|
ExperimentalBuild bool
|
||||||
ServerVersion string
|
ServerVersion string
|
||||||
ClusterStore string `json:",omitempty"` // Deprecated: host-discovery and overlay networks with external k/v stores are deprecated
|
|
||||||
ClusterAdvertise string `json:",omitempty"` // Deprecated: host-discovery and overlay networks with external k/v stores are deprecated
|
|
||||||
Runtimes map[string]Runtime
|
Runtimes map[string]Runtime
|
||||||
DefaultRuntime string
|
DefaultRuntime string
|
||||||
Swarm swarm.Info
|
Swarm swarm.Info
|
||||||
|
|
@ -350,20 +347,19 @@ func DecodeSecurityOptions(opts []string) ([]SecurityOpt, error) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
secopt := SecurityOpt{}
|
secopt := SecurityOpt{}
|
||||||
split := strings.Split(opt, ",")
|
for _, s := range strings.Split(opt, ",") {
|
||||||
for _, s := range split {
|
k, v, ok := strings.Cut(s, "=")
|
||||||
kv := strings.SplitN(s, "=", 2)
|
if !ok {
|
||||||
if len(kv) != 2 {
|
|
||||||
return nil, fmt.Errorf("invalid security option %q", s)
|
return nil, fmt.Errorf("invalid security option %q", s)
|
||||||
}
|
}
|
||||||
if kv[0] == "" || kv[1] == "" {
|
if k == "" || v == "" {
|
||||||
return nil, errors.New("invalid empty security option")
|
return nil, errors.New("invalid empty security option")
|
||||||
}
|
}
|
||||||
if kv[0] == "name" {
|
if k == "name" {
|
||||||
secopt.Name = kv[1]
|
secopt.Name = v
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
secopt.Options = append(secopt.Options, KeyValue{Key: kv[0], Value: kv[1]})
|
secopt.Options = append(secopt.Options, KeyValue{Key: k, Value: v})
|
||||||
}
|
}
|
||||||
so = append(so, secopt)
|
so = append(so, secopt)
|
||||||
}
|
}
|
||||||
|
|
@ -656,12 +652,18 @@ type Checkpoint struct {
|
||||||
|
|
||||||
// Runtime describes an OCI runtime
|
// Runtime describes an OCI runtime
|
||||||
type Runtime struct {
|
type Runtime struct {
|
||||||
Path string `json:"path"`
|
// "Legacy" runtime configuration for runc-compatible runtimes.
|
||||||
|
|
||||||
|
Path string `json:"path,omitempty"`
|
||||||
Args []string `json:"runtimeArgs,omitempty"`
|
Args []string `json:"runtimeArgs,omitempty"`
|
||||||
|
|
||||||
|
// Shimv2 runtime configuration. Mutually exclusive with the legacy config above.
|
||||||
|
|
||||||
|
Type string `json:"runtimeType,omitempty"`
|
||||||
|
Options map[string]interface{} `json:"options,omitempty"`
|
||||||
|
|
||||||
// This is exposed here only for internal use
|
// This is exposed here only for internal use
|
||||||
// It is not currently supported to specify custom shim configs
|
ShimConfig *ShimConfig `json:"-"`
|
||||||
Shim *ShimConfig `json:"-"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ShimConfig is used by runtime to configure containerd shims
|
// ShimConfig is used by runtime to configure containerd shims
|
||||||
|
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
package volume // import "github.com/docker/docker/api/types/volume"
|
|
||||||
|
|
||||||
// VolumeCreateBody Volume configuration
|
|
||||||
//
|
|
||||||
// Deprecated: use CreateOptions
|
|
||||||
type VolumeCreateBody = CreateOptions
|
|
||||||
|
|
||||||
// VolumeListOKBody Volume list response
|
|
||||||
//
|
|
||||||
// Deprecated: use ListResponse
|
|
||||||
type VolumeListOKBody = ListResponse
|
|
||||||
|
|
@ -3,8 +3,8 @@ package client // import "github.com/docker/docker/client"
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
"github.com/docker/docker/api/types/filters"
|
"github.com/docker/docker/api/types/filters"
|
||||||
|
|
@ -23,12 +23,12 @@ func (cli *Client) BuildCachePrune(ctx context.Context, opts types.BuildCachePru
|
||||||
if opts.All {
|
if opts.All {
|
||||||
query.Set("all", "1")
|
query.Set("all", "1")
|
||||||
}
|
}
|
||||||
query.Set("keep-storage", fmt.Sprintf("%d", opts.KeepStorage))
|
query.Set("keep-storage", strconv.Itoa(int(opts.KeepStorage)))
|
||||||
filters, err := filters.ToJSON(opts.Filters)
|
f, err := filters.ToJSON(opts.Filters)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "prune could not marshal filters option")
|
return nil, errors.Wrap(err, "prune could not marshal filters option")
|
||||||
}
|
}
|
||||||
query.Set("filters", filters)
|
query.Set("filters", f)
|
||||||
|
|
||||||
serverResp, err := cli.post(ctx, "/build/prune", query, nil, nil)
|
serverResp, err := cli.post(ctx, "/build/prune", query, nil, nil)
|
||||||
defer ensureReaderClosed(serverResp)
|
defer ensureReaderClosed(serverResp)
|
||||||
|
|
@ -38,7 +38,7 @@ func (cli *Client) BuildCachePrune(ctx context.Context, opts types.BuildCachePru
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := json.NewDecoder(serverResp.body).Decode(&report); err != nil {
|
if err := json.NewDecoder(serverResp.body).Decode(&report); err != nil {
|
||||||
return nil, fmt.Errorf("Error retrieving disk usage: %v", err)
|
return nil, errors.Wrap(err, "error retrieving disk usage")
|
||||||
}
|
}
|
||||||
|
|
||||||
return &report, nil
|
return &report, nil
|
||||||
|
|
|
||||||
|
|
@ -126,7 +126,12 @@ func CheckRedirect(req *http.Request, via []*http.Request) error {
|
||||||
// client.WithAPIVersionNegotiation(),
|
// client.WithAPIVersionNegotiation(),
|
||||||
// )
|
// )
|
||||||
func NewClientWithOpts(ops ...Opt) (*Client, error) {
|
func NewClientWithOpts(ops ...Opt) (*Client, error) {
|
||||||
client, err := defaultHTTPClient(DefaultDockerHost)
|
hostURL, err := ParseHostURL(DefaultDockerHost)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
client, err := defaultHTTPClient(hostURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -134,8 +139,8 @@ func NewClientWithOpts(ops ...Opt) (*Client, error) {
|
||||||
host: DefaultDockerHost,
|
host: DefaultDockerHost,
|
||||||
version: api.DefaultVersion,
|
version: api.DefaultVersion,
|
||||||
client: client,
|
client: client,
|
||||||
proto: defaultProto,
|
proto: hostURL.Scheme,
|
||||||
addr: defaultAddr,
|
addr: hostURL.Host,
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, op := range ops {
|
for _, op := range ops {
|
||||||
|
|
@ -161,13 +166,12 @@ func NewClientWithOpts(ops ...Opt) (*Client, error) {
|
||||||
return c, nil
|
return c, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func defaultHTTPClient(host string) (*http.Client, error) {
|
func defaultHTTPClient(hostURL *url.URL) (*http.Client, error) {
|
||||||
hostURL, err := ParseHostURL(host)
|
transport := &http.Transport{}
|
||||||
|
err := sockets.ConfigureTransport(transport, hostURL.Scheme, hostURL.Host)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
transport := &http.Transport{}
|
|
||||||
_ = sockets.ConfigureTransport(transport, hostURL.Scheme, hostURL.Host)
|
|
||||||
return &http.Client{
|
return &http.Client{
|
||||||
Transport: transport,
|
Transport: transport,
|
||||||
CheckRedirect: CheckRedirect,
|
CheckRedirect: CheckRedirect,
|
||||||
|
|
@ -283,13 +287,12 @@ func (cli *Client) HTTPClient() *http.Client {
|
||||||
// ParseHostURL parses a url string, validates the string is a host url, and
|
// ParseHostURL parses a url string, validates the string is a host url, and
|
||||||
// returns the parsed URL
|
// returns the parsed URL
|
||||||
func ParseHostURL(host string) (*url.URL, error) {
|
func ParseHostURL(host string) (*url.URL, error) {
|
||||||
protoAddrParts := strings.SplitN(host, "://", 2)
|
proto, addr, ok := strings.Cut(host, "://")
|
||||||
if len(protoAddrParts) == 1 {
|
if !ok || addr == "" {
|
||||||
return nil, errors.Errorf("unable to parse docker host `%s`", host)
|
return nil, errors.Errorf("unable to parse docker host `%s`", host)
|
||||||
}
|
}
|
||||||
|
|
||||||
var basePath string
|
var basePath string
|
||||||
proto, addr := protoAddrParts[0], protoAddrParts[1]
|
|
||||||
if proto == "tcp" {
|
if proto == "tcp" {
|
||||||
parsed, err := url.Parse("tcp://" + addr)
|
parsed, err := url.Parse("tcp://" + addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,8 @@
|
||||||
//go:build linux || freebsd || openbsd || netbsd || darwin || solaris || illumos || dragonfly
|
//go:build !windows
|
||||||
// +build linux freebsd openbsd netbsd darwin solaris illumos dragonfly
|
// +build !windows
|
||||||
|
|
||||||
package client // import "github.com/docker/docker/client"
|
package client // import "github.com/docker/docker/client"
|
||||||
|
|
||||||
// DefaultDockerHost defines OS-specific default host if the DOCKER_HOST
|
// DefaultDockerHost defines OS-specific default host if the DOCKER_HOST
|
||||||
// (EnvOverrideHost) environment variable is unset or empty.
|
// (EnvOverrideHost) environment variable is unset or empty.
|
||||||
const DefaultDockerHost = "unix:///var/run/docker.sock"
|
const DefaultDockerHost = "unix:///var/run/docker.sock"
|
||||||
|
|
||||||
const defaultProto = "unix"
|
|
||||||
const defaultAddr = "/var/run/docker.sock"
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,3 @@ package client // import "github.com/docker/docker/client"
|
||||||
// DefaultDockerHost defines OS-specific default host if the DOCKER_HOST
|
// DefaultDockerHost defines OS-specific default host if the DOCKER_HOST
|
||||||
// (EnvOverrideHost) environment variable is unset or empty.
|
// (EnvOverrideHost) environment variable is unset or empty.
|
||||||
const DefaultDockerHost = "npipe:////./pipe/docker_engine"
|
const DefaultDockerHost = "npipe:////./pipe/docker_engine"
|
||||||
|
|
||||||
const defaultProto = "npipe"
|
|
||||||
const defaultAddr = "//./pipe/docker_engine"
|
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// ContainerDiff shows differences in a container filesystem since it was started.
|
// ContainerDiff shows differences in a container filesystem since it was started.
|
||||||
func (cli *Client) ContainerDiff(ctx context.Context, containerID string) ([]container.ContainerChangeResponseItem, error) {
|
func (cli *Client) ContainerDiff(ctx context.Context, containerID string) ([]container.FilesystemChange, error) {
|
||||||
var changes []container.ContainerChangeResponseItem
|
var changes []container.FilesystemChange
|
||||||
|
|
||||||
serverResp, err := cli.get(ctx, "/containers/"+containerID+"/changes", url.Values{}, nil)
|
serverResp, err := cli.get(ctx, "/containers/"+containerID+"/changes", url.Values{}, nil)
|
||||||
defer ensureReaderClosed(serverResp)
|
defer ensureReaderClosed(serverResp)
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,13 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
registrytypes "github.com/docker/docker/api/types/registry"
|
"github.com/docker/docker/api/types/registry"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DistributionInspect returns the image digest with the full manifest.
|
// DistributionInspect returns the image digest with the full manifest.
|
||||||
func (cli *Client) DistributionInspect(ctx context.Context, image, encodedRegistryAuth string) (registrytypes.DistributionInspect, error) {
|
func (cli *Client) DistributionInspect(ctx context.Context, image, encodedRegistryAuth string) (registry.DistributionInspect, error) {
|
||||||
// Contact the registry to retrieve digest and platform information
|
// Contact the registry to retrieve digest and platform information
|
||||||
var distributionInspect registrytypes.DistributionInspect
|
var distributionInspect registry.DistributionInspect
|
||||||
if image == "" {
|
if image == "" {
|
||||||
return distributionInspect, objectNotFoundError{object: "distribution", id: image}
|
return distributionInspect, objectNotFoundError{object: "distribution", id: image}
|
||||||
}
|
}
|
||||||
|
|
@ -23,7 +23,7 @@ func (cli *Client) DistributionInspect(ctx context.Context, image, encodedRegist
|
||||||
|
|
||||||
if encodedRegistryAuth != "" {
|
if encodedRegistryAuth != "" {
|
||||||
headers = map[string][]string{
|
headers = map[string][]string{
|
||||||
"X-Registry-Auth": {encodedRegistryAuth},
|
registry.AuthHeader: {encodedRegistryAuth},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,31 +58,6 @@ func (e objectNotFoundError) Error() string {
|
||||||
return fmt.Sprintf("Error: No such %s: %s", e.object, e.id)
|
return fmt.Sprintf("Error: No such %s: %s", e.object, e.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsErrUnauthorized returns true if the error is caused
|
|
||||||
// when a remote registry authentication fails
|
|
||||||
//
|
|
||||||
// Deprecated: use errdefs.IsUnauthorized
|
|
||||||
func IsErrUnauthorized(err error) bool {
|
|
||||||
return errdefs.IsUnauthorized(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
type pluginPermissionDenied struct {
|
|
||||||
name string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e pluginPermissionDenied) Error() string {
|
|
||||||
return "Permission denied while installing plugin " + e.name
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsErrNotImplemented returns true if the error is a NotImplemented error.
|
|
||||||
// This is returned by the API when a requested feature has not been
|
|
||||||
// implemented.
|
|
||||||
//
|
|
||||||
// Deprecated: use errdefs.IsNotImplemented
|
|
||||||
func IsErrNotImplemented(err error) bool {
|
|
||||||
return errdefs.IsNotImplemented(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewVersionError returns an error if the APIVersion required
|
// NewVersionError returns an error if the APIVersion required
|
||||||
// if less than the current supported version
|
// if less than the current supported version
|
||||||
func (cli *Client) NewVersionError(APIrequired, feature string) error {
|
func (cli *Client) NewVersionError(APIrequired, feature string) error {
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import (
|
||||||
|
|
||||||
"github.com/docker/distribution/reference"
|
"github.com/docker/distribution/reference"
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
|
"github.com/docker/docker/api/types/registry"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ImageCreate creates a new image based on the parent options.
|
// ImageCreate creates a new image based on the parent options.
|
||||||
|
|
@ -32,6 +33,6 @@ func (cli *Client) ImageCreate(ctx context.Context, parentReference string, opti
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cli *Client) tryImageCreate(ctx context.Context, query url.Values, registryAuth string) (serverResponse, error) {
|
func (cli *Client) tryImageCreate(ctx context.Context, query url.Values, registryAuth string) (serverResponse, error) {
|
||||||
headers := map[string][]string{"X-Registry-Auth": {registryAuth}}
|
headers := map[string][]string{registry.AuthHeader: {registryAuth}}
|
||||||
return cli.post(ctx, "/images/create", query, nil, headers)
|
return cli.post(ctx, "/images/create", query, nil, headers)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import (
|
||||||
|
|
||||||
"github.com/docker/distribution/reference"
|
"github.com/docker/distribution/reference"
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
|
"github.com/docker/docker/api/types/registry"
|
||||||
"github.com/docker/docker/errdefs"
|
"github.com/docker/docker/errdefs"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -49,6 +50,6 @@ func (cli *Client) ImagePush(ctx context.Context, image string, options types.Im
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cli *Client) tryImagePush(ctx context.Context, imageID string, query url.Values, registryAuth string) (serverResponse, error) {
|
func (cli *Client) tryImagePush(ctx context.Context, imageID string, query url.Values, registryAuth string) (serverResponse, error) {
|
||||||
headers := map[string][]string{"X-Registry-Auth": {registryAuth}}
|
headers := map[string][]string{registry.AuthHeader: {registryAuth}}
|
||||||
return cli.post(ctx, "/images/"+imageID+"/push", query, nil, headers)
|
return cli.post(ctx, "/images/"+imageID+"/push", query, nil, headers)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,6 @@ func (cli *Client) ImageSearch(ctx context.Context, term string, options types.I
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cli *Client) tryImageSearch(ctx context.Context, query url.Values, registryAuth string) (serverResponse, error) {
|
func (cli *Client) tryImageSearch(ctx context.Context, query url.Values, registryAuth string) (serverResponse, error) {
|
||||||
headers := map[string][]string{"X-Registry-Auth": {registryAuth}}
|
headers := map[string][]string{registry.AuthHeader: {registryAuth}}
|
||||||
return cli.get(ctx, "/images/search", query, headers)
|
return cli.get(ctx, "/images/search", query, headers)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ type ContainerAPIClient interface {
|
||||||
ContainerAttach(ctx context.Context, container string, options types.ContainerAttachOptions) (types.HijackedResponse, error)
|
ContainerAttach(ctx context.Context, container string, options types.ContainerAttachOptions) (types.HijackedResponse, error)
|
||||||
ContainerCommit(ctx context.Context, container string, options types.ContainerCommitOptions) (types.IDResponse, error)
|
ContainerCommit(ctx context.Context, container string, options types.ContainerCommitOptions) (types.IDResponse, error)
|
||||||
ContainerCreate(ctx context.Context, config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, platform *specs.Platform, containerName string) (container.CreateResponse, error)
|
ContainerCreate(ctx context.Context, config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, platform *specs.Platform, containerName string) (container.CreateResponse, error)
|
||||||
ContainerDiff(ctx context.Context, container string) ([]container.ContainerChangeResponseItem, error)
|
ContainerDiff(ctx context.Context, container string) ([]container.FilesystemChange, error)
|
||||||
ContainerExecAttach(ctx context.Context, execID string, config types.ExecStartCheck) (types.HijackedResponse, error)
|
ContainerExecAttach(ctx context.Context, execID string, config types.ExecStartCheck) (types.HijackedResponse, error)
|
||||||
ContainerExecCreate(ctx context.Context, container string, config types.ExecConfig) (types.IDResponse, error)
|
ContainerExecCreate(ctx context.Context, container string, config types.ExecConfig) (types.IDResponse, error)
|
||||||
ContainerExecInspect(ctx context.Context, execID string) (types.ContainerExecInspect, error)
|
ContainerExecInspect(ctx context.Context, execID string) (types.ContainerExecInspect, error)
|
||||||
|
|
@ -166,7 +166,7 @@ type SwarmAPIClient interface {
|
||||||
type SystemAPIClient interface {
|
type SystemAPIClient interface {
|
||||||
Events(ctx context.Context, options types.EventsOptions) (<-chan events.Message, <-chan error)
|
Events(ctx context.Context, options types.EventsOptions) (<-chan events.Message, <-chan error)
|
||||||
Info(ctx context.Context) (types.Info, error)
|
Info(ctx context.Context) (types.Info, error)
|
||||||
RegistryLogin(ctx context.Context, auth types.AuthConfig) (registry.AuthenticateOKBody, error)
|
RegistryLogin(ctx context.Context, auth registry.AuthConfig) (registry.AuthenticateOKBody, error)
|
||||||
DiskUsage(ctx context.Context, options types.DiskUsageOptions) (types.DiskUsage, error)
|
DiskUsage(ctx context.Context, options types.DiskUsageOptions) (types.DiskUsage, error)
|
||||||
Ping(ctx context.Context) (types.Ping, error)
|
Ping(ctx context.Context) (types.Ping, error)
|
||||||
}
|
}
|
||||||
|
|
@ -176,7 +176,7 @@ type VolumeAPIClient interface {
|
||||||
VolumeCreate(ctx context.Context, options volume.CreateOptions) (volume.Volume, error)
|
VolumeCreate(ctx context.Context, options volume.CreateOptions) (volume.Volume, error)
|
||||||
VolumeInspect(ctx context.Context, volumeID string) (volume.Volume, error)
|
VolumeInspect(ctx context.Context, volumeID string) (volume.Volume, error)
|
||||||
VolumeInspectWithRaw(ctx context.Context, volumeID string) (volume.Volume, []byte, error)
|
VolumeInspectWithRaw(ctx context.Context, volumeID string) (volume.Volume, []byte, error)
|
||||||
VolumeList(ctx context.Context, filter filters.Args) (volume.ListResponse, error)
|
VolumeList(ctx context.Context, options volume.ListOptions) (volume.ListResponse, error)
|
||||||
VolumeRemove(ctx context.Context, volumeID string, force bool) error
|
VolumeRemove(ctx context.Context, volumeID string, force bool) error
|
||||||
VolumesPrune(ctx context.Context, pruneFilter filters.Args) (types.VolumesPruneReport, error)
|
VolumesPrune(ctx context.Context, pruneFilter filters.Args) (types.VolumesPruneReport, error)
|
||||||
VolumeUpdate(ctx context.Context, volumeID string, version swarm.Version, options volume.UpdateOptions) error
|
VolumeUpdate(ctx context.Context, volumeID string, version swarm.Version, options volume.UpdateOptions) error
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,12 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
"github.com/docker/docker/api/types"
|
|
||||||
"github.com/docker/docker/api/types/registry"
|
"github.com/docker/docker/api/types/registry"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RegistryLogin authenticates the docker server with a given docker registry.
|
// RegistryLogin authenticates the docker server with a given docker registry.
|
||||||
// It returns unauthorizedError when the authentication fails.
|
// It returns unauthorizedError when the authentication fails.
|
||||||
func (cli *Client) RegistryLogin(ctx context.Context, auth types.AuthConfig) (registry.AuthenticateOKBody, error) {
|
func (cli *Client) RegistryLogin(ctx context.Context, auth registry.AuthConfig) (registry.AuthenticateOKBody, error) {
|
||||||
resp, err := cli.post(ctx, "/auth", url.Values{}, auth, nil)
|
resp, err := cli.post(ctx, "/auth", url.Values{}, auth, nil)
|
||||||
defer ensureReaderClosed(resp)
|
defer ensureReaderClosed(resp)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -64,10 +64,10 @@ func parsePingResponse(cli *Client, resp serverResponse) (types.Ping, error) {
|
||||||
ping.BuilderVersion = types.BuilderVersion(bv)
|
ping.BuilderVersion = types.BuilderVersion(bv)
|
||||||
}
|
}
|
||||||
if si := resp.header.Get("Swarm"); si != "" {
|
if si := resp.header.Get("Swarm"); si != "" {
|
||||||
parts := strings.SplitN(si, "/", 2)
|
state, role, _ := strings.Cut(si, "/")
|
||||||
ping.SwarmStatus = &swarm.Status{
|
ping.SwarmStatus = &swarm.Status{
|
||||||
NodeState: swarm.LocalNodeState(parts[0]),
|
NodeState: swarm.LocalNodeState(state),
|
||||||
ControlAvailable: len(parts) == 2 && parts[1] == "manager",
|
ControlAvailable: role == "manager",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
err := cli.checkResponseErr(resp)
|
err := cli.checkResponseErr(resp)
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import (
|
||||||
|
|
||||||
"github.com/docker/distribution/reference"
|
"github.com/docker/distribution/reference"
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
|
"github.com/docker/docker/api/types/registry"
|
||||||
"github.com/docker/docker/errdefs"
|
"github.com/docker/docker/errdefs"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
@ -67,12 +68,12 @@ func (cli *Client) PluginInstall(ctx context.Context, name string, options types
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cli *Client) tryPluginPrivileges(ctx context.Context, query url.Values, registryAuth string) (serverResponse, error) {
|
func (cli *Client) tryPluginPrivileges(ctx context.Context, query url.Values, registryAuth string) (serverResponse, error) {
|
||||||
headers := map[string][]string{"X-Registry-Auth": {registryAuth}}
|
headers := map[string][]string{registry.AuthHeader: {registryAuth}}
|
||||||
return cli.get(ctx, "/plugins/privileges", query, headers)
|
return cli.get(ctx, "/plugins/privileges", query, headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cli *Client) tryPluginPull(ctx context.Context, query url.Values, privileges types.PluginPrivileges, registryAuth string) (serverResponse, error) {
|
func (cli *Client) tryPluginPull(ctx context.Context, query url.Values, privileges types.PluginPrivileges, registryAuth string) (serverResponse, error) {
|
||||||
headers := map[string][]string{"X-Registry-Auth": {registryAuth}}
|
headers := map[string][]string{registry.AuthHeader: {registryAuth}}
|
||||||
return cli.post(ctx, "/plugins/pull", query, privileges, headers)
|
return cli.post(ctx, "/plugins/pull", query, privileges, headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -106,7 +107,7 @@ func (cli *Client) checkPluginPermissions(ctx context.Context, query url.Values,
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if !accept {
|
if !accept {
|
||||||
return nil, pluginPermissionDenied{options.RemoteRef}
|
return nil, errors.Errorf("permission denied while installing plugin %s", options.RemoteRef)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return privileges, nil
|
return privileges, nil
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,13 @@ package client // import "github.com/docker/docker/client"
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
|
"github.com/docker/docker/api/types/registry"
|
||||||
)
|
)
|
||||||
|
|
||||||
// PluginPush pushes a plugin to a registry
|
// PluginPush pushes a plugin to a registry
|
||||||
func (cli *Client) PluginPush(ctx context.Context, name string, registryAuth string) (io.ReadCloser, error) {
|
func (cli *Client) PluginPush(ctx context.Context, name string, registryAuth string) (io.ReadCloser, error) {
|
||||||
headers := map[string][]string{"X-Registry-Auth": {registryAuth}}
|
headers := map[string][]string{registry.AuthHeader: {registryAuth}}
|
||||||
resp, err := cli.post(ctx, "/plugins/"+name+"/push", nil, nil, headers)
|
resp, err := cli.post(ctx, "/plugins/"+name+"/push", nil, nil, headers)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import (
|
||||||
|
|
||||||
"github.com/docker/distribution/reference"
|
"github.com/docker/distribution/reference"
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
|
"github.com/docker/docker/api/types/registry"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -34,6 +35,6 @@ func (cli *Client) PluginUpgrade(ctx context.Context, name string, options types
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cli *Client) tryPluginUpgrade(ctx context.Context, query url.Values, privileges types.PluginPrivileges, name, registryAuth string) (serverResponse, error) {
|
func (cli *Client) tryPluginUpgrade(ctx context.Context, query url.Values, privileges types.PluginPrivileges, name, registryAuth string) (serverResponse, error) {
|
||||||
headers := map[string][]string{"X-Registry-Auth": {registryAuth}}
|
headers := map[string][]string{registry.AuthHeader: {registryAuth}}
|
||||||
return cli.post(ctx, "/plugins/"+name+"/upgrade", query, privileges, headers)
|
return cli.post(ctx, "/plugins/"+name+"/upgrade", query, privileges, headers)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import (
|
||||||
|
|
||||||
"github.com/docker/distribution/reference"
|
"github.com/docker/distribution/reference"
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
|
"github.com/docker/docker/api/types/registry"
|
||||||
"github.com/docker/docker/api/types/swarm"
|
"github.com/docker/docker/api/types/swarm"
|
||||||
"github.com/opencontainers/go-digest"
|
"github.com/opencontainers/go-digest"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
|
|
@ -21,7 +22,7 @@ func (cli *Client) ServiceCreate(ctx context.Context, service swarm.ServiceSpec,
|
||||||
}
|
}
|
||||||
|
|
||||||
if options.EncodedRegistryAuth != "" {
|
if options.EncodedRegistryAuth != "" {
|
||||||
headers["X-Registry-Auth"] = []string{options.EncodedRegistryAuth}
|
headers[registry.AuthHeader] = []string{options.EncodedRegistryAuth}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure containerSpec is not nil when no runtime is set or the runtime is set to container
|
// Make sure containerSpec is not nil when no runtime is set or the runtime is set to container
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
|
"github.com/docker/docker/api/types/registry"
|
||||||
"github.com/docker/docker/api/types/swarm"
|
"github.com/docker/docker/api/types/swarm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -23,7 +24,7 @@ func (cli *Client) ServiceUpdate(ctx context.Context, serviceID string, version
|
||||||
}
|
}
|
||||||
|
|
||||||
if options.EncodedRegistryAuth != "" {
|
if options.EncodedRegistryAuth != "" {
|
||||||
headers["X-Registry-Auth"] = []string{options.EncodedRegistryAuth}
|
headers[registry.AuthHeader] = []string{options.EncodedRegistryAuth}
|
||||||
}
|
}
|
||||||
|
|
||||||
if options.RegistryAuthFrom != "" {
|
if options.RegistryAuthFrom != "" {
|
||||||
|
|
|
||||||
|
|
@ -10,13 +10,13 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// VolumeList returns the volumes configured in the docker host.
|
// VolumeList returns the volumes configured in the docker host.
|
||||||
func (cli *Client) VolumeList(ctx context.Context, filter filters.Args) (volume.ListResponse, error) {
|
func (cli *Client) VolumeList(ctx context.Context, options volume.ListOptions) (volume.ListResponse, error) {
|
||||||
var volumes volume.ListResponse
|
var volumes volume.ListResponse
|
||||||
query := url.Values{}
|
query := url.Values{}
|
||||||
|
|
||||||
if filter.Len() > 0 {
|
if options.Filters.Len() > 0 {
|
||||||
//nolint:staticcheck // ignore SA1019 for old code
|
//nolint:staticcheck // ignore SA1019 for old code
|
||||||
filterJSON, err := filters.ToParamWithVersion(cli.version, filter)
|
filterJSON, err := filters.ToParamWithVersion(cli.version, options.Filters)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return volumes, err
|
return volumes, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,14 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ParseKeyValueOpt parses and validates the specified string as a key/value pair (key=value)
|
// ParseKeyValueOpt parses and validates the specified string as a key/value
|
||||||
func ParseKeyValueOpt(opt string) (string, string, error) {
|
// pair (key=value).
|
||||||
parts := strings.SplitN(opt, "=", 2)
|
func ParseKeyValueOpt(opt string) (key string, value string, err error) {
|
||||||
if len(parts) != 2 {
|
k, v, ok := strings.Cut(opt, "=")
|
||||||
return "", "", fmt.Errorf("Unable to parse key/value option: %s", opt)
|
if !ok {
|
||||||
|
return "", "", fmt.Errorf("unable to parse key/value option: %s", opt)
|
||||||
}
|
}
|
||||||
return strings.TrimSpace(parts[0]), strings.TrimSpace(parts[1]), nil
|
return strings.TrimSpace(k), strings.TrimSpace(v), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParseUintListMaximum parses and validates the specified string as the value
|
// ParseUintListMaximum parses and validates the specified string as the value
|
||||||
|
|
@ -75,12 +76,12 @@ func parseUintList(val string, maximum int) (map[int]bool, error) {
|
||||||
}
|
}
|
||||||
availableInts[v] = true
|
availableInts[v] = true
|
||||||
} else {
|
} else {
|
||||||
split := strings.SplitN(r, "-", 2)
|
minS, maxS, _ := strings.Cut(r, "-")
|
||||||
min, err := strconv.Atoi(split[0])
|
min, err := strconv.Atoi(minS)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errInvalidFormat
|
return nil, errInvalidFormat
|
||||||
}
|
}
|
||||||
max, err := strconv.Atoi(split[1])
|
max, err := strconv.Atoi(maxS)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errInvalidFormat
|
return nil, errInvalidFormat
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -238,7 +238,7 @@ github.com/docker/distribution/reference
|
||||||
github.com/docker/distribution/registry/api/errcode
|
github.com/docker/distribution/registry/api/errcode
|
||||||
github.com/docker/distribution/registry/api/v2
|
github.com/docker/distribution/registry/api/v2
|
||||||
github.com/docker/distribution/registry/client/auth/challenge
|
github.com/docker/distribution/registry/client/auth/challenge
|
||||||
# github.com/docker/docker v23.0.6+incompatible
|
# github.com/docker/docker v24.0.0+incompatible
|
||||||
## explicit
|
## explicit
|
||||||
github.com/docker/docker/api
|
github.com/docker/docker/api
|
||||||
github.com/docker/docker/api/types
|
github.com/docker/docker/api/types
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue