在 Docker 中进入正在运行的容器有多种方式,以下是常用的几种方法:
docker exec
命令(推荐)docker exec -it <容器ID或容器名> /bin/bash
-i
:保持 STDIN 打开-t
:分配一个伪终端/bin/bash
:指定要运行的 shell(也可以是 /bin/sh
或其他 shell)示例:
docker exec -it my_container bash
docker attach
命令docker attach <容器ID或容器名>
注意:
- 这会连接到容器的主进程(PID 1)
- 退出时会终止容器(除非使用 --sig-proxy=false
参数)
nsenter
工具PID=$(docker inspect --format {{.State.Pid}} <容器ID或容器名>)
nsenter --target $PID --mount --uts --ipc --net --pid
虽然可以通过在容器内安装 SSH 服务来实现,但这通常不是最佳实践,会增加容器复杂性。
docker exec
:这是最灵活和推荐的方式如果容器没有 bash:尝试使用 /bin/sh
docker exec -it my_container sh
如果容器没有交互式 shell:可能需要先安装
docker exec -it my_container apt-get update && apt-get install -y bash
查看容器内进程:
docker exec -it my_container ps aux