You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Bash脚本启动Docker容器?解决执行报错问题

解决Docker命令在Bash脚本中运行报错的问题

看起来你的问题根源大概率是脚本的换行符格式不兼容,导致Bash把整个docker run命令当成了一个不存在的文件来执行。让我一步步帮你排查和解决:

问题分析

你看到的错误信息比如:

./run_nlp.sh: line 3: docker run -d -v ... : No such file or directory

这说明Bash没有把docker识别为要执行的命令,而是把整行内容(包括docker和后面的所有参数)当成了一个完整的文件名去查找——这几乎都是因为脚本使用了Windows风格的CRLF(\r\n)换行符,而Linux系统的Bash只支持LF(\n)换行符。每行末尾的\r字符会被Bash当成命令/文件名的一部分,自然找不到对应的文件。

解决方案

1. 检查并转换脚本的换行符

首先用cat命令查看脚本的换行符细节:

cat -A run_nlp.sh

如果每行末尾显示的是^M$,就说明是CRLF格式;正常的Linux脚本应该显示$。

接下来转换为LF格式,有几种方法:

  • 用dos2unix工具(如果已安装):
    dos2unix run_nlp.sh
    
  • 用sed命令手动替换:
    sed -i 's/\r$//' run_nlp.sh
    
  • 如果用文本编辑器(比如VS Code),可以在右下角切换换行符格式为LF后重新保存。

2. 优化Docker命令(可选但推荐)

另外注意到你在docker run中同时使用了-d(后台守护进程)和-it(交互式终端)参数,虽然这在Docker中是允许的,但对于后台运行的守护进程来说,-it其实没有必要,反而可能导致一些不可预期的终端关联问题。可以把-it去掉,简化命令,比如:

docker run -d -v /mnt/DataResearch/DataStageData/ed_provider_notes/:/data -v /home/gsilver1/data/QuickUMLS/data/:/data/UMLS ahc-nlpie-docker.artifactory.umn.edu/qumls:1 /home/QuickUMLS/run.sh

3. 验证修复效果

转换完成后,重新运行脚本:

./run_nlp.sh

如果还是有问题,可以先单独在终端执行脚本里的某一行docker run命令,确认命令本身没问题,再排查脚本的其他问题(比如PATH环境变量是否在脚本中被修改)。

内容的提问来源于stack exchange,提问作者horcle_buzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 07:12:54