Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 重新运行bash以附加到Docker运行实例的最佳实践_Security_Docker - Fatal编程技术网

Security 重新运行bash以附加到Docker运行实例的最佳实践

Security 重新运行bash以附加到Docker运行实例的最佳实践,security,docker,Security,Docker,这里还有一个Docker新手的问题。目前,我使用bash以“调试模式”运行Docker映像,这样我就可以Docker附加到正在运行的实例,进入一个shell,在运行时可以在其中检查应用程序的操作系统环境等 docker run <image-id> -d -it bash -c “<start application in background>; bash” docker run-d-it bash-c“bash” 我想知道是否应该始终包含bash,即将CMD内部D

这里还有一个Docker新手的问题。目前,我使用
bash
以“调试模式”运行Docker映像,这样我就可以
Docker附加到正在运行的实例,进入一个shell,在运行时可以在其中检查应用程序的操作系统环境等

docker run <image-id> -d -it bash -c “<start application in background>; bash”
docker run-d-it bash-c“bash”
我想知道是否应该始终包含
bash
,即将
CMD
内部
Dockerfile
CMD
更改为
CMD;bash

这在“生产模式”中是否不合适

  • 出于安全原因--允许谁附加到正在运行的实例

  • 鉴于Docker是一名

  • 还有其他原因吗


  • 不要在生产中这样做

    你希望你的应用程序是最前端的进程(PID 1),而不是bash

    理想情况下,您的dev容器将与生产容器相同,因此我甚至不会在dev中使用bash方法,而只是用于临时测试情况。如果需要,您可以随时将其放入容器中。例如:

    docker exec-it{container name}/bin/bash

    其中:

    根据需要更改可执行文件的名称(例如,
    /bin/sh
    等)。您需要为一些容器设置术语环境变量。(例如,
    导出术语=xterm

    要仅返回结果并关闭,请省略
    -it
    ,如:

    docker exec{container name}ifconfig


    您希望习惯于像set和forget这样处理容器,或者至少不需要在生产中手动访问它。

    不要在生产中这样做

    你希望你的应用程序是最前端的进程(PID 1),而不是bash

    理想情况下,您的dev容器将与生产容器相同,因此我甚至不会在dev中使用bash方法,而只是用于临时测试情况。如果需要,您可以随时将其放入容器中。例如:

    docker exec-it{container name}/bin/bash

    其中:

    根据需要更改可执行文件的名称(例如,
    /bin/sh
    等)。您需要为一些容器设置术语环境变量。(例如,
    导出术语=xterm

    要仅返回结果并关闭,请省略
    -it
    ,如:

    docker exec{container name}ifconfig


    您希望习惯将容器视为“置而不理”,或者至少不需要在生产过程中手动访问它。

    不要在生产过程中这样做。你在应用程序中运行什么?您通常希望应用程序是最前端的进程(PID 1),而不是
    bash
    。您希望习惯于像set和forget这样处理容器,或者至少不需要在容器投入生产后手动访问它。另外,理想情况下,您希望您的dev容器与生产容器相同,因此我甚至不会在dev中使用
    bash
    方法,除非用于临时测试情况。如果需要,您随时可以
    docker exec…
    稍后放入容器。@ldg非常好。(作为一名新手,我还不知道docker exec
    。如果你想写下你的评论作为回答,我会立即接受。不要在生产中这样做。你在应用程序中运行什么?你通常希望你的应用程序是最前端的进程(PID 1),而不是
    bash
    。您希望习惯于将容器视为set和forget,或者至少不需要在生产环境中手动访问。整个过程。此外,您理想情况下希望您的开发容器与生产环境中的容器相同,因此我甚至不会在开发环境中使用
    bash
    方法用于临时测试情况。如果需要,您随时可以
    docker exec…
    稍后放入容器。@ldg非常好。(作为一名新手,我还不知道
    docker exec
    。如果您想写下您的评论作为回答,我将立即接受。
    >   -i, --interactive    Keep STDIN open even if not attached
    >   -t, --tty            Allocate a pseudo-TTY