Security 重新运行bash以附加到Docker运行实例的最佳实践
这里还有一个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
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