在 Docker 宿主机上执行容器内部的脚本,可以通过以下几种方法实现:
docker exec
执行docker exec -it 容器名或容器ID /path/to/script.sh
说明:
- -it
:交互模式(如果脚本需要输入)。
- 脚本路径需为容器内的绝对路径或相对路径。
- 示例:docker exec -it my_container /app/start.sh
sh
或 bash
解释器直接运行脚本内容如果脚本较简单,可以直接传递命令:
docker exec -it 容器名或容器ID sh -c "echo 'Hello' && /path/to/script.sh"
docker cp /宿主机路径/script.sh 容器名或容器ID:/容器内路径/
docker exec -it 容器名或容器ID chmod +x /容器内路径/script.sh # 添加执行权限
docker exec -it 容器名或容器ID /容器内路径/script.sh
docker run
一次性执行(适合临时容器)docker run --rm 镜像名 /path/to/script.sh
适用场景:脚本执行后容器即可终止时(--rm
会自动清理容器)。
如果脚本需要频繁修改,可通过挂载宿主机目录到容器:
docker run -v /宿主机脚本目录:/容器内目录 镜像名 /容器内目录/script.sh
优势:宿主机修改脚本后,容器内可直接运行最新版本。
chmod +x
)。bash
/sh
/python
)。No such file or directory
:检查脚本路径是否正确,或容器内是否存在解释器。docker exec
添加执行权限,或使用 --user root
提权。根据需求选择最适合的方式即可。