mirror of
https://github.com/containers/skopeo.git
synced 2025-08-17 14:06:51 +00:00
drop docker/ code
Signed-off-by: Antonio Murdaca <runcom@redhat.com>
This commit is contained in:
parent
7be01242a8
commit
103420769f
@ -117,9 +117,7 @@ TODO
|
|||||||
- update README with `layers` command
|
- update README with `layers` command
|
||||||
- list all images on registry?
|
- list all images on registry?
|
||||||
- registry v2 search?
|
- registry v2 search?
|
||||||
- make skopeo docker registry v2 only
|
|
||||||
- download layers in parallel and support docker load tar(s)
|
- download layers in parallel and support docker load tar(s)
|
||||||
- get rid of docker/docker code (?)
|
|
||||||
- show repo tags via flag or when reference isn't tagged or digested
|
- show repo tags via flag or when reference isn't tagged or digested
|
||||||
- add tests (integration with deployed registries in container - Docker-like)
|
- add tests (integration with deployed registries in container - Docker-like)
|
||||||
- support rkt/appc image spec
|
- support rkt/appc image spec
|
||||||
|
@ -23,12 +23,11 @@ var inspectCmd = cli.Command{
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
Action: func(c *cli.Context) {
|
Action: func(c *cli.Context) {
|
||||||
|
img, err := skopeo.ParseImage(c.Args().First())
|
||||||
|
if err != nil {
|
||||||
|
logrus.Fatal(err)
|
||||||
|
}
|
||||||
if c.Bool("raw") {
|
if c.Bool("raw") {
|
||||||
img, err := skopeo.ParseImage(c.Args().First())
|
|
||||||
if err != nil {
|
|
||||||
logrus.Fatal(err)
|
|
||||||
}
|
|
||||||
// TODO(runcom): this is not falling back to v1
|
|
||||||
// TODO(runcom): hardcoded schema 2 version 1
|
// TODO(runcom): hardcoded schema 2 version 1
|
||||||
b, err := img.RawManifest("2-1")
|
b, err := img.RawManifest("2-1")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -37,12 +36,11 @@ var inspectCmd = cli.Command{
|
|||||||
fmt.Println(string(b))
|
fmt.Println(string(b))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// get the Image interface before inspecting...utils.go parseImage
|
imgInspect, err := img.Manifest()
|
||||||
imgInspect, err := inspect(c)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
out, err := json.Marshal(imgInspect)
|
out, err := json.MarshalIndent(imgInspect, "", " ")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
42
docker.go
42
docker.go
@ -53,11 +53,36 @@ func (i *dockerImage) RawManifest(version string) ([]byte, error) {
|
|||||||
return i.rawManifest, nil
|
return i.rawManifest, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *dockerImage) Manifest(version string) (types.ImageManifest, error) {
|
func (i *dockerImage) Manifest() (types.ImageManifest, error) {
|
||||||
// TODO(runcom): port docker/docker implementation under docker/ to just
|
// TODO(runcom): unused version param for now, default to docker v2-1
|
||||||
// use this!!! and do not rely on docker upstream code - will need to support
|
m, err := i.getSchema1Manifest()
|
||||||
// v1 fall back also...
|
if err != nil {
|
||||||
return nil, nil
|
return nil, err
|
||||||
|
}
|
||||||
|
ms1, ok := m.(*manifestSchema1)
|
||||||
|
if !ok {
|
||||||
|
return nil, fmt.Errorf("error retrivieng manifest schema1")
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO(runcom): get all tags, last argument, and digest
|
||||||
|
return makeImageManifest(ms1, "", nil), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func makeImageManifest(m *manifestSchema1, dgst string, tagList []string) types.ImageManifest {
|
||||||
|
return &types.DockerImageManifest{
|
||||||
|
Tag: m.Tag,
|
||||||
|
Digest: dgst,
|
||||||
|
RepoTags: tagList,
|
||||||
|
Comment: "",
|
||||||
|
Created: "",
|
||||||
|
ContainerConfig: nil,
|
||||||
|
DockerVersion: "",
|
||||||
|
Author: "",
|
||||||
|
Config: nil,
|
||||||
|
Architecture: "",
|
||||||
|
Os: "",
|
||||||
|
Layers: nil,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *dockerImage) DockerTar() ([]byte, error) {
|
func (i *dockerImage) DockerTar() ([]byte, error) {
|
||||||
@ -273,6 +298,13 @@ func (i *dockerImage) getSchema1Manifest() (manifest, error) {
|
|||||||
if err := fixManifestLayers(mschema1); err != nil {
|
if err := fixManifestLayers(mschema1); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
// TODO(runcom): verify manifest schema 1, 2 etc
|
||||||
|
//if len(m.FSLayers) != len(m.History) {
|
||||||
|
//return nil, fmt.Errorf("length of history not equal to number of layers for %q", ref.String())
|
||||||
|
//}
|
||||||
|
//if len(m.FSLayers) == 0 {
|
||||||
|
//return nil, fmt.Errorf("no FSLayers in manifest for %q", ref.String())
|
||||||
|
//}
|
||||||
return mschema1, nil
|
return mschema1, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ type Repository interface {
|
|||||||
type Image interface {
|
type Image interface {
|
||||||
// ref to repository?
|
// ref to repository?
|
||||||
Layers(layers ...string) error // configure download directory? Call it DownloadLayers?
|
Layers(layers ...string) error // configure download directory? Call it DownloadLayers?
|
||||||
Manifest(version string) (ImageManifest, error)
|
Manifest() (ImageManifest, error)
|
||||||
RawManifest(version string) ([]byte, error)
|
RawManifest(version string) ([]byte, error)
|
||||||
DockerTar() ([]byte, error) // ??? also, configure output directory
|
DockerTar() ([]byte, error) // ??? also, configure output directory
|
||||||
}
|
}
|
||||||
@ -48,5 +48,8 @@ type DockerImageManifest struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *DockerImageManifest) Labels() map[string]string {
|
func (m *DockerImageManifest) Labels() map[string]string {
|
||||||
|
if m.Config == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return m.Config.Labels
|
return m.Config.Labels
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user