最常用且最安全的进入容器方式是 docker exec -it,适用于调试和手动操作;需先用 docker ps 查运行中容器,再执行 exec 命令,支持指定用户、工作目录等参数,但仅限运行中容器。

直接用 docker exec -it 就能进容器并执行命令,这是最常用、最安全的方式。其他方法如 docker attach 或 docker run 有特定限制,不推荐作为默认入口。
查运行中的容器
进容器前得先知道它在不在跑、叫什么名或 ID:
- 运行
docker ps查当前正在运行的容器(显示名称、状态、端口等) - 如果容器没启动,先
docker start 容器名或ID启动它 - 不确定名字?加
-a看全部:docker ps -a
用 exec 进交互式终端
适合调试、手动操作,比如改配置、查进程:
- 标准写法:
docker exec -it 容器名或ID /bin/bash - 镜像精简(如 Alpine)通常没 bash,改用:
docker exec -it 容器名或ID /bin/sh - 进入后提示符是
root@xxx:/#,说明已成功,可执行任意 Linux 命令 - 退出只需输入
exit或按Ctrl+D,不影响容器运行
在容器里直接跑单条命令
不用进终端,适合快速查看或触发操作:
- 例如看环境变量:
docker exec 容器名 env - 查某个文件内容:
docker exec 容器名 cat /etc/hosts - 以指定用户执行:
docker exec -u www-data 容器名 ps aux - 指定工作目录:
docker exec -w /app 容器名 ls -l
注意避开常见坑
有些情况容易出错,提前留意能省不少事:
-
docker attach不等于exec:它连的是容器主进程,Ctrl+C可能直接杀掉服务;要安全退出必须用Ctrl+P再Ctrl+Q - 容器里没有 shell?确认镜像是否极简(如 scratch 或 distroless),这类镜像本身就不含
/bin/sh,exec会报错 - 权限不够?加
--privileged或-u root(慎用,生产环境避免 root 操作) - 想进已停止的容器?不行 ——
exec只支持 running 状态;需先start,或用run --volumes-from挂载原卷再调试











