进入容器与执行命令
约 784 字大约 3 分钟
布欧-Lewyon
2026-05-15
首页 › Docker › 容器管理(在新窗口打开) › 进入容器与执行命令
在容器内部执行命令是日常调试和运维的常用操作。
docker exec
docker exec 在运行中的容器内执行命令,是进入容器的首选方式。
# 进入容器的交互式 Shell
docker exec -it web bash
# 如果容器没有 bash,尝试 sh(Alpine 镜像)
docker exec -it web sh
# 执行单条命令
docker exec web ls -la /etc/nginx
# 设置环境变量
docker exec -e MY_VAR=hello web env
# 在工作目录执行
docker exec -w /app web pwd注意:exec 不会启动已停止的容器。容器必须先 start 才能 exec。
docker attach
docker attach 连接到容器的主进程的标准输入输出。
# 启动一个交互式容器
docker run -it --name test ubuntu:22.04 bash
# 在另一个终端 attach
docker attach test
# 此时输入的命令会直接发给容器的 bash| 对比 | docker exec | docker attach |
|---|---|---|
| 启动新进程 | ✅ 每次 exec 启动新进程 | ❌ 连接到主进程 |
| 退出影响 | exit 仅退出 exec 进程 | exit 会停止容器(主进程退出) |
| 适用场景 | 日常调试、执行命令 | 连接到已有的交互会话 |
日常使用优先选择
docker exec,意外退出不会影响容器运行。
容器内执行命令
# 在 nginx 容器中查看配置
docker exec web cat /etc/nginx/conf.d/default.conf
# 安装调试工具(Ubuntu/Debian 镜像)
docker exec -it web apt update
docker exec -it web apt install -y curl vim
# 注意:Alpine 镜像用 apk
docker exec -it alpine-container apk add curl
# 检查网络连通性
docker exec web ping google.com
docker exec web curl http://localhost:80以其他用户执行
# 容器默认以 root 运行,可以指定其他用户
docker exec -it -u www-data web bash
# 查看当前用户
docker exec web whoami容器内文件的操作
# 从容器复制文件到宿主机
docker cp web:/etc/nginx/nginx.conf ./nginx.conf
# 从宿主机复制文件到容器
docker cp ./my-config.conf web:/etc/nginx/conf.d/
# 复制目录
docker cp web:/var/log/nginx/ ./logs/容器信息查看
# 查看容器的运行时信息
docker inspect web | grep -A 10 "State"
# 查看容器的资源使用
docker stats web
# 查看端口映射
docker port web实践:调试一个 Web 容器
# 1. 启动容器
docker run -d --name myapp -p 3000:3000 node:20-alpine
# 2. 检查状态
docker ps | grep myapp
# 3. 查看日志
docker logs myapp
# 4. 进入容器查看文件
docker exec -it myapp sh
ls -la /app
cat package.json
exit
# 5. 在容器内测试
docker exec myapp wget -q -O - http://localhost:3000
# 6. 复制日志出来分析
docker cp myapp:/app/logs/app.log ./app.log小结
docker exec -it <容器> bash是进入容器交互式 Shell 的标准方式。docker exec启动新进程,退出不影响容器;docker attach连接主进程,退出会停止容器。docker cp在容器和宿主机之间复制文件。- Alpine 镜像没有 bash,用
sh;没有 curl,用wget或apk add curl。 - 调试流程:检查状态 → 查看日志 → 进入容器排查 → 复制文件做深度分析。
