在 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