mirror of
https://github.com/regclient/regclient.git
synced 2025-04-18 22:44:00 +03:00
Adding logging and docs
This commit is contained in:
parent
9a7c22e943
commit
46979df03c
103
README.md
103
README.md
@ -3,19 +3,33 @@
|
||||
Client interface for the registry API.
|
||||
This includes `regctl` for a command line interface to manage registries.
|
||||
|
||||
**This project is in early development, some features are not complete.**
|
||||

|
||||
|
||||
## regctl Features
|
||||
|
||||
- Ability to inspect repo tags, manifests, and image configs without
|
||||
downloading the full image.
|
||||
- Ability to inspect repo tags, manifests, and image configs without downloading
|
||||
the full image.
|
||||
- Ability to copy or retag an image without pulling it into docker. Layers are
|
||||
only pulled if you are copying between different registries and the target
|
||||
registry does not have the layers already.
|
||||
- Ability to export an image from a registry without a docker engine.
|
||||
- Ability to delete an image manifest.
|
||||
- Ability to delete a tag without removing the entire manifest.
|
||||
- Uses docker registry logins and /etc/docker/certs.d by default to support
|
||||
private repositories and self signed registries.
|
||||
|
||||
## Development Status
|
||||
|
||||
This project is in active development, a few features are not complete.
|
||||
Unfinished or not yet started work includes:
|
||||
|
||||
- Ability to import images from a tar to a registry.
|
||||
- Ability to export a multi-platform image.
|
||||
- Ability to concurrently download layers.
|
||||
- Ability to retry from a partial layer download.
|
||||
- Documentation.
|
||||
- Testing.
|
||||
|
||||
## Building
|
||||
|
||||
```shell
|
||||
@ -59,77 +73,30 @@ chmod 755 regctl
|
||||
./regctl --help
|
||||
```
|
||||
|
||||
## Demo
|
||||
## Usage
|
||||
|
||||
```shell
|
||||
$ ./regctl repo ls ubuntu | grep 20.10
|
||||
library/ubuntu:20.10
|
||||
|
||||
$ ./regctl image manifest ubuntu:20.10
|
||||
{
|
||||
"schemaVersion": 2,
|
||||
"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
|
||||
"manifests": [
|
||||
{
|
||||
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
|
||||
"size": 1152,
|
||||
"digest": "sha256:bb03a3e24da9704fc94ff11adbbfd9c93bb84bfab6fd57c9bab3168431a1d1ff",
|
||||
"platform": {
|
||||
"architecture": "amd64",
|
||||
"os": "linux"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
|
||||
"size": 1152,
|
||||
"digest": "sha256:eb1e82d1e85283abb47d328cb838e8adff126ec4f44398a0e4b7f66dbad3fcb3",
|
||||
"platform": {
|
||||
"architecture": "arm",
|
||||
"os": "linux",
|
||||
"variant": "v7"
|
||||
}
|
||||
},
|
||||
...
|
||||
|
||||
$ ./regctl image inspect ubuntu:20.10@sha256:bb03a3e24da9704fc94ff11adbbfd9c93bb84bfab6fd57c9bab3168431a1d1ff
|
||||
{
|
||||
"created": "2020-08-19T21:15:25.559275011Z",
|
||||
"architecture": "amd64",
|
||||
"os": "linux",
|
||||
"config": {
|
||||
"Env": [
|
||||
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
],
|
||||
"Cmd": [
|
||||
"/bin/bash"
|
||||
]
|
||||
},
|
||||
"rootfs": {
|
||||
"type": "layers",
|
||||
"diff_ids": [
|
||||
"sha256:327d7aa9de643a7e07b8a258fce4f0103a1a997112abd9ca13ce42c326aae474",
|
||||
"sha256:08b4849c15c3c5a7feaaf7bbe5cc7e82a83e6411b2aaf491884dc7f036b070af",
|
||||
"sha256:a1beb1d2d31d68cb8987e38c8170a615968d7ba46c0c6b311d36e2891f849b70",
|
||||
"sha256:b351340d34bcaf409df1cffdda8172a2a296635d16ba1ca74e1cd27cbfcf8d2b"
|
||||
]
|
||||
},
|
||||
"history": [
|
||||
{
|
||||
"created": "2020-08-19T21:15:22.638202373Z",
|
||||
"created_by": "/bin/sh -c #(nop) ADD file:53ca8a3f446b0751019d522066ce844f6281ffb5b15e9605cd8940176abf4c76 in / "
|
||||
},
|
||||
...
|
||||
```
|
||||
See the [project documentation](docs/README.md).
|
||||
|
||||
## Comparison to Other Tools
|
||||
|
||||
Registry client API:
|
||||
|
||||
- containerd: containerd'd registry APIs focus more on pulling images than on a general purpose registry client API. This means various registry API calls are not provided.
|
||||
- docker/distribution: Docker's client libraries would have needed a fair bit of modification to support OCI images, and behave similar to the docker command line with registry logins.
|
||||
- containerd: containerd'd registry APIs focus more on pulling images than on a
|
||||
general purpose registry client API. This means various registry API calls are
|
||||
not provided.
|
||||
- docker/distribution: Docker's client libraries would have needed a fair bit of
|
||||
modification to support OCI images, and behave similar to the docker command
|
||||
line with registry logins.
|
||||
|
||||
There are also a variety of registry command line tools available:
|
||||
|
||||
- genuinetools/img: img works on top of buildkit for image creation and management. Using this for a registry client means including lots of dependencies that many will not need.
|
||||
- genuinetools/reg: reg is probably the closest match to this project. Some features included in regctl that aren't included in reg are the ability to inject self signed certs, store login credentials separate from docker, copy or retag images, and export images into a tar file.
|
||||
- containers/skopeo: Because of RedHat's push to remove any docker solutions from their stack, their skopeo project wasn't considered when searching for a complement to the docker command line.
|
||||
- genuinetools/img: img works on top of buildkit for image creation and
|
||||
management. Using this for a registry client means including lots of
|
||||
dependencies that many will not need.
|
||||
- genuinetools/reg: reg is probably the closest match to this project. Some
|
||||
features included in regctl that aren't included in reg are the ability to
|
||||
inject self signed certs, store login credentials separate from docker, copy
|
||||
or retag images, and export images into a tar file.
|
||||
- containers/skopeo: Because of RedHat's push to remove any docker solutions
|
||||
from their stack, their skopeo project wasn't considered when searching for a
|
||||
complement to the docker command line.
|
||||
|
101
docs/README.md
101
docs/README.md
@ -61,20 +61,31 @@ but may have unexpected results when pushing changes to the registry since each
|
||||
http request will be sent to the first server in the list that is currently
|
||||
available.
|
||||
|
||||
### Repository commands
|
||||
|
||||
Currently the only repository command is to list tags:
|
||||
### Tag commands
|
||||
|
||||
```text
|
||||
Usage:
|
||||
regctl tag [command]
|
||||
|
||||
Available Commands:
|
||||
delete delete a tag in a repo
|
||||
ls list tags in a repo
|
||||
```
|
||||
|
||||
The `ls` command lists all tags within a repo.
|
||||
|
||||
The `delete` command will delete a single tag without impacting other tags or
|
||||
the underlying manifest which is useful if you are unsure if your image is used
|
||||
elsewhere and want to rely on the registry to cleanup untagged manifests.
|
||||
|
||||
### Image Commands
|
||||
|
||||
The image commands are where most of the power of `regctl` is visible:
|
||||
|
||||
```text
|
||||
Usage:
|
||||
regctl image [command]
|
||||
|
||||
Available Commands:
|
||||
copy copy or retag image
|
||||
delete delete image
|
||||
@ -85,42 +96,100 @@ Available Commands:
|
||||
manifest show manifest or manifest list
|
||||
```
|
||||
|
||||
The copy command allows images to be copied between registries, between
|
||||
The `copy` command allows images to be copied between registries, between
|
||||
repositories on the same registry, or retag an image within the same repository,
|
||||
and only pulls the layers when needed (typically not needed with the same
|
||||
registry server).
|
||||
|
||||
The digest command is useful to pin the image used within your deployment to an
|
||||
The `delete` command removes the image manifest from the server. This will
|
||||
impact all tags pointing to the same manifest and requires a digest to be
|
||||
included in the image reference to be deleted (e.g. `myimage@sha256:abcd...`).
|
||||
|
||||
The `digest` command is useful to pin the image used within your deployment to an
|
||||
immutable sha256 checksum.
|
||||
|
||||
The export/import commands allow you to copy images between registry servers
|
||||
The `export`/import commands allow you to copy images between registry servers
|
||||
that may be disconnected, or to export an image directly from a registry without
|
||||
a docker engine and loading it into a potentially disconnected docker host.
|
||||
|
||||
The inspect command pulls the image config json blob. This is the same json
|
||||
The `inspect` command pulls the image config json blob. This is the same json
|
||||
shown with a `docker image inspect` command, and includes labels, the
|
||||
entrypoint/cmd, and layer history. This can be useful with image pruning
|
||||
scripts, or other tools that need the image labels without the need to pull all
|
||||
of the layers.
|
||||
|
||||
The manifest command shows the low level layers and digests that can be pulled
|
||||
The `manifest` command shows the low level layers and digests that can be pulled
|
||||
from the registry to retrieve individual components of an image. This is also
|
||||
useful for analyzing multi-platform manifest lists to see what platforms are
|
||||
available for a particular image.
|
||||
|
||||
### Layer Commands
|
||||
|
||||
The layer command acts on blobs within the registry. These blobs include the tar
|
||||
layers and the json image configs.
|
||||
|
||||
```text
|
||||
Usage:
|
||||
regctl layer [command]
|
||||
|
||||
Available Commands:
|
||||
pull download a layer/blob
|
||||
```
|
||||
|
||||
The `pull` command will pull a specific sha256 blob from the registry and
|
||||
returns it to stdout. If you are requesting a tar layer, be sure to direct this
|
||||
to a file. For json blobs, it's useful to redirect this to a command like `jq`.
|
||||
|
||||
Example usage:
|
||||
|
||||
```shell
|
||||
$ regctl image manifest busybox
|
||||
{
|
||||
"schemaVersion": 2,
|
||||
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
|
||||
"config": {
|
||||
"mediaType": "application/vnd.docker.container.image.v1+json",
|
||||
"size": 1493,
|
||||
"digest": "sha256:6858809bf669cc5da7cb6af83d0fae838284d12e1be0182f92f6bd96559873e3"
|
||||
},
|
||||
"layers": [
|
||||
{
|
||||
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
|
||||
"size": 764618,
|
||||
"digest": "sha256:df8698476c65c2ee7ca0e9dbc2b1c8b1c91bce555819a9aaab724ac64241ba67"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
$ regctl layer pull busybox sha256:6858809bf669cc5da7cb6af83d0fae838284d12e1be0182f92f6bd96559873e3 | jq .
|
||||
{
|
||||
"architecture": "amd64",
|
||||
"config": {
|
||||
"Hostname": "",
|
||||
"Domainname": "",
|
||||
"User": "",
|
||||
"AttachStdin": false,
|
||||
"AttachStdout": false,
|
||||
"AttachStderr": false,
|
||||
"Tty": false,
|
||||
"OpenStdin": false,
|
||||
"StdinOnce": false,
|
||||
...
|
||||
```
|
||||
|
||||
### Format Flag
|
||||
|
||||
The format flag allows you to apply a Go template to the output of some
|
||||
The `--format` flag allows you to apply a Go template to the output of some
|
||||
commands. The following functions have been added in addition to the defaults
|
||||
available with Go:
|
||||
|
||||
- json: output the variable with json formatting
|
||||
- jsonPretty: same as json with linefeeds and indentation
|
||||
- split: split a string based on a separator
|
||||
- join: append array entries into a string with a separator
|
||||
- title: makes the first letter of each word uppercase
|
||||
- lower: converts a string to lowercase
|
||||
- upper: converts a string to uppercase
|
||||
- `json`: output the variable with json formatting
|
||||
- `jsonPretty`: same as json with linefeeds and indentation
|
||||
- `split`: split a string based on a separator
|
||||
- `join`: append array entries into a string with a separator
|
||||
- `title`: makes the first letter of each word uppercase
|
||||
- `lower`: converts a string to lowercase
|
||||
- `upper`: converts a string to uppercase
|
||||
|
||||
For more details, see:
|
||||
|
||||
|
451
docs/demo.cast
Normal file
451
docs/demo.cast
Normal file
@ -0,0 +1,451 @@
|
||||
{"version": 2, "width": 100, "height": 26, "timestamp": 1601150708, "idle_time_limit": 3.0, "env": {"SHELL": "/bin/bash", "TERM": "xterm-256color"}}
|
||||
[0.003758, "o", "\u001b[?1049h\u001b[22;0;0t\u001b[?1h\u001b=\u001b[H\u001b[2J\u001b[?12l\u001b[?25h\u001b[?1000l\u001b[?1002l\u001b[?1006l\u001b[?1005l\u001b[c\u001b(B\u001b[m\u001b[?12;25h\u001b[?12l\u001b[?25h\u001b[?1003l\u001b[?1006l\u001b[?2004l\u001b[1;1H\u001b[1;26r\u001b]112\u0007\u001b[1;3H"]
|
||||
[0.004057, "o", "\u001b[?25l\u001b[H$\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[30m\u001b[42m[preso] 0:bash* \"bmitch-t490\" 16:05 26-Sep-20\u001b(B\u001b[m\u001b[1;3H\u001b[?12l\u001b[?25h\u001b(B\u001b[m\u001b[?12;25h\u001b[?12l\u001b[?25h\u001b[?1003l\u001b[?1006l\u001b[?2004l\u001b[1;1H\u001b[1;26r\u001b[1;3H\u001b[?25l\u001b[H$\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[K\r\n\u001b[30m\u001b[42m[preso] 0:bash* \"bmitch-t490\" 16:05 26-Sep-20\u001b(B\u001b[m\u001b[1;3H\u001b[?12l\u001b[?25h"]
|
||||
[0.925083, "o", "r"]
|
||||
[1.028811, "o", "e"]
|
||||
[1.325271, "o", "g"]
|
||||
[1.725185, "o", "c"]
|
||||
[1.988959, "o", "t"]
|
||||
[2.108608, "o", "l"]
|
||||
[2.236552, "o", " "]
|
||||
[2.676817, "o", "-"]
|
||||
[2.805108, "o", "-"]
|
||||
[3.045032, "o", "h"]
|
||||
[3.245259, "o", "e"]
|
||||
[3.380698, "o", "l"]
|
||||
[3.524809, "o", "p"]
|
||||
[3.916712, "o", "\r\n"]
|
||||
[3.931324, "o", "Utility for accessing docker registries\r\nMore details at https://github.com/regclient/regclient\u001b[5;1H"]
|
||||
[3.933591, "o", "Usage:\r\n regctl <cmd> [flags]\r\n regctl [command]\u001b[9;1HAvailable Commands:\r\n help Help about any command\r\n image manage images\r\n layer manage image layers/blobs\r\n registry manage registries\r\n tag manage tags\u001b[16;1HFlags:\r\n -h, --help help for regctl\r\n -v, --verbosity string Log level (debug, info, warn, error, fatal, panic) (default \"warning\")\u001b[20;1HUse \"regctl [command] --help\" for more information about a command.\r\n"]
|
||||
[3.935331, "o", "$ "]
|
||||
[4.948979, "o", "r"]
|
||||
[5.06882, "o", "e"]
|
||||
[5.332836, "o", "g"]
|
||||
[5.724878, "o", "c"]
|
||||
[6.02902, "o", "t"]
|
||||
[6.188578, "o", "l"]
|
||||
[6.340807, "o", " "]
|
||||
[6.786803, "o", "r"]
|
||||
[6.889839, "o", "e"]
|
||||
[7.101056, "o", "g"]
|
||||
[7.365065, "o", "i"]
|
||||
[7.476891, "o", "s"]
|
||||
[7.533488, "o", "t"]
|
||||
[7.722821, "o", "r"]
|
||||
[7.829532, "o", "y"]
|
||||
[7.956649, "o", " "]
|
||||
[8.172884, "o", "s"]
|
||||
[8.261412, "o", "e"]
|
||||
[8.348708, "o", "t"]
|
||||
[8.500825, "o", " "]
|
||||
[8.677082, "o", "l"]
|
||||
[8.869222, "o", "o"]
|
||||
[8.933465, "o", "c"]
|
||||
[9.021024, "o", "a"]
|
||||
[9.148644, "o", "l"]
|
||||
[9.348873, "o", "h"]
|
||||
[9.460883, "o", "o"]
|
||||
[9.532524, "o", "s"]
|
||||
[9.692995, "o", "t"]
|
||||
[9.996854, "o", ":"]
|
||||
[10.301037, "o", "5"]
|
||||
[10.637177, "o", "0"]
|
||||
[10.813328, "o", "0"]
|
||||
[10.970687, "o", "0"]
|
||||
[11.348843, "o", " "]
|
||||
[11.693115, "o", "-"]
|
||||
[11.82897, "o", "-"]
|
||||
[11.972746, "o", "t"]
|
||||
[12.116854, "o", "l"]
|
||||
[12.260928, "o", "s"]
|
||||
[12.588878, "o", " "]
|
||||
[12.772578, "o", "d"]
|
||||
[12.893087, "o", "i"]
|
||||
[12.972879, "o", "s"]
|
||||
[13.196946, "o", "a"]
|
||||
[13.420946, "o", "b"]
|
||||
[13.508911, "o", "l"]
|
||||
[13.628965, "o", "e"]
|
||||
[13.837021, "o", "d"]
|
||||
[14.26879, "o", "\r\n"]
|
||||
[14.282085, "o", "$ "]
|
||||
[14.82897, "o", "r"]
|
||||
[14.965032, "o", "e"]
|
||||
[15.220958, "o", "g"]
|
||||
[15.789048, "o", "c"]
|
||||
[16.021044, "o", "t"]
|
||||
[16.172801, "o", "l"]
|
||||
[16.317057, "o", " "]
|
||||
[16.572968, "o", "i"]
|
||||
[16.756943, "o", "m"]
|
||||
[16.844842, "o", "a"]
|
||||
[16.916945, "o", "g"]
|
||||
[17.0211, "o", "e"]
|
||||
[17.156755, "o", " "]
|
||||
[17.365147, "o", "m"]
|
||||
[17.476834, "o", "a"]
|
||||
[17.604972, "o", "n"]
|
||||
[17.828924, "o", "i"]
|
||||
[18.093299, "o", "f"]
|
||||
[18.292884, "o", "e"]
|
||||
[18.38096, "o", "s"]
|
||||
[18.492929, "o", "t"]
|
||||
[18.625759, "o", " "]
|
||||
[18.852715, "o", "b"]
|
||||
[18.940755, "o", "u"]
|
||||
[19.076692, "o", "s"]
|
||||
[19.164666, "o", "y"]
|
||||
[19.373008, "o", "b"]
|
||||
[19.468738, "o", "o"]
|
||||
[19.612711, "o", "x"]
|
||||
[20.116802, "o", "\r\n"]
|
||||
[20.512948, "o", "\u001b[1;25r\u001b[14S\u001b[9d{\r\n \"schemaVersion\": 2,\r\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\r\n \"config\": {\r\n \"mediaType\": \"application/vnd.docker.container.image.v1+json\",\r\n \"size\": 1493,\r\n \"digest\": \"sha256:6858809bf669cc5da7cb6af83d0fae838284d12e1be0182f92f6bd96559873e3\"\r\n },\r\n \"layers\": [\r\n {\r\n \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\r\n \"size\": 764618,\r\n \"digest\": \"sha256:df8698476c65c2ee7ca0e9dbc2b1c8b1c91bce555819a9aaab724ac64241ba67\"\r\n }\r\n ]\r\n}\u001b[?25l\u001b[1;26r\u001b[26;1H\u001b[30m\u001b[42m[preso] 0:regctl* \"bmitch-t490\" 16:05 26-Sep-20\u001b(B\u001b[m\u001b[25;1H\u001b[?12l\u001b[?25h"]
|
||||
[20.51435, "o", "$ "]
|
||||
[21.229782, "o", "\u001b[?25l\r\n\u001b[30m\u001b[42m[preso] 0:bash* \"bmitch-t490\" 16:05 26-Sep-20\u001b(B\u001b[m\u001b[25;3H\u001b[?12l\u001b[?25h"]
|
||||
[21.230211, "o", "r"]
|
||||
[21.349085, "o", "e"]
|
||||
[21.581048, "o", "g"]
|
||||
[21.981058, "o", "c"]
|
||||
[22.22093, "o", "t"]
|
||||
[22.356983, "o", "l"]
|
||||
[22.45275, "o", " "]
|
||||
[22.717164, "o", "i"]
|
||||
[22.916667, "o", "m"]
|
||||
[23.028878, "o", "a"]
|
||||
[23.08574, "o", "g"]
|
||||
[23.185609, "o", "e"]
|
||||
[23.380804, "o", " "]
|
||||
[23.620644, "o", "i"]
|
||||
[23.877074, "o", "n"]
|
||||
[24.002273, "o", "s"]
|
||||
[24.220811, "o", "p"]
|
||||
[24.348596, "o", "e"]
|
||||
[24.573502, "o", "c"]
|
||||
[24.797198, "o", "t"]
|
||||
[24.908542, "o", " "]
|
||||
[25.173432, "o", "b"]
|
||||
[25.268772, "o", "u"]
|
||||
[25.381083, "o", "s"]
|
||||
[25.469182, "o", "y"]
|
||||
[25.700782, "o", "b"]
|
||||
[25.820549, "o", "o"]
|
||||
[25.924869, "o", "x"]
|
||||
[26.332908, "o", "\u001b[1;25r\u001b[25;1H\n\u001b[1;26r\u001b[25;1H"]
|
||||
[26.937602, "o", "\u001b[1;25r\u001b[25S\u001b[H ],\r\n \"Cmd\": [\r\n \"sh\"\r\n ]\r\n },\r\n \"rootfs\": {\r\n \"type\": \"layers\",\r\n \"diff_ids\": [\r\n \"sha256:be8b8b42328a15af9dd6af4cba85821aad30adde28d249d1ea03c74690530d1c\"\r\n ]\r\n },\r\n \"history\": [\r\n {\r\n \"created\": \"2020-09-09T01:38:02.18459328Z\",\r\n \"created_by\": \"/bin/sh -c #(nop) ADD file:72be520892d0a903df801c6425de761264d7c1bc7984d5cf285d778147826586 in / \"\r\n },\r\n {\r\n \"created\": \"2020-09-09T01:38:02.334927351Z\",\r\n \"created_by\": \"/bin/sh -c #(nop) CMD [\\\"sh\\\"]\",\r\n \"empty_layer\": true\r\n }\r\n ]\r\n}\u001b[?25l\u001b[1;26r\u001b[26;1H\u001b[30m\u001b[42m[preso] 0:regctl* \"bmitch-t490\" 16:05 26-Sep-20\u001b(B\u001b[m\u001b[25;1H\u001b[?12l\u001b[?25h"]
|
||||
[26.939613, "o", "$ "]
|
||||
[29.20171, "o", "\u001b[?25l\r\n\u001b[30m\u001b[42m[preso] 0:bash* \"bmitch-t490\" 16:05 26-Sep-20\u001b(B\u001b[m\u001b[25;3H\u001b[?12l\u001b[?25h"]
|
||||
[29.201897, "o", "r"]
|
||||
[29.29295, "o", "e"]
|
||||
[29.5649, "o", "g"]
|
||||
[29.876967, "o", "c"]
|
||||
[30.125043, "o", "t"]
|
||||
[30.260715, "o", "l"]
|
||||
[30.389063, "o", " "]
|
||||
[31.381318, "o", "i"]
|
||||
[31.548784, "o", "m"]
|
||||
[31.636887, "o", "a"]
|
||||
[32.021403, "o", "g"]
|
||||
[32.165001, "o", "e"]
|
||||
[32.348981, "o", " "]
|
||||
[32.524977, "o", "c"]
|
||||
[32.603525, "o", "o"]
|
||||
[32.700649, "o", "p"]
|
||||
[32.828994, "o", "y"]
|
||||
[32.949106, "o", " "]
|
||||
[33.268715, "o", "-"]
|
||||
[33.413344, "o", "v"]
|
||||
[33.548641, "o", " "]
|
||||
[33.796812, "o", "i"]
|
||||
[33.901016, "o", "n"]
|
||||
[34.02891, "o", "f"]
|
||||
[34.117038, "o", "o"]
|
||||
[34.28522, "o", " "]
|
||||
[34.781063, "o", "b"]
|
||||
[34.997146, "o", "u"]
|
||||
[35.34914, "o", "s"]
|
||||
[35.532844, "o", "y"]
|
||||
[35.965109, "o", "b"]
|
||||
[36.076638, "o", "o"]
|
||||
[36.196945, "o", "x"]
|
||||
[36.757095, "o", " "]
|
||||
[37.853029, "o", "l"]
|
||||
[38.037694, "o", "o"]
|
||||
[38.11704, "o", "c"]
|
||||
[38.205153, "o", "a"]
|
||||
[38.325181, "o", "l"]
|
||||
[38.53299, "o", "h"]
|
||||
[38.637754, "o", "o"]
|
||||
[38.700994, "o", "s"]
|
||||
[38.829239, "o", "t"]
|
||||
[39.069005, "o", ":"]
|
||||
[39.261211, "o", "5"]
|
||||
[39.580972, "o", "0"]
|
||||
[39.732832, "o", "0"]
|
||||
[39.88506, "o", "0"]
|
||||
[40.322934, "o", "/"]
|
||||
[40.540792, "o", "l"]
|
||||
[40.717226, "o", "i"]
|
||||
[40.82904, "o", "b"]
|
||||
[41.109022, "o", "r"]
|
||||
[41.309096, "o", "a"]
|
||||
[41.461024, "o", "r"]
|
||||
[41.605034, "o", "y"]
|
||||
[41.940843, "o", "/"]
|
||||
[42.829153, "o", "b"]
|
||||
[42.929805, "o", "u"]
|
||||
[43.041507, "o", "s"]
|
||||
[43.180827, "o", "y"]
|
||||
[43.364723, "o", "b"]
|
||||
[43.493191, "o", "o"]
|
||||
[43.58913, "o", "x"]
|
||||
[44.029254, "o", "\u001b[1;25r\u001b[25;1H\n\u001b[1;26r\u001b[25;1H"]
|
||||
[44.469869, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0000] Copy config \u001b[36mdigest\u001b[39m=\"sha256:6858809bf669cc5da7cb6af83d0fae838284d12e1be0182f92f6bd96559873e3\"\u001b[?25l\u001b[1;26r\u001b[26;1H\u001b[30m\u001b[42m[preso] 0:regctl* \"bmitch-t490\" 16:05 26-Sep-20\u001b(B\u001b[m\u001b[25;1H\u001b[?12l\u001b[?25h"]
|
||||
[44.601745, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0000] Copy layer \u001b[36mlayer\u001b[39m=\"sha256:df8698476c65c2ee7ca0e9dbc2b1c8b1c91bce555819a9aaab724ac64241ba67\"\u001b[1;26r\u001b[25;1H"]
|
||||
[44.797569, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0000] Copy config \u001b[36mdigest\u001b[39m=\"sha256:9f35fd9a874d2a76014da614227870d513aa77fb47a8a0d8ab882f94801f3a3f\"\u001b[1;26r\u001b[25;1H"]
|
||||
[44.898565, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0000] Copy layer \u001b[36mlayer\u001b[39m=\"sha256:290c10cb2479a1d7af2f36b8897edf64f5422380fac7c2fd002eb3f14febe48b\"\u001b[1;26r\u001b[25;1H"]
|
||||
[45.100319, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0001] Copy config \u001b[36mdigest\u001b[39m=\"sha256:c66d1a7656cf6cb17f9ec6ffff1e1af7779ce2799f6199ffae69feae55a3b286\"\u001b[1;26r\u001b[25;1H"]
|
||||
[45.169352, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0001] Copy layer \u001b[36mlayer\u001b[39m=\"sha256:3758744b8f0a57ac19b0ac2cd14922ae7cce4fc1cf2ebec9ab52f88bdceb9bda\"\u001b[1;26r\u001b[25;1H"]
|
||||
[45.365658, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0001] Copy config \u001b[36mdigest\u001b[39m=\"sha256:e7fb8978e4bd66cff5caef1e4974e847aeb6721c6310a10b914ba0b6722c4e32\"\u001b[1;26r\u001b[25;1H"]
|
||||
[45.450638, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0001] Copy layer \u001b[36mlayer\u001b[39m=\"sha256:f9e75b71dc3602bf178c4eaf257210063923c43caf7835fd0d66191fff49692b\"\u001b[1;26r\u001b[25;1H"]
|
||||
[45.648039, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0001] Copy config \u001b[36mdigest\u001b[39m=\"sha256:59b5e73fc75a038ff4ac087117c361f11eec781d5897ea69edc4a56409a9caa9\"\u001b[1;26r\u001b[25;1H"]
|
||||
[45.722405, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0001] Copy layer \u001b[36mlayer\u001b[39m=\"sha256:590851f7c68b60221f785e751c1621725689d5c2e39847c090ad0fb7b942d641\"\u001b[1;26r\u001b[25;1H"]
|
||||
[45.922034, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0001] Copy config \u001b[36mdigest\u001b[39m=\"sha256:84e20cddf6af817269a26d498197ead91564af613d9cec4dc6f8f0ce40ecc384\"\u001b[1;26r\u001b[25;1H"]
|
||||
[46.00787, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0001] Copy layer \u001b[36mlayer\u001b[39m=\"sha256:224fa80c44c4f6019ce1c1885df2d0906de94b10bf16a8351b39a784c8907640\"\u001b[1;26r\u001b[25;1H"]
|
||||
[46.216971, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0002] Copy config \u001b[36mdigest\u001b[39m=\"sha256:d463e88d0c700d664fb8acd7a6f7a4ff983bab625bb4e40ce00e024be298886c\"\u001b[1;26r\u001b[25;1H"]
|
||||
[46.297848, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0002] Copy layer \u001b[36mlayer\u001b[39m=\"sha256:e52ce5e666e6e3508963271b704b8bc4b61b33a38cc3f6914c39e543a0fa7874\"\u001b[1;26r\u001b[25;1H"]
|
||||
[46.506581, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0002] Copy config \u001b[36mdigest\u001b[39m=\"sha256:ac23343479ea1a0158197bb3dff6c6c21f672b5b58a70e8934c52d82241ea887\"\u001b[1;26r\u001b[25;1H"]
|
||||
[46.59683, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0002] Copy layer \u001b[36mlayer\u001b[39m=\"sha256:d997fe81ee23c0adf99f8b21421f60113323df5fda7e5aa4066e45adf4136009\"\u001b[1;26r\u001b[25;1H"]
|
||||
[46.926743, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0002] Copy config \u001b[36mdigest\u001b[39m=\"sha256:cd66a73a28e6a8209d33c753fde58678084ad3c4e21ae5c6adc6429c29c245d1\"\u001b[1;26r\u001b[25;1H"]
|
||||
[47.004024, "o", "\u001b[1;25r\u001b[2S\u001b[23d\u001b[36mINFO\u001b[39m[0002] Copy layer \u001b[36mlayer\u001b[39m=\"sha256:d2a291f672b25b9b207b31edd6ea3d151df35e523bd269c0bee5ce9f0d590d1c\"\u001b[1;26r\u001b[25;1H"]
|
||||
[47.255116, "o", "$ "]
|
||||
[47.655492, "o", "\u001b[?25l\r\n\u001b[30m\u001b[42m[preso] 0:bash* \"bmitch-t490\" 16:05 26-Sep-20\u001b(B\u001b[m\u001b[25;3H\u001b[?12l\u001b[?25h"]
|
||||
[49.593591, "o", "r"]
|
||||
[49.70091, "o", "e"]
|
||||
[49.997183, "o", "g"]
|
||||
[50.388876, "o", "c"]
|
||||
[50.642784, "o", "t"]
|
||||
[50.764734, "o", "l"]
|
||||
[50.87747, "o", " "]
|
||||
[51.77332, "o", "t"]
|
||||
[53.981161, "o", "a"]
|
||||
[54.244885, "o", "g"]
|
||||
[54.436966, "o", " "]
|
||||
[54.676881, "o", "l"]
|
||||
[54.852637, "o", "s"]
|
||||
[55.020933, "o", " "]
|
||||
[55.469045, "o", "l"]
|
||||
[55.653001, "o", "o"]
|
||||
[55.732972, "o", "c"]
|
||||
[55.861116, "o", "a"]
|
||||
[55.948777, "o", "l"]
|
||||
[56.141035, "o", "h"]
|
||||
[56.261102, "o", "o"]
|
||||
[56.317247, "o", "s"]
|
||||
[56.44465, "o", "t"]
|
||||
[56.661211, "o", ":"]
|
||||
[56.866593, "o", "5"]
|
||||
[57.309308, "o", "0"]
|
||||
[57.477041, "o", "0"]
|
||||
[57.621178, "o", "0"]
|
||||
[57.917131, "o", "/"]
|
||||
[58.293422, "o", "l"]
|
||||
[58.476964, "o", "i"]
|
||||
[58.580805, "o", "b"]
|
||||
[58.820966, "o", "r"]
|
||||
[58.949088, "o", "a"]
|
||||
[59.029292, "o", "r"]
|
||||
[59.149166, "o", "y"]
|
||||
[59.445098, "o", "/"]
|
||||
[59.709042, "o", "b"]
|
||||
[59.804705, "o", "u"]
|
||||
[59.926255, "o", "s"]
|
||||
[60.007629, "o", "\u001b[?25l\r\n\u001b[30m\u001b[42m[preso] 0:bash* \"bmitch-t490\" 16:06 26-Sep-20\u001b(B\u001b[m\u001b[25;43H\u001b[?12l\u001b[?25h"]
|
||||
[60.012681, "o", "y"]
|
||||
[60.165225, "o", "b"]
|
||||
[60.276906, "o", "o"]
|
||||
[60.388753, "o", "x"]
|
||||
[60.677052, "o", "\u001b[1;25r\u001b[25;1H\n\u001b[1;26r\u001b[25;1H"]
|
||||
[60.699432, "o", "\u001b[1;25r\u001b[25;1H\n\u001b[Alibrary/busybox:latest\u001b[1;26r\u001b[25;1H"]
|
||||
[60.701776, "o", "$ "]
|
||||
[61.765275, "o", "r"]
|
||||
[61.861069, "o", "e"]
|
||||
[62.08486, "o", "g"]
|
||||
[62.445218, "o", "c"]
|
||||
[62.661264, "o", "t"]
|
||||
[62.780799, "o", "l"]
|
||||
[62.908727, "o", " "]
|
||||
[63.1332, "o", "i"]
|
||||
[63.325405, "o", "m"]
|
||||
[63.389793, "o", "a"]
|
||||
[63.469283, "o", "g"]
|
||||
[63.541641, "o", "e"]
|
||||
[63.660869, "o", " "]
|
||||
[63.869042, "o", "m"]
|
||||
[63.972887, "o", "a"]
|
||||
[64.084758, "o", "n"]
|
||||
[64.284702, "o", "i"]
|
||||
[64.39686, "o", "f"]
|
||||
[64.564993, "o", "e"]
|
||||
[64.637246, "o", "s"]
|
||||
[64.74128, "o", "t"]
|
||||
[64.868482, "o", " "]
|
||||
[65.141375, "o", "-"]
|
||||
[65.277018, "o", "-"]
|
||||
[65.509228, "o", "l"]
|
||||
[65.724928, "o", "i"]
|
||||
[65.82899, "o", "s"]
|
||||
[65.893134, "o", "t"]
|
||||
[66.03669, "o", " "]
|
||||
[66.525, "o", "l"]
|
||||
[66.717033, "o", "o"]
|
||||
[66.813094, "o", "c"]
|
||||
[66.909088, "o", "a"]
|
||||
[67.044962, "o", "l"]
|
||||
[67.261058, "o", "h"]
|
||||
[67.36507, "o", "o"]
|
||||
[67.452911, "o", "s"]
|
||||
[67.597025, "o", "t"]
|
||||
[67.869162, "o", ":"]
|
||||
[68.068817, "o", "5"]
|
||||
[68.4849, "o", "0"]
|
||||
[68.637146, "o", "0"]
|
||||
[68.78113, "o", "0"]
|
||||
[69.133241, "o", "/"]
|
||||
[69.421181, "o", "l"]
|
||||
[69.601391, "o", "i"]
|
||||
[69.716711, "o", "b"]
|
||||
[69.932654, "o", "r"]
|
||||
[70.060658, "o", "a"]
|
||||
[70.157018, "o", "r"]
|
||||
[70.332806, "o", "y"]
|
||||
[70.765139, "o", "/"]
|
||||
[71.076973, "o", "b"]
|
||||
[71.16492, "o", "u"]
|
||||
[71.308862, "o", "s"]
|
||||
[71.412871, "o", "y"]
|
||||
[71.629157, "o", "b"]
|
||||
[71.764993, "o", "o"]
|
||||
[71.861187, "o", "x"]
|
||||
[72.053033, "o", " "]
|
||||
[72.460932, "o", " "]
|
||||
[72.644984, "o", "|"]
|
||||
[73.293212, "o", " "]
|
||||
[73.548826, "o", "m"]
|
||||
[73.666944, "o", "o"]
|
||||
[73.738928, "o", "r"]
|
||||
[73.852864, "o", "e"]
|
||||
[74.188971, "o", "\u001b[1;25r\u001b[25;1H\n\u001b[1;26r\u001b[25;1H"]
|
||||
[74.201264, "o", "\u001b[1;25r\u001b[12S\u001b[13d{\r\n \"schemaVersion\": 2,\r\n \"mediaType\": \"application/vnd.docker.distribution.manifest.list.v2+json\",\r\n \"manifests\": [\r\n {\r\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\r\n \"size\": 527,\r\n \"digest\": \"sha256:2ca5e69e244d2da7368f7088ea3ad0653c3ce7aaccd0b8823d11b0d5de956002\",\r\n \"platform\": {\r\n \"architecture\": \"amd64\",\r\n \"os\": \"linux\"\r\n }\u001b[1;26r\u001b[25;1H\u001b[1;25r\u001b[12S\u001b[13d },\r\n {\r\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\r\n \"size\": 527,\r\n \"digest\": \"sha256:55dec6dbd4b329ef2bfc2e104ab6ee57ef1a91f15c8bd324650b34756f43ad61\",\r\n \"platform\": {\r\n \"architecture\": \"arm\",\r\n \"os\": \"linux\",\r\n \"variant\": \"v5\"\r\n }\r\n },\r\n {\u001b[1;26r\u001b[25;1H\u001b[7m--More--"]
|
||||
[74.201397, "o", "\u001b(B\u001b[m"]
|
||||
[75.82175, "o", "\u001b[1;25r\u001b[10S\u001b[15d \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\r\n \"size\": 527,\r\n \"digest\": \"sha256:8bec2de1c91b986218004f65a7ef40989ac9827e80ed02c7ac5cd18058213ba7\",\r\n \"platform\": {\r\n \"architecture\": \"arm\",\r\n \"os\": \"linux\",\r\n \"variant\": \"v6\"\r\n }\r\n },\r\n {\u001b[1;26r\u001b[25;1H\u001b[1;25r\u001b[14S\u001b[11d \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\r\n \"size\": 527,\r\n \"digest\": \"sha256:2e6dd9846f4022bd771bd7371114d60cf032e15bd160ab6172b776f9fc49812c\",\r\n \"platform\": {\r\n \"architecture\": \"arm\",\r\n \"os\": \"linux\",\r\n \"variant\": \"v7\"\r\n }\r\n },\r\n {\r\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\r\n \"size\": 527,\r\n \"digest\": \"sha256:614f2e7b8fbab8a23bef168e7058739180a7a15d17c583bdfcbdb647d9798079\",\r\n \"platform\": {\r\n\u001b[7m--More--"]
|
||||
[75.82187, "o", "\u001b[1;26r\u001b[25;9H\u001b(B\u001b[m"]
|
||||
[76.949647, "o", "\u001b[1;25r\u001b[11S\u001b[14d \"architecture\": \"arm64\",\r\n \"os\": \"linux\",\r\n \"variant\": \"v8\"\r\n }\r\n },\r\n {\r\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\r\n \"size\": 527,\r\n \"digest\": \"sha256:13786684a2d2c684562fd93652fe803fad2ca9fc596ea793ca67b6bbeb2c4730\",\r\n \"platform\": {\r\n \"architecture\": \"386\",\u001b[1;26r\u001b[25;1H\u001b[1;25r\u001b[13S\u001b[12d \"os\": \"linux\"\r\n }\r\n },\r\n {\r\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\r\n \"size\": 527,\r\n \"digest\": \"sha256:1d67a71f84422fa78f03573a44a419d023682b1c6aa1c380c9d84f69cc79e7f6\",\r\n \"platform\": {\r\n \"architecture\": \"mips64le\",\r\n \"os\": \"linux\"\r\n }\r\n },\r\n {\r\n\u001b[7m--More--\u001b[1;26r\u001b[25;9H\u001b(B\u001b[m"]
|
||||
[77.821316, "o", "\u001b[1;25r\u001b[10S\u001b[15d \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\r\n \"size\": 528,\r\n \"digest\": \"sha256:49c781843a30b2af8fff421e4f2dde9365fb778d5ce11a88991d1ab6056d8f40\",\r\n \"platform\": {\r\n \"architecture\": \"ppc64le\",\r\n \"os\": \"linux\"\r\n }\r\n },\r\n {\r\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\u001b[1;26r\u001b[25;1H\u001b[1;25r\u001b[9S\u001b[16d \"size\": 528,\r\n \"digest\": \"sha256:2ed8bd58e1966fc775f4ba7e97a56ceb1fdd96706779ae8bcb59bc8dbae21be8\",\r\n \"platform\": {\r\n \"architecture\": \"s390x\",\r\n \"os\": \"linux\"\r\n }\r\n }\r\n ]\r\n}"]
|
||||
[77.821688, "o", "\u001b[1;26r\u001b[25;1H"]
|
||||
[77.821886, "o", "$ "]
|
||||
[82.792421, "o", "\u001b[?25l\u001b[H \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\", \u001b[30m\u001b[43m[23/235]\u001b[2;1H\u001b[39m\u001b[49m \"size\": 527,\u001b[K\r\n \"digest\": \"sha256:614f2e7b8fbab8a23bef168e7058739180a7a15d17c583bdfcbdb647d9798079\", \u001b[K\r\n \"platform\": {\u001b[K\r\n \"architecture\": \"arm64\",\u001b[K\r\n \"os\": \"linux\", \u001b[K\r\n \"variant\": \"v8\"\u001b[K\r\n } \u001b[K\r\n },\u001b[K\r\n {\u001b[K\r\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\", \u001b[K\r\n \"size\": 527,\u001b[K\r\n \"digest\": \"sha256:13786684a2d2c684562fd93652fe803fad2ca9fc596ea793ca67b6bbeb2c4730\", \u001b[K\r\n \"platform\": {\u001b[K\r\n \"architecture\": \"386\", \u001b[K\r\n \"os\": \"linux\"\u001b[K\r\n } "]
|
||||
[82.792804, "o", " \u001b[K\r\n },\u001b[K\r\n {\u001b[K\r\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\", \u001b[K\r\n \"size\": 527,\u001b[K\r\n \"digest\": \"sha256:1d67a71f84422fa78f03573a44a419d023682b1c6aa1c380c9d84f69cc79e7f6\", \u001b[K\r\n \"platform\": {\u001b[K\r\n \"architecture\": \"mips64le\",\u001b[K\r\n \"os\": \"linux\"\u001b[K\u001b[?12l\u001b[?25h"]
|
||||
[82.793715, "o", "\u001b[?25l\r\n\u001b[30m\u001b[42m[preso] 0:[tmux]* \"bmitch-t490\" 16:06 26-Sep-20\u001b(B\u001b[m\u001b[25;22H\u001b[?12l\u001b[?25h"]
|
||||
[90.702218, "o", "\u001b[?25l\u001b[H \"architecture\": \"mips64le\",\u001b[K\r\n \"os\": \"linux\"\u001b[K\r\n }\u001b[K\r\n },\u001b[K\r\n {\u001b[K\r\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\", \u001b[K\r\n \"size\": 528,\u001b[K\r\n \"digest\": \"sha256:49c781843a30b2af8fff421e4f2dde9365fb778d5ce11a88991d1ab6056d8f40\", \u001b[K\r\n \"platform\": {\u001b[K\r\n \"architecture\": \"ppc64le\",\u001b[K\r\n \"os\": \"linux\"\u001b[K\r\n }\u001b[K\r\n },\u001b[K\r\n {\u001b[K\r\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\", \u001b[K\r\n \"size\": 528,\u001b[K\r\n \"digest\": \"sha256:2ed8bd58e1966fc775f4ba7e97a56ceb1fdd96706779ae8bcb59bc8dbae21be8\", \u001b[K\r\n \"platform\": {\u001b[K\r\n \"architecture\": \"s390x\",\u001b[K\r\n \"os\": \"linux\"\u001b[K\r\n }\u001b[K\r\n }\u001b[K\r\n ]\u001b[K\r\n}\u001b[K\r\n$\u001b[K\u001b[C\u001b[?12l\u001b[?25h"]
|
||||
[90.703298, "o", "\u001b[?25l\r\n\u001b[30m\u001b[42m[preso] 0:bash* \"bmitch-t490\" 16:06 26-Sep-20\u001b(B\u001b[m\u001b[25;3H\u001b[?12l\u001b[?25h"]
|
||||
[91.438539, "o", "r"]
|
||||
[91.548987, "o", "e"]
|
||||
[91.837682, "o", "g"]
|
||||
[92.205169, "o", "c"]
|
||||
[92.541277, "o", "t"]
|
||||
[92.717075, "o", "l"]
|
||||
[92.813097, "o", " "]
|
||||
[93.213273, "o", "i"]
|
||||
[93.421256, "o", "m"]
|
||||
[93.509312, "o", "a"]
|
||||
[93.589423, "o", "g"]
|
||||
[93.685067, "o", "e"]
|
||||
[93.781279, "o", " "]
|
||||
[94.004839, "o", "i"]
|
||||
[94.101134, "o", "n"]
|
||||
[94.269152, "o", "s"]
|
||||
[94.349291, "o", "p"]
|
||||
[94.461114, "o", "e"]
|
||||
[94.677272, "o", "c"]
|
||||
[94.844993, "o", "t"]
|
||||
[94.970232, "o", " "]
|
||||
[95.237079, "o", "-"]
|
||||
[95.364931, "o", "-"]
|
||||
[95.637349, "o", "p"]
|
||||
[95.917193, "o", "l"]
|
||||
[96.077276, "o", "a"]
|
||||
[96.421277, "o", "t"]
|
||||
[96.940506, "o", "f"]
|
||||
[97.06092, "o", "o"]
|
||||
[97.141228, "o", "r"]
|
||||
[97.277319, "o", "m"]
|
||||
[97.429332, "o", " "]
|
||||
[97.96548, "o", "l"]
|
||||
[98.149223, "o", "i"]
|
||||
[98.29331, "o", "n"]
|
||||
[98.509164, "o", "u"]
|
||||
[98.652984, "o", "x"]
|
||||
[98.844976, "o", "/"]
|
||||
[99.650842, "o", "a"]
|
||||
[99.789324, "o", "r"]
|
||||
[99.909193, "o", "m"]
|
||||
[100.445294, "o", "6"]
|
||||
[100.732967, "o", "4"]
|
||||
[101.461445, "o", " "]
|
||||
[101.717311, "o", "l"]
|
||||
[101.917093, "o", "o"]
|
||||
[101.981179, "o", "c"]
|
||||
[102.061233, "o", "a"]
|
||||
[102.204967, "o", "l"]
|
||||
[102.461015, "o", "h"]
|
||||
[102.557124, "o", "o"]
|
||||
[102.629109, "o", "s"]
|
||||
[102.749279, "o", "t"]
|
||||
[103.004947, "o", ":"]
|
||||
[103.221054, "o", "5"]
|
||||
[103.63728, "o", "0"]
|
||||
[103.81295, "o", "0"]
|
||||
[103.965287, "o", "0"]
|
||||
[104.285526, "o", "/"]
|
||||
[104.509263, "o", "l"]
|
||||
[104.717354, "o", "i"]
|
||||
[104.812909, "o", "b"]
|
||||
[105.036989, "o", "r"]
|
||||
[105.141068, "o", "a"]
|
||||
[105.253261, "o", "r"]
|
||||
[106.109284, "o", "y"]
|
||||
[107.493413, "o", "/"]
|
||||
[108.005535, "o", "b"]
|
||||
[108.085272, "o", "u"]
|
||||
[108.237079, "o", "s"]
|
||||
[108.361695, "o", "y"]
|
||||
[108.573215, "o", "b"]
|
||||
[108.701033, "o", "o"]
|
||||
[108.781298, "o", "x"]
|
||||
[109.950817, "o", "\u001b[1;25r\u001b[25;1H\n\u001b[1;26r\u001b[25;1H"]
|
||||
[109.991285, "o", "\u001b[1;25r\u001b[25S\u001b[H ],\r\n \"Cmd\": [\r\n \"sh\"\r\n ]\r\n },\r\n \"rootfs\": {\r\n \"type\": \"layers\",\r\n \"diff_ids\": [\r\n \"sha256:2035cbc36ca35ca1b6a00b184cbbabdbda1fe7ac791c2e045ba47e92743fbfd1\"\r\n ]\r\n },\r\n \"history\": [\r\n {\r\n \"created\": \"2020-09-09T00:48:40.426776549Z\",\r\n \"created_by\": \"/bin/sh -c #(nop) ADD file:9fa3d16e04c526c9701422d8ee212aebecd8149c6570b5041da24be49c765604 in / \"\r\n },\r\n {\r\n \"created\": \"2020-09-09T00:48:41.336241778Z\",\r\n \"created_by\": \"/bin/sh -c #(nop) CMD [\\\"sh\\\"]\",\r\n \"empty_layer\": true\r\n }\r\n ]\r\n}\u001b[1;26r\u001b[25;1H"]
|
||||
[109.993124, "o", "$ "]
|
||||
[112.605125, "o", "\u001b[?25l\r\n\u001b[30m\u001b[42m[preso] 0:bash* \"bmitch-t490\" 16:07 26-Sep-20\u001b(B\u001b[m\u001b[25;3H\u001b[?12l\u001b[?25h"]
|
||||
[113.078937, "o", "\u001b[?25l\u001b[H \"architecture\": \"ppc64le\", \u001b[30m\u001b[43m[23/267]\u001b[2;1H\u001b[39m\u001b[49m \"os\": \"linux\"\u001b[K\r\n }\u001b[K\r\n },\u001b[K\r\n {\u001b[K\r\n \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\", \u001b[K\r\n \"size\": 528,\u001b[K\r\n \"digest\": \"sha256:2ed8bd58e1966fc775f4ba7e97a56ceb1fdd96706779ae8bcb59bc8dbae21be8\", \u001b[K\r\n \"platform\": { \u001b[K\r\n \"architecture\": \"s390x\",\u001b[K\r\n \"os\": \"linux\"\u001b[K\r\n }\u001b[K\r\n }\u001b[K\r\n ]\u001b[K\r\n} \u001b[K\r\n$ regctl image inspect --platform linux/arm64 localhost:5000/library/busybox \u001b[K\r\n{\u001b[K\r\n \"created\": \"2020-09-09T00:48:41.336241778Z\",\u001b[K\r\n \"architecture\": \"arm64\",\u001b[K\r\n \"os\": \"linux\", \u001b[K\r\n "]
|
||||
[113.07932, "o", "\"config\": {\u001b[K\r\n \"Env\": [\u001b[K\r\n \"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\" \u001b[K\r\n ],\u001b[K\r\n \"Cmd\": [\u001b[K\u001b[?12l\u001b[?25h"]
|
||||
[113.07998, "o", "\u001b[?25l\r\n\u001b[30m\u001b[42m[preso] 0:[tmux]* \"bmitch-t490\" 16:07 26-Sep-20\u001b(B\u001b[m\u001b[25;13H\u001b[?12l\u001b[?25h"]
|
||||
[114.525446, "o", "\u001b[24;7H"]
|
||||
[114.733242, "o", "\u001b[23;74H"]
|
||||
[114.925655, "o", "\u001b[22;13H"]
|
||||
[115.107835, "o", "\u001b[21;14H"]
|
||||
[115.285191, "o", "\u001b[20;17H"]
|
||||
[115.469404, "o", "\u001b[19;27H"]
|
||||
[115.981592, "o", "\b"]
|
||||
[116.181645, "o", "\b"]
|
||||
[116.357839, "o", "\b"]
|
||||
[116.549476, "o", "\b"]
|
||||
[116.741765, "o", "\b"]
|
||||
[116.925458, "o", "\b"]
|
||||
[117.101265, "o", "\b"]
|
||||
[117.293675, "o", "\u001b[30m\u001b[43ma\b\u001b(B\u001b[m"]
|
||||
[117.425785, "o", "\u001b[30m\u001b[43mar\b\u001b(B\u001b[m"]
|
||||
[117.621619, "o", "\b\u001b[30m\u001b[43marm\b\u001b(B\u001b[m"]
|
||||
[117.798123, "o", "\b\b\u001b[30m\u001b[43marm6\b\u001b(B\u001b[m"]
|
||||
[117.97359, "o", "\u001b[3D\u001b[30m\u001b[43marm64\b\u001b(B\u001b[m"]
|
||||
[119.150465, "o", "\u001b[?25l\u001b[H ],\u001b[K\r\n \"Cmd\": [\u001b[K\r\n \"sh\"\u001b[K\r\n ]\u001b[K\r\n },\u001b[K\r\n \"rootfs\": {\u001b[K\r\n \"type\": \"layers\",\u001b[K\r\n \"diff_ids\": [\u001b[K\r\n \"sha256:2035cbc36ca35ca1b6a00b184cbbabdbda1fe7ac791c2e045ba47e92743fbfd1\" \u001b[K\r\n ]\u001b[K\r\n },\u001b[K\r\n \"history\": [\u001b[K\r\n {\u001b[K\r\n \"created\": \"2020-09-09T00:48:40.426776549Z\", \u001b[K\r\n \"created_by\": \"/bin/sh -c #(nop) ADD file:9fa3d16e04c526c9701422d8ee212aebecd8149c6570b5041da24be49c765604 in / \"\u001b[K\r\n },\u001b[K\r\n {\u001b[K\r\n \"created\": \"2020-09-09T00:48:41.336241778Z\", \u001b[K\r\n \"created_by\": \"/bin/sh -c #(nop) CMD [\\\"sh\\\"]\", \u001b[K\r\n \"empty_layer\": true\u001b[K\r\n }\u001b[K\r\n ]\u001b[K\r\n}\u001b[K\r\n$\u001b[K\u001b[C\u001b[?12l\u001b[?25h"]
|
||||
[119.1518, "o", "\u001b[?25l\r\n\u001b[30m\u001b[42m[preso] 0:bash* \"bmitch-t490\" 16:07 26-Sep-20\u001b(B\u001b[m\u001b[25;3H\u001b[?12l\u001b[?25h"]
|
BIN
docs/demo.gif
Normal file
BIN
docs/demo.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 663 KiB |
@ -85,6 +85,10 @@ func (rc *regClient) TagDelete(ctx context.Context, ref Ref) error {
|
||||
origByte: manfB,
|
||||
}
|
||||
|
||||
rc.log.WithFields(logrus.Fields{
|
||||
"ref": ref.Reference,
|
||||
}).Debug("Sending dummy manifest to replace tag")
|
||||
|
||||
// push config
|
||||
err = rc.BlobPut(ctx, ref, confDigest.String(), ioutil.NopCloser(bytes.NewReader(confB)), MediaTypeDocker2ImageConfig, int64(len(confB)))
|
||||
if err != nil {
|
||||
@ -100,6 +104,10 @@ func (rc *regClient) TagDelete(ctx context.Context, ref Ref) error {
|
||||
ref.Digest = manfDigest.String()
|
||||
|
||||
// delete manifest by digest
|
||||
rc.log.WithFields(logrus.Fields{
|
||||
"ref": ref.Reference,
|
||||
"digest": ref.Digest,
|
||||
}).Debug("Deleting dummy manifest")
|
||||
err = rc.ManifestDelete(ctx, ref)
|
||||
if err != nil {
|
||||
return err
|
||||
|
Loading…
x
Reference in New Issue
Block a user