DockerCLI/cli/command/container
Alano Terblanche 30a73ff19c
fix: ctx should cancel image pull on run
This patch fixes the context cancellation
behaviour for the `runContainer` function,
specifically the `createContainer` function
introduced in this commit 991b1303da.

It delays stripping the `cancel` from the context
passed into the `runContainer` function so that
the `createContainer` function can be cancelled
gracefully by a SIGTERM/SIGINT.

This is especially true when the requested image
does not exist and `docker run` needs to `pull`
the image before creating the container.

Although this patch does gracefully cancel
the `runContainer` function it does not address
the root cause. Some functions in the call path
are not context aware, such as `pullImage`.

Future work would still be necessary to ensure
a consistent behaviour in the CLI.

Signed-off-by: Alano Terblanche <18033717+Benehiko@users.noreply.github.com>
2024-11-28 09:53:04 +01:00
..
testdata docker ps: always use --quiet, also combined with --format 2023-04-10 01:12:00 +02:00
attach.go attach: wait for exit code from `ContainerWait` 2024-07-26 14:05:31 +01:00
attach_test.go cli/command: remove redundant capturing of loop vars in tests (copyloopvar) 2024-11-05 10:14:30 +01:00
client_test.go fix: ctx should cancel image pull on run 2024-11-28 09:53:04 +01:00
cmd.go Update gometalinter 2017-10-26 12:21:02 -04:00
commit.go Plumb contexts through commands 2023-12-12 22:30:16 +01:00
commit_test.go command: add tests for container kill, commit, and pause 2024-10-06 20:00:49 +03:00
completion.go cli/command/container: fix missing go:build tag 2024-11-15 11:06:20 +01:00
completion_test.go Add completion for `--security-opt` 2024-11-08 15:55:59 +00:00
cp.go vendor: github.com/docker/docker a736d0701c41 (master, v27.0.0-dev) 2024-06-10 17:41:09 +02:00
cp_test.go cli/command: remove redundant capturing of loop vars in tests (copyloopvar) 2024-11-05 10:14:30 +01:00
create.go Handle null completions with a default callback 2024-11-08 15:55:59 +00:00
create_test.go fix: ctx should cancel image pull on run 2024-11-28 09:53:04 +01:00
diff.go Plumb contexts through commands 2023-12-12 22:30:16 +01:00
diff_test.go command: add tests for container diff and rename 2024-09-23 16:17:36 +03:00
exec.go cli/command/completion: add EnvVarNames utility 2024-07-17 01:25:32 +02:00
exec_test.go replace uses of deprecated API types 2024-07-04 15:22:18 +02:00
export.go Plumb contexts through commands 2023-12-12 22:30:16 +01:00
export_test.go test spring-cleaning 2024-07-04 01:35:12 +02:00
formatter_diff.go linting: address else/if/elseif statements found by gocritic 2023-11-20 16:02:16 +01:00
formatter_diff_test.go cli/command: remove redundant capturing of loop vars in tests (copyloopvar) 2024-11-05 10:14:30 +01:00
formatter_stats.go golangci-lint: enable dupword linter 2023-11-20 16:02:18 +01:00
formatter_stats_test.go cli/command: remove redundant capturing of loop vars in tests (copyloopvar) 2024-11-05 10:14:30 +01:00
hijack.go cli/command/container: hijackedIOStreamer: explicitly ignore err 2023-05-03 17:01:08 +02:00
inspect.go update go:build tags to use go1.22 2024-11-12 12:38:18 +01:00
kill.go cli/command/container: add completion for --stop-signal 2024-07-17 01:25:34 +02:00
kill_test.go command: add tests for container kill, commit, and pause 2024-10-06 20:00:49 +03:00
list.go cli/command: don't use pflags.XXXVarP for flags without shorthand 2024-01-29 11:16:38 +01:00
list_test.go cli/command: remove redundant capturing of loop vars in tests (copyloopvar) 2024-11-05 10:14:30 +01:00
logs.go Plumb contexts through commands 2023-12-12 22:30:16 +01:00
logs_test.go replace uses of deprecated API types 2024-07-04 15:22:18 +02:00
opts.go cli/command/container: remove redundant capturing of loop vars (copyloopvar) 2024-11-05 10:14:32 +01:00
opts_test.go cli/command: remove redundant capturing of loop vars in tests (copyloopvar) 2024-11-05 10:14:30 +01:00
pause.go replace uses of deprecated API types 2024-07-04 15:22:18 +02:00
pause_test.go command: add tests for container kill, commit, and pause 2024-10-06 20:00:49 +03:00
port.go Plumb contexts through commands 2023-12-12 22:30:16 +01:00
port_test.go cli/command: remove redundant capturing of loop vars in tests (copyloopvar) 2024-11-05 10:14:30 +01:00
prune.go chore: remove backticks and resolve linting issues 2024-04-02 15:54:29 +02:00
prune_test.go cli/command/container: set empty args in tests and discard output 2024-10-16 12:01:25 +02:00
rename.go Plumb contexts through commands 2023-12-12 22:30:16 +01:00
rename_test.go command: add tests for container diff and rename 2024-09-23 16:17:36 +03:00
restart.go cli/command/container: stop, restart: rename "--time" to "--timeout" 2024-09-30 09:43:54 +02:00
restart_test.go cli/command: remove redundant capturing of loop vars in tests (copyloopvar) 2024-11-05 10:14:30 +01:00
rm.go Only complete removable containers if --force is not given 2024-10-10 21:34:38 +00:00
rm_test.go cli/command: remove redundant capturing of loop vars in tests (copyloopvar) 2024-11-05 10:14:30 +01:00
run.go fix: ctx should cancel image pull on run 2024-11-28 09:53:04 +01:00
run_test.go fix: ctx should cancel image pull on run 2024-11-28 09:53:04 +01:00
signals.go cli/command/container: ForwardAllSignals: rewrite to use ContainerAPIClient 2023-11-08 15:15:09 +01:00
signals_test.go cli/command/container: ForwardAllSignals: rewrite to use ContainerAPIClient 2023-11-08 15:15:09 +01:00
signals_unix.go remove pre-go1.17 build-tags 2023-05-05 18:23:03 +02:00
signals_unix_test.go cli/command/container: ForwardAllSignals: rewrite to use ContainerAPIClient 2023-11-08 15:15:09 +01:00
signals_windows.go Ignore SIGURG on Darwin too 2021-05-24 19:37:53 +01:00
start.go replace uses of deprecated API types 2024-07-04 15:22:18 +02:00
stats.go Optimise `docker stats` to not require clearing the whole screen 2024-11-16 15:29:57 +00:00
stats_helpers.go vendor: github.com/docker/docker 1a1f3cff45ec (master, v27.0-dev) 2024-06-20 13:04:54 +02:00
stats_helpers_test.go vendor: github.com/docker/docker 1a1f3cff45ec (master, v27.0-dev) 2024-06-20 13:04:54 +02:00
stop.go cli/command/container: stop, restart: rename "--time" to "--timeout" 2024-09-30 09:43:54 +02:00
stop_test.go cli/command: remove redundant capturing of loop vars in tests (copyloopvar) 2024-11-05 10:14:30 +01:00
top.go Plumb contexts through commands 2023-12-12 22:30:16 +01:00
tty.go golangci-lint: revive: enable import-shadowing 2023-11-20 19:52:41 +01:00
tty_test.go vendor: github.com/docker/docker cdb3f9fb8dca (v25.0.0-dev) 2023-10-13 22:09:04 +02:00
unpause.go replace uses of deprecated API types 2024-07-04 15:22:18 +02:00
update.go cli/command/container: add completion for --restart 2024-07-17 01:25:34 +02:00
utils.go vendor: github.com/docker/docker a736d0701c41 (master, v27.0.0-dev) 2024-06-10 17:41:09 +02:00
utils_test.go cli/command/container: TestWaitExitOrRemoved use subtests 2024-10-16 12:03:17 +02:00
wait.go rename vars to prevent colliding with imports 2024-07-03 17:09:41 +02:00