docker run -d ubuntu bash
容器将立即退出。我需要的是保持容器运行,我可以使用exec
登录此容器。
事实上,我需要在bash脚本中执行这些操作:
docker run -it ubuntu bash
docker run -it centos bash
但它不起作用。
答案 0 :(得分:4)
另一种选择是同时使用aws rds describe-db-instances --output json | less
和http://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/rds-metricscollected.html
(我希望它们是相互排斥的,并且很惊讶地发现它们不是)。
请参阅下面的示例输出,我启动了一个带有-i
标志的Ubuntu容器,然后等了几分钟并运行-d
以确认容器仍在运行。
-itd
答案 1 :(得分:3)
为什么要持久运行bash
?一个简单的解决方案就是:
docker run centos sleep inf
这将永远运行sleep
,因此容器不会退出。现在,您可以docker exec
尽可能多地加入它。
答案 2 :(得分:0)
在容器中bash
开始然后exec
进入容器毫无意义。您可以运行sleep infinity
达到相同的效果(例如docker run -d alpine sleep infinity
)。因为当您exec
时,您在容器中启动了另一个进程。您的bash
进程将被浪费(不使用)。
如果您想在容器中运行一个交互式进程(例如sh
)(例如以后可以附加到它):
$ docker run --rm -itd alpine sh
e2ea4dd1fea30cc91cb27b3bca7d6cbc9718063ef602a02bbea9aa2f7dbf2a3b
$ docker exec -it e2ea4dd1fea30cc91cb27b3bca7d6cbc9718063ef602a02bbea9aa2f7dbf2a3b sh
/ # ps
PID USER TIME COMMAND
1 root 0:00 sh
6 root 0:00 sh
12 root 0:00 ps
/ # <Ctrl-P><Ctrl-Q>
$ docker attach e2ea4dd1fea30cc91cb27b3bca7d6cbc9718063ef602a02bbea9aa2f7dbf2a3b
/ # ps
PID USER TIME COMMAND
1 root 0:00 sh
13 root 0:00 ps
/ #
--rm
使其在停止后自动删除容器。运行交互式流程通常需要-it
。
如果在连接容器后在容器中运行exit
(或按Ctrl-D
),外壳将退出,容器将停止。如果要分离,但要保持运行,请按Ctrl-P Ctrl-Q
。