Skip to content

Commit 19a5c5c

Browse files
remove undocumented top-level "docker remove" command
This was introduced in 9b54d86, which added `docker container remove` as alias for `docker container rm`. However, due to the `NewRmCommand` being used both for adding the top-level `docker rm` command and for adding the `docker container rm` command, it also introduced a (hidden) top-level `docker remove` command; docker remove --help | head -n1 Usage: docker rm [OPTIONS] CONTAINER [CONTAINER...] The command was not documented, and did not appear in `--help` output, nor was auto-complete provided; docker --help | grep remove docker r<TAB> rename (Rename a container) rm (Remove one or more containers) run (Create and run a new container from an image) restart (Restart one or more containers) rmi (Remove one or more images) This patch adds a dedicated, non-exported `newRemoveCommand` to add sub- commands for `docker container`, taking a similar approach as was done in [moby@b993609d5a] for `docker image rm`. With this patch applied, the hidden command is no longer there, but the `docker rm`, `docker container rm`, and `docker container remove` commands stay functional as intended; docker remove foo docker: unknown command: docker remove Run 'docker --help' for more information docker rm --help | head -n1 Usage: docker rm [OPTIONS] CONTAINER [CONTAINER...] docker container rm --help | head -n1 Usage: docker container rm [OPTIONS] CONTAINER [CONTAINER...] docker container remove --help | head -n1 Usage: docker container rm [OPTIONS] CONTAINER [CONTAINER...] [moby@b993609d5a]: moby/moby@b993609 Reported-by: Lorenzo Buero <[email protected]> Co-authored-by: Lorenzo Buero <[email protected]> Signed-off-by: Sebastiaan van Stijn <[email protected]>
1 parent 747cb44 commit 19a5c5c

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

cli/command/container/cmd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func NewContainerCommand(dockerCli command.Cli) *cobra.Command {
2828
NewPortCommand(dockerCli),
2929
NewRenameCommand(dockerCli),
3030
NewRestartCommand(dockerCli),
31-
NewRmCommand(dockerCli),
31+
newRemoveCommand(dockerCli),
3232
NewRunCommand(dockerCli),
3333
NewStartCommand(dockerCli),
3434
NewStatsCommand(dockerCli),

cli/command/container/rm.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,9 @@ func NewRmCommand(dockerCli command.Cli) *cobra.Command {
2727
var opts rmOptions
2828

2929
cmd := &cobra.Command{
30-
Use: "rm [OPTIONS] CONTAINER [CONTAINER...]",
31-
Aliases: []string{"remove"},
32-
Short: "Remove one or more containers",
33-
Args: cli.RequiresMinArgs(1),
30+
Use: "rm [OPTIONS] CONTAINER [CONTAINER...]",
31+
Short: "Remove one or more containers",
32+
Args: cli.RequiresMinArgs(1),
3433
RunE: func(cmd *cobra.Command, args []string) error {
3534
opts.containers = args
3635
return runRm(cmd.Context(), dockerCli, &opts)
@@ -50,6 +49,15 @@ func NewRmCommand(dockerCli command.Cli) *cobra.Command {
5049
return cmd
5150
}
5251

52+
// newRemoveCommand adds subcommands for "docker container"; unlike the
53+
// top-level "docker rm", it also adds a "remove" alias to support
54+
// "docker container remove" in addition to "docker container rm".
55+
func newRemoveCommand(dockerCli command.Cli) *cobra.Command {
56+
cmd := *NewRmCommand(dockerCli)
57+
cmd.Aliases = []string{"rm", "remove"}
58+
return &cmd
59+
}
60+
5361
func runRm(ctx context.Context, dockerCLI command.Cli, opts *rmOptions) error {
5462
apiClient := dockerCLI.Client()
5563
errChan := parallelOperation(ctx, opts.containers, func(ctx context.Context, ctrID string) error {

0 commit comments

Comments
 (0)