如何在通过 CLI 连接到 docker 容器时启用自动完成功能?

问题描述 投票:0回答:2

我为 FastAPI 应用程序创建了一个 docker 映像,然后从该映像创建了一个容器。现在,当我通过终端使用

docker exec -it <container-id>
连接到该容器时,我可以访问它,但问题是当我按 TAB 时,自动完成功能不起作用。

python docker terminal
2个回答
18
投票

从你的问题中我了解到的是,当你进入docker环境时,你无法自动完成文件名和文件夹。

通常当您通过 shell 进入容器时,自动完成功能无法正常工作。尝试使用 bash 环境进入容器,即

docker exec -it <container-id> bash
。现在您可以使用 TAB 自动补全文件和文件夹。


0
投票

如果您执行

docker exec --help
,您将看到类似以下内容:

Usage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Execute a command in a running container

因为确实,

docker exec
用于在正在运行的容器中执行命令

现在,如果你在没有提供命令的情况下进入容器(只有

docker exec -it <container-id>
),则意味着相应容器的镜像已经配置了系统的默认shell,这很可能是
/bin/sh
。如果它没有这个,那么当运行
docker exec -it <container-id>
(没有容器命令!)时,你会面临:

"docker exec" requires at least 2 arguments.
See 'docker exec --help'.

Usage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

因为 docker 需要知道当你运行时要执行什么

docker exec

即使镜像配置了默认 shell,最好明确指示 docker 您要运行的命令

docker exec -it <container-id> sh
docker exec -it <container-id> bash
都会(应该!)工作,但是使用
sh
你不会有自动完成功能,而使用
bash
你会拥有它。

© www.soinside.com 2019 - 2024. All rights reserved.