docker:当我为了彩色输出而只使用--tty或-t(不带-i)以及--rm时,docker不会在ctrl+;C

docker:当我为了彩色输出而只使用--tty或-t(不带-i)以及--rm时,docker不会在ctrl+;C,docker,tty,Docker,Tty,目前我正在使用docker开发django项目 我希望看到命令的彩色输出 我在这个论坛找到了https://forums.docker.com/t/docker-run-with-colorful-output/24542/3我必须使用的--tty或-t 下面是我的命令 hostfolder="/home/web_dev/Docker_django_testing" dockerfolder="/home/simha/app" imagename="django_testing" docker

目前我正在使用docker开发django项目

我希望看到命令的彩色输出

我在这个论坛找到了
https://forums.docker.com/t/docker-run-with-colorful-output/24542/3
我必须使用的
--tty或-t

下面是我的命令

hostfolder="/home/web_dev/Docker_django_testing"
dockerfolder="/home/simha/app"
imagename="django_testing"
docker run -t -p 8000:8000 --rm -v ${hostfolder}:${dockerfolder} ${imagename} pipenv run python django_project_test/manage.py runserver 0.0.0.0:8000
我正在使用
--rm
停止并在出口处移除容器。但是由于
-t
的原因,即使在使用
Ctrl+c退出后,容器也不会停止

下面是显示上述命令输出的图像

退出后,我检查了docker ps-a的输出,它显示容器仍在运行

$ docker ps -a                                    
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
212c039d35ae        django_testing      "pipenv run python d…"   4 minutes ago       Up 4 minutes        0.0.0.0:8000->8000/tcp   nervous_euclid
其中,如果我在没有显示颜色输出的情况下运行
-t
,则与相同的命令一样,容器在退出时使用
Ctrl+c

下图显示了输出


如果您在不使用
-i
的情况下使用
-t
,则stdin未连接到程序的stdin(在这种情况下,
管道运行…
)。这意味着,当您按下控件C时,这将传递给
docker run
命令,因此
docker run
退出,但它不会传递给容器的主进程,因此容器保持运行。简而言之,您还需要
-i
选项:

docker run -it -p 8000:8000 --rm -v ${hostfolder}:${dockerfolder} ${imagename} pipenv run python django_project_test/manage.py runserver 0.0.0.0:8000

如果不使用
-i
而使用
-t
,则stdin未连接到程序的stdin(在这种情况下,
pipenv运行…
)。这意味着,当您按下控件C时,这将传递给
docker run
命令,因此
docker run
退出,但它不会传递给容器的主进程,因此容器保持运行。简而言之,您还需要
-i
选项:

docker run -it -p 8000:8000 --rm -v ${hostfolder}:${dockerfolder} ${imagename} pipenv run python django_project_test/manage.py runserver 0.0.0.0:8000