首页/ 学科题库/ docker/ 容器进入与执行
docker 实战教程

容器进入与执行

2026-05-21 约 5 分钟 juanwangdev

容器进入与执行

运行中的容器需要进入执行命令进行调试或管理,下面介绍两种方法。

docker exec

在运行中的容器内执行命令(推荐):

Bash
# 进入容器交互式终端
docker exec -it my-nginx /bin/bash

# 输出
root@a1b2c3d4e5f6:/#

# 执行单条命令
docker exec my-nginx ls /usr/share/nginx/html

# 执行多条命令
docker exec my-nginx sh -c "ls / && cat /etc/nginx/nginx.conf"

# 以 root 用户执行
docker exec -u root my-nginx apt-get update

常用参数

Bash
# -i: 保持标准输入打开
# -t: 分配伪终端
# -d: 后台执行
# -u: 指定用户
# -w: 指定工作目录
# -e: 设置环境变量

docker exec -it -u root -w /tmp -e MY_VAR=hello my-nginx /bin/bash

docker exec 创建新进程,退出后容器继续运行,不影响主进程。

docker attach

连接到容器主进程的终端:

Bash
# 连接到容器
docker attach my-nginx

# 特点:
# - 连接到容器的主进程(PID 1)
# - 看到主进程的标准输出和输入
# - Ctrl+C 会停止容器

docker attach 连接到主进程,Ctrl+C 会终止容器主进程,不推荐用于调试。

exec 与 attach 对比

对比项docker execdocker attach
进程创建新进程连接主进程
退出影响不影响容器可能停止容器
用途调试、执行命令查看主进程输出
安全性高低
推荐度✅ 推荐⚠️ 谨慎

实用场景

数据库容器

Bash
# 进入 MySQL 容器
docker exec -it my-mysql mysql -uroot -p

# 执行 SQL
docker exec my-mysql mysql -uroot -p123456 -e "SHOW DATABASES;"

# 备份数据库
docker exec my-mysql mysqldump -uroot -p123456 mydb > backup.sql

Web 容器

Bash
# 查看 Nginx 配置
docker exec my-nginx cat /etc/nginx/nginx.conf

# 重新加载 Nginx 配置
docker exec my-nginx nginx -s reload

# 查看进程
docker exec my-nginx ps aux

拷贝文件

Bash
# 从容器拷贝文件到宿主机
docker cp my-nginx:/etc/nginx/nginx.conf ./nginx.conf

# 从宿主机拷贝文件到容器
docker cp nginx.conf my-nginx:/etc/nginx/nginx.conf

# 拷贝目录
docker cp my-nginx:/var/log/nginx ./nginx-logs

要点总结

  • docker exec 创建新进程执行命令,退出后容器继续运行,推荐使用
  • docker attach 连接主进程终端,Ctrl+C 会停止容器,谨慎使用
  • docker exec 支持 -it、-u、-w、-e 等参数灵活控制执行环境
  • docker cp 可在容器与宿主机之间拷贝文件
  • 生产调试优先使用 docker exec,避免影响容器主进程
想在手机上练这篇的配套题目?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别下方二维码,即可解锁本讲对应真题与错题本。
了解产品 App
← 上一篇 容器日志查看 下一篇 → 容器删除与清理