-
Notifications
You must be signed in to change notification settings - Fork 623
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add image squash command #3756
base: main
Are you sure you want to change the base?
Add image squash command #3756
Conversation
b7756fe
to
9599d0a
Compare
cmd.Flags().StringP("message", "m", "", "Commit message") | ||
} | ||
|
||
func NewSquashCommand() *cobra.Command { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Needs docs and tests
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok,I will add it later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
added, please check it out
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://github.com/containerd/nerdctl/blob/main/docs/command-reference.md needs to be updated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updated, please check it out
cmd/nerdctl/main.go
Outdated
@@ -295,6 +295,7 @@ Config file ($NERDCTL_TOML): %s | |||
image.NewTagCommand(), | |||
image.NewRmiCommand(), | |||
image.NewHistoryCommand(), | |||
image.NewSquashCommand(), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not a fan of inflating the number of the top-level commands
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
deleted
} | ||
} | ||
|
||
// copied from github.com/containerd/containerd/rootfs/apply.go |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should be a permanent URL with the git tag (or the commit hash)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The commit hash has been added.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggest to use a full URL directly, e.g., https://github.com/containerd/containerd/blob/v2.0.1/pkg/rootfs/apply.go#L180
df967a2
to
b6077c1
Compare
Signed-off-by: weipeng <weip3@chinatelecom.cn>
Signed-off-by: weipeng <weip3@chinatelecom.cn>
// NewSquashCommand returns a new `squash` command to compress the number of layers of the image | ||
func NewSquashCommand() *cobra.Command { | ||
var squashCommand = &cobra.Command{ | ||
Use: "squash [flags] SOURCE_IMAGE TAG_IMAGE", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: TAG_IMAGE
-> TARGET_IMAGE
testCase := nerdtest.Setup() | ||
|
||
require := test.Require( | ||
test.Linux, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why is this Linux
only?
) | ||
|
||
func addSquashFlags(cmd *cobra.Command) { | ||
cmd.Flags().IntP("layer-count", "c", 0, "The number of layers that can be compressed") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
does this flag specify squashing the last N (N=layer-count) layers? If so I suggest renaming it to last-n-layer
.
Or rename it to from-layer
, meaning squashing all layers starting from from-layer
(and --from-layer=0
means squash all layers)
|
||
func addSquashFlags(cmd *cobra.Command) { | ||
cmd.Flags().IntP("layer-count", "c", 0, "The number of layers that can be compressed") | ||
cmd.Flags().StringP("layer-digest", "d", "", "The digest of the layer to be compressed") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why do we need this flag?
cmd.Flags().StringP("author", "a", "", `Author (e.g., "nerdctl contributor <nerdctl-dev@example.com>")`) | ||
cmd.Flags().StringP("message", "m", "", "Commit message") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: maybe use something like author="nerdctl"
and message="generated by nerdctl squash"
as default values.
@@ -994,6 +994,25 @@ Flags: | |||
- `--platform=<PLATFORM>` : Convert content for a specific platform | |||
- `--all-platforms` : Convert content for all platforms (default: false) | |||
|
|||
### :nerd_face: nerdctl image squash | |||
|
|||
Squash an image layers. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
suggest to add some details, e.g., Squash all layers starting from from-layer
into a single layer.
} | ||
} | ||
|
||
// copied from github.com/containerd/containerd/rootfs/apply.go |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggest to use a full URL directly, e.g., https://github.com/containerd/containerd/blob/v2.0.1/pkg/rootfs/apply.go#L180
This pr adds the squash image command.
The related issue is #3252.